- 1 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 12:07:26.41 .net]
- シェルスクリプトの総合スレです。
□お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その25 echo.2ch.net/test/read.cgi/unix/1439563321/
- 510 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 23:48:49.07 .net]
- bashだからじゃね?
- 511 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 01:26:01.46 .net]
- fishてどう?
- 512 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 01:47:58.90 .net]
- $ cat hoge.sh
#!/bin/bash for x in aa bb cc; do (set -x echo $x) done $ bash hoge.sh + echo aa aa + echo bb bb + echo cc cc なんつって
- 513 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 08:54:06.42 .net]
- >>502
> (set -x > echo $x) この方法でできました。ありがとうございます。 もっと簡潔に書けるといいのだけど。
- 514 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 16:21:59.61 .net]
- すんませんけど 今割り当て端末数からこんな感じでサブネットマスクを出すのを作ったんですけど
i=256;j=0 ; while [ ! $i -eq 1 ] ; do i=$(( $i /2 ));echo $i; j=$(($j + 1)) ; done ;echo ans:$((32 - $j)) もっとてっとり早く出すコマンドはありませんか? できれば256を入れたら8とかさっさと返してくれるような奴を あとよくわからんけど 計算で256と2を入力したら後ろの8とかを出すコマンドはないですか? 覚えるとか調べるは嫌いなんで、なるべく手間のかからないものを教えてください
- 515 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 17:19:18.65 .net]
- サブネットマスクぐらい暗記か手計算しろよ
- 516 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 18:06:11.03 .net]
- >覚えるとか調べるは嫌いなんで、
生きてる意味あんのか、これで?
- 517 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 19:05:19.51 .net]
- >>505
手間がかかるから面倒だよ 20万以上やるし ああ これででるのね うしろに変なゴミが付いてるがどうでもいいか :echo " l(65556)/l(2)" | bc -l 16.00044020841915062248 :echo " l(1024)/l(2)" | bc -l 10.00000000000000000010 >>506 また努力するするのが誇らしいとか思ってる馬鹿?ww 俺が考えるならこの機械とか利用価値はないよ ゲーム開発のUNITYのスレに行けば似たような奴が沢山いるよ まぁしばらくはマシーンを買う金がないからlinuxとイヤイヤ付き合うしかないが ほんと手間がかかるな
- 518 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 19:20:30.57 .net]
- ある意味面白いやつだな
- 519 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 20:11:48.67 .net]
- >また努力するするのが誇らしいとか思ってる馬鹿?ww
こんなこと考えたこともないけど 思い込みが激しいっていうか頭腐ってるだろ ああ死んでるんだったっけ
- 520 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 20:31:31.63 .net]
- 落ち着け
- 521 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 20:57:59.75 .net]
- >>509
そういう手間が掛かるのはちょっと… 利用価値がないし
- 522 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 21:47:56.46 .net]
- バイト雇って計算してもらいましょう
- 523 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 23:17:47.05 .net]
- >>512
俺自体が無職だよ さて間抜けからビットコインを盗まんと
- 524 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 01:51:26.42 .net]
- >>513
頼むわ 間抜けは存在自体がガンだから
- 525 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 09:19:26.94 .net]
- 犯罪の予告と教唆かよ
- 526 名前:名無しさん@お腹いっぱい。 [2018/02/09(金) 22:09:51.06 .net]
- >>515
予告と教唆じゃなくて実行中だよ とろくさいやつだなw or2.mobi/index.php?mode=image&file=193749.jpg or2.mobi/index.php?mode=image&file=193750.jpg 3週間たってだいぶリナックスにも慣れてきた ある程度稼がせてもらったらウインドウズに戻るよ ライブは少し使いにくい
- 527 名前:名無しさん@お腹いっぱい。 [2018/02/09(金) 22:12:54.21 .net]
- なんかシェルスクリプト総合とか書いてあったから来てみたけど
しょぼそうな連中しか居ないけど… ここのひとってシステム管理とかで食ってる連中が多いの?
- 528 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 22:39:19.88 .net]
- 煽ったらなんかもらえるのか?
- 529 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 22:54:21.43 .net]
- なんか急に変なの出てきたな
どっかにスレのアドレスでも貼られたのか
- 530 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/10(土) 00:05:29.76 .net]
- いや元々お前らの方がずっと変だけどw
- 531 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/10(土) 05:51:23.70 .net]
- 変と思いながら見続けて今さあながら「変だ!変だ!」と言う人って・・・
まあ相手にされるかは別にして居たいなら居ていいと思うよ
- 532 名前:名無しさん@お腹いっぱい。 [2018/02/10(土) 11:31:48.71 .net]
- >>517
面白いネタがあれば食いつくんじゃない? つまらんネタしか無いから過疎ってる。
- 533 名前:名無しさん@お腹いっぱい。 [2018/02/10(土) 19:55:51.78 .net]
- ほんとに揃いも揃っておまえらは無能な連中だよ
こんな能無し共が良いかねを取って裕福な生活をしてるのに 何で俺がしこしこビットコインを盗まんとならんのか…… よしよしw 今日はあがりはデカそうだな
- 534 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 20:16:20.69 .net]
- 1111
2222 3333 という内容のファイルに対して, • 3333 が見付かれば 3333 を, • 見付からなければ 2222 を • ⋮ という操作を施したいです。そして,これをパイプに繋ぎたいです。 私が考えたのは↓のスクリプトですが, for q in 3333 2222 1111; do cat <<-'EOF' | 1111 2222 3333 EOF grep $q && break done 難点があります。 1. パイプでファイルを渡せない。 2. 順番に依存している (実際のファイルでは 3333 が最後にくるとは限らない) どうか助言願います
- 535 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 20:19:41.66 .net]
- あ,すいません。期待する動作は,
かりに理想のスクリプトを idea.sh として, $ cat ./org.txt 2222 3333 1111 $ cat ./org.txt | idea.sh 3333 $ cat ./org.txt | sed -e '/3333/d' | idea.sh 2222 $ cat ./org.txt | sed -e '/3333/d' -e '/2222/d' | idea.sh 1111 という感じです。
- 536 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:01:11.15 .net]
- 標準入力を受け取れるように作ればいいんじゃないの?
idea.sh sed -e "/$1/d" < /dev/stdin $ cat ./org.txt | ./idea.sh ‘3333’ | ./idea.sh ‘2222’ | ./idea.sh ‘1111’
- 537 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:10:36.33 .net]
- awk使うのが妥当。
awkが嫌なら、標準入力をファイルにコピーしてから複数回に分けて処理するしかないな。
- 538 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:26:45.83 .net]
- やりたい事はシンプルなのに標準入力使おうとしてるせいで妙に面倒になってるな
awkかgrepでよさそうだが
- 539 名前:名無しさん@お腹いっぱい。 [2018/02/15(木) 21:36:30.68 .net]
- 事前にソートしたら?
- 540 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:38:59.09 .net]
- tacは?
- 541 名前:名無しさん@お腹いっぱい。 [2018/02/15(木) 21:41:36.03 .net]
- $PATHの中身って最初は空じゃないの?
$PATHをechoしてみたら,その中に ~/.bashrcや~/.bash_profileでexportされてるパス以外のモノが含まれてた でも$PATHに初期値を設定できるならわざわざ~/.bashrcや~/.bash_profileでexportする必要なくない? どうなってるのか教えてくれ
- 542 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 22:34:13.00 .net]
- OSによるけどinit.dの中とかlogin.confとかでデフォルトを設定する。
ここ書き換えると全ユーザに影響が出るので、個別設定は.bash_profileとかに書く。 exportするのは万一PATHなしで起動されてしまったとき用。
- 543 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 02:23:59.63 .net]
- >>504
> すんませんけど 今割り当て端末数からこんな感じでサブネットマスクを出すのを作ったんですけど ipcalcコマンドで行けるんじゃね? 知ってるだけで使ったことないけど 他にもiptabとかipcountとかあるらしいな
- 544 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 08:44:35.62 .net]
- >>525
最初に自身で書いてたようなんで十分じゃないの? パイプで渡せないというのが何を嫌がってんのかによるけど テキストなら貯めてechoしたっていいんじゃ DATA="$(cat -)" && cat $KEYWORDFILE | while read KEYWORD ; do ( echo "$DATA" | grep "$KEYWORD" ) && break ; done データでかいから捜査対象の方を1パスで捜査したいってことなら シェルスクリプトでがんばるより別のことでがんばろう
- 545 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 20:37:24.42 .net]
- >>533
ありがとやっと有益なレスが出たよ 他のやつは揃いも揃って無能な役立たずばっかりだから
- 546 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 20:41:32.04 .net]
- ショッアーーーーーーーーー!!!
さってビットコインを盗むか
- 547 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 21:23:29.93 .net]
- アホにレスした俺もアホだった。
やっぱアホはスルーに限る。
- 548 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/17(土) 02:29:48.74 .net]
- >>533
俺も普通は ipcalc 使ってるけど最近は sipcalc というのもあるらしい。 紹介してくれてる iptab とか ipcount 含めて今度試してみようと思う
- 549 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/20(火) 18:16:48.11 .net]
- シェルスクリプトの函数で扱える文字数に上限はないのでしょうか。
pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_05 ↑ここが多分公式の文書だと思うのですが,使用可能な文字の種類に言及こそすれ,文字数については触れていないように思いますが…… ファイル名などの上限と同じく255文字でしょうか?
- 550 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/22(木) 02:57:44.82 .net]
- >>539
255文字かどうかは、質問するまでもなくすぐにわかると思いますよ。
- 551 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/22(木) 05:46:35.30 .net]
- ワロタ、試せよwそして調べろよって話だよな
- 552 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/24(土) 22:51:48.88 .net]
- $ :> "$(yes a | head -n 255 | tr -d '\n')"
$ :> "$(yes a | head -n 256 | tr -d '\n')" sh: 1: cannot create aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: File name too long
- 553 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/25(日) 16:39:26.69 .net]
- ファイル名の文字数上限はファイルシステムに依存する
- 554 名前:名無しさん@お腹いっぱい。 [2018/03/03(土) 23:53:36.62 .net]
- シェルスクリプトで有るコマンドを実行した時、
標準出力の内容を緑に、標準エラー出力の内容を 赤にしたいんだけどどうすればいい? 本当に聞きたいことはエスケープシーケンスではなく、 標準出力と標準エラーをそれぞれ別々に加工する方法ね
- 555 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/03(土) 23:53:52.11 .net]
- ちなみにファイルに吐き出さずにやりたい
- 556 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 01:26:00.19 .net]
- お前にはなんか教えたくない
- 557 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 01:40:31.82 .net]
- なんかググればすぐ出てきそうな
- 558 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 02:21:55.51 .net]
- それがないんだよね。標準エラー出力を標準出力に
変えてしまうのは有るけど、それじゃ別々にやるのは不可能だし
- 559 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 16:46:18.09 .net]
- 条件が厳しいからどうしてもシェルスクリプトでやりたいなら
先ずシェルを作るところから始めないといけない
- 560 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 00:43:32.66 .net]
- bashやzshなら簡単に出来るぞ
- 561 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 01:06:07.74 .net]
- 出力を切り離してパイプで別々のコマンドでフィルタする程度じゃ全然駄目だから
こういうのを簡単にできると言い切る人はきっとものすごく優秀な頭脳の持ち主だと思う
- 562 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 01:28:58.62 .net]
- これは書いていなかった俺が悪いんだが、
bashやzshを使わずにposixの範囲でやりたいんだよね。 少なくともdashやashで動くものがほしい でその方法が実際にあることは知ってるんだけど、 もっとシンプルな方法はないのだろうかと言うのと 俺がその方法をここに書いちゃうと 身バレしちゃうので書かなかった
- 563 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 12:24:32.78 .net]
- >>551
> 出力を切り離してパイプで別々のコマンドでフィルタする だけやぞ
- 564 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 18:09:38.99 .net]
- POSIXに準拠したい気持は分かるけど,一次ファイルを作らないっていう謎の拘りが理解できない。
両立させるのは厳しいと思う。もうさ, tempf="$(printf '%s%s%s%s' '/tmp/' "$(date +"%y%m%d%H%M%S")" '.' "$$")"; somecmd 2> "${tempf}" | \ printf '\e[1;32m%s\e[0m\n\e[1;31m%s\e[0m\n' "$(cat)" "$(cat "${tempf}")"; rm -rf "${tempf}" でいいでしょ。もちろんPOSIX準拠。 あと偉そうなこと言うが,「身バレが怖いから持ってる (有益かもしれない) 情報を明かしません」って, こっちからするとかなり不快だから,黙って何も知らないふりをしておいたほうがまだマシだよ。
- 565 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 18:12:03.21 .net]
- 落ち着け
最初の質問の時点で性格の幼稚さは見え透いてるだろ
- 566 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 19:58:23.46 .net]
- >>550
やり方教えて
- 567 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:20:34.93 .net]
- >>554
> 一次ファイルを作らないっていう謎の拘りが理解できない。 書いてなかったのが悪いんだろうけど、一時ファイルを使うと ストリーミングで処理できなくなるんだよ つまり前のプログラムの出力が完了しないと次のプログラムが動かない POSIX準拠はbusyboxで動かす必要があるからこれも必須 この二点は今回の質問には直接関係ないから理由じゃなくて制約として書いた
- 568 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:25:58.36 .net]
- そしてこっちの方で回答きたよ
くだらねえ質問はここに書き込め!Part 230 https://mao.5ch.net/test/read.cgi/linux/1515383155/315 同じ文章なのになんでこう反応が違うんだろうね 同じ文章なんだからレスする側の問題があるだろうね 質問する側と回答する側、立場は対等だって言ったら怒りそう
- 569 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:38:48.22 .net]
- >>554
あとmktemp使ったほうが良いよ。 なんでぜったいにかぶらない方法があるのに 自分でなるべくかぶらないように努力するんだろう 結構多いよね。mktemp使ったほうがコード短くなるのに
- 570 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:48:54.27 .net]
- 自分自身は何もしてないのになぜこうも態度をでかくできるのか
- 571 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:57:02.07 .net]
- 別にでかくないでしょw ほかの人と一緒。
質問したからといってへりくだる必要はないと思ってるだけ 無知でもないしね
- 572 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 22:10:47.74 .net]
- マルチカスか
教えたがりを徹底的にこき使っとけ ここには二度とくるなよ
- 573 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 22:45:20.19 .net]
- 少なくとも聞く側の態度じゃぁないな
- 574 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 22:54:52.33 .net]
- 聞く側はこういう態度を取らないといけないって
体育会系とか年功序列とか年上は敬え的な考え方だよ 今時はやらない
- 575 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:15:38.51 .net]
- 545から漂う頭の悪さよ
- 576 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:21:32.35 .net]
- >>558 のそれ「解答」じゃないじゃん。
無理って言われてるんだぞ? 理解できてる?
- 577 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:23:14.97 .net]
- もういいじゃん
ほっとけよ
- 578 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:23:16.19 .net]
- どういう態度取るべきとは思わないけど、
相手を不快にさせたら得られるはずの回答も得られなくなる可能性が上がるよ。 それでよければご自由に。
- 579 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:26:33.25 .net]
- 出力が色制御してきたら取り除いたりとか、マルチプロセスとかで変なところでブッタ斬り/ミックスされないように同期取ったりとか考えてたけど俺には無理だからもういいや
- 580 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:33:38.33 .net]
- >>566
やりたいこと > 標準出力の内容を緑に、標準エラー出力の内容を > 赤にしたいんだけどどうすればいい? 標準出力の内容を緑にする・・・簡単 標準エラー出力の内容を赤にする・・・? >>558で明らかになったこと ・・・ 標準出力と標準エラー出力を入れ替える方法 ここから標準エラー出力の内容を赤にするには 標準出力と標準エラー出力を入れ替えれて 処理すればいいって気づくよね?
- 581 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 23:47:07.49 .net]
- >>570
ん? それだと今度は標準出力が (標準エラー出力に複製されたので) パイプを通らなくなるから、 標準出力の内容 (今は標準エラー出力に出力されている) を緑にできないんじゃ?
- 582 名前:もしかして同時じゃなくていいってこと? []
- [ここ壊れてます]
- 583 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 00:20:35.13 .net]
- もうほっとけ
標準出力、標準エラー出力に関する便利な小ネタでも教えてやろうかと思ったけどやめとくわ
- 584 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:01:07.43 .net]
- >>571
片方ずつしか処理できないなら、 2回やれば両方できるだろ? っていうかそれぐらいわかるだろw
- 585 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:01:45.64 .net]
- >>572
> 標準出力、標準エラー出力に関する便利な小ネタでも教えてやろうかと思ったけどやめとくわ おせーておせーて
- 586 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:03:40.69 .net]
- |& ←このパイプは標準出力標準エラー出力ともに通すよ。
ただ質問者さんが望んでいるのは「標準出力か標準出力かが区別できる状態でのパイプ通過」だろうから、 それはちょっと無理なんじゃないかな。 あと態度がデカすぎる。一度死んだほうがいいと思う。
- 587 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:14:26.43 .net]
- >>573 まさかコマンド二回回すの? 標準出力と標準エラー出力分ける為だけに?
それ一時ファイル作るより余程冗長だぞw もう一度シェルっていうかコンピュータの仕組みを勉強しなおしてきな
- 588 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:45:01.59 .net]
- だから一時ファイルを作るとストリーミングに
できなくなるからだめなんだって さっきも書いたろ
- 589 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 01:47:17.52 .net]
- >>575
やっぱり>>558が今のところ一番シンプルな解みたいだね。 てか、標準出力と標準エラー出力を別々にファイルに吐き出せるんだから、 別々のプログラムにパイプでつなげられる機能があっても良いと思うんだけどね
- 590 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 02:48:45.93 .net]
- 君たぶんだけど意思疎通に係わる障害持ってるから病院で診てもらったほうがいいよ。
知り合いにそういう調子の会話する人がいて、ある日会社で大きな事件を起こして辞めさせられたあと 病院で検査したらそういう系統の精神病だったからさ。 煽りとかじゃなくて、君はどうも社会で孤立してそうだから、助けになりたい。
- 591 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 03:23:52.46 .net]
- いや、おちょくってるだけだろ
まともに相手するだけ無駄やぞ
- 592 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 04:17:47.54 .net]
- ここに限らず、質問系のスレにたまに沸くアレでしょ
5chが過疎って最近あんま見てなかったから なんか懐かしい感じするわw
- 593 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 10:26:50.47 .net]
- レス内容が煽りだけになったらおしまいw
- 594 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 20:25:23.40 .net]
- あっちで粘着してるみたいだな
久々にアレな奴を見たわ
- 595 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 21:23:37.44 .net]
- 入力リダイレクトで複数ファイルを一度で流し込むのはどうしたら良いのですか?
- 596 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 21:44:48.81 .net]
- catしてパイプ
- 597 名前:watarie [2018/03/06(火) 22:03:33.11 .net]
- よろしくお願いします。
mac で bashです。 mdfindからパイプつないだ先でcpしたら 検索が間に合わなかったのかコピーし損ねがでてきます。 再度コピーしそこねたファイル名リストを同じようにこれに掛けると、 幾つか成功していくつかはコピーし損ねます。 function readMdfind() { while read LINE; do mdfind "kMDItemFSName == "${LINE}" || kMDItemDisplayName == "${LINE%.*}"" | awk 'NR==1' | xargs -J % cp -p "%" "$1" 2>/dev/null done <${2} 引数の1はファイル名のリストが入ったテキストで、2はコピー先のフォルダになります。 ファイル名は殆どが一意にしてあるので、とりあえずヒットしたら良い感じです。 一度で取りこぼしのない良い方法はありませんでしょうか。
- 598 名前:watarie [2018/03/06(火) 22:05:40.25 .net]
- 引数の件1と2逆でした 惑わせてしまい申し訳ありません。
正しくは1がコピー先フォルダで2
- 599 名前:がファイル名のリストです。 []
- [ここ壊れてます]
- 600 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 22:33:41.80 .net]
- >>585
回答ありがとうございます。 ということはそのまま cat hoge huga | command で、いいってことですか。なるほど。 レスつくまで色々ググって調べてみたのですが command <( cat hoge huga ) でも全く同じ動作ですか?
- 601 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 23:27:44.61 .net]
- >>588
二番目の方法,たぶんコマンドラインで試して成功したから書き込んでるんだろうけど, それはプロセス置換と言って Bash筆頭に幾つかのシェルの独自拡張だからシェルスクリプトにするときは シェバンを #! /usr/bin/env bash か #! /bin/bash とかにする必要がある。 cat hoge huga | somecommand で代替できることに可搬性を犠牲にするのは避けたいだろうから (つまり #! /bin/sh というシェバンを捨てるのは勿体無いということ) <(cat hoge huga) は避けれる時は (特にシェルスクリプトで使う時) 避けといたほうがいいんじゃないかな。
- 602 名前:586 mailto:sage [2018/03/06(火) 23:29:38.39 .net]
- 5行目あたりの日本語がおかしい。けど国語力ないので自然に直すの無理。
察してくれ。
- 603 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 23:43:28.43 .net]
- >>589
なるほど! #!/bin/sh が必ずbashにリンクされてるとは限らないから、 拡張表現で書かなくて済む場合は確かに可搬性を優先した方がいいですね。 ありがとうございました。
- 604 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/06(火) 23:49:32.51 .net]
- >>586
mdfindを知らんので問題解決に直接ならないけれど`done < ${2}`ではなく`done < "$2"`のほうがいいよ〜 もっと言うなら`cat "$2" | while read LINE;`のほうがいいかもね〜 * POSIX sh互換シェルは変数名に数字が来たらそこで読み取りを中断するので波括弧で変数名の範囲を明示しなくていい * 変数$LINEに^Dとかが渡された時catコマンドと<リダイレクトで違いがある 短いんだけど参考: pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_01
- 605 名前:588 mailto:sage [2018/03/06(火) 23:58:01.42 .net]
- あー!
さらに調べたら、よくわかりました。 #!/bin/sh でbashを起動したらbashの拡張とか使えなくなっちゃうんですね。 だからシェバンを書き換える必要があると… そういう意味だったんですね。 (ちゃんとmanにかいてありました) ためになりました。
- 606 名前:名無しさん@お腹いっぱい。 [2018/03/07(水) 07:20:57.39 .net]
- >>592
ん?どゆこと? $ cat file | cmd $ cmd < file で違いがあるってこと?そうは思えないんだけど…
- 607 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/07(水) 08:34:45.43 .net]
- $LINEに^Dってなんぞやってところだな
- 608 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/07(水) 08:37:52.19 .net]
- >>586
まずはエラーをnullに落とさずに表示させろ
- 609 名前:watarie [2018/03/07(水) 09:23:48.67 .net]
- >>592さん
- 610 名前:watarie [2018/03/07(水) 09:32:33.42 .net]
- >>592さん
ありがとうございます。ちょっと英語で読解が難しいので時間を作って該当の箇所を読ませていただこうかと思います。 {2}の箇所を"2"に変更しました。 <の箇所をcatに変更しました。 非常に目に優しいくなりました。 読み込む箇所なので、怪しいと感じます。結果としては変わりませんでしたが、参照の箇所は興味がありますので読ませていただこうと思っています。英語で弱気になりますが^^; ありがとうございます。
|

|