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/
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/09(火) 20:01:44.41 .net] Linuxの話ならLinux板で聞いてください
470 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/10(水) 13:12:44.56 .net] odコマンドって規定で行番号は付くは省略するわでほんとUNIX哲学的じゃねーな xxdとかのほうが遥かに扱いやすいわ
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/10(水) 16:21:53.96 .net] 行番号ちゃうし
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/11(木) 12:57:39.11 .net] od -An -v
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:24:43.34 .net] 規定がっていう話でしょ それと同じで ls も規定で勝手に表示を整えるのをやめてほしい。 Plan 9のlsは規定でls -1みたいな挙動らしいけど。
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:30:27.80 .net] 規定なら従っといた方がいいじゃん 罰則あるかもしれんし
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:31:53.68 .net] それは規約じゃ
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 19:01:27.06 .net] default = 既定
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 22:58:37.21 .net] 違反すると罰則あるのは規定じゃなくて規約だろって話
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 10:57:30.90 .net] だから「Default=規定」って書いたんじゃねーの? 規約じゃないって意味で。
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 11:45:22.78 .net] ワケワカメ
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 15:52:04.52 .net] なんだこの流れ 全員頭悪いの?
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 16:00:17.68 .net] 流れ?
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 16:20:16.87 .net] 全次郎?
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 17:49:06.78 .net] 規約じゃなくて規定なら別に従う必要ないって話なだけじゃないのか
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 17:50:28.44 .net] default=既定≠規定
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:12:18.41 .net] >>465 の誤字を>>466 が茶化したのに理解されずにグダグダになった流れ
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:28:08.33 .net] すまん誤字に全く気付かなかった
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:34:54.90 .net] あーなるほどそういうことか。 普通に「既定」に脳内変換してたせいで意味不明な喧嘩に見えてたわ
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 00:06:01.79 .net] 脳内変換てw馬鹿なだけやんかw
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 08:02:47.35 .net] すぐそうやって火種を撒く……
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 22:28:34.05 .net] $'\n' こういう $'何か' っていう書き方って bash 限定? sh でもいける?
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/16(火) 12:48:12.73 .net] bash限定
492 名前:名無しさん@お腹いっぱい。 mailto:age [2018/01/16(火) 15:07:55.74 .net] POSIX xargs pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html には-0オプションがありませんが,どうにかしてxargsにナル文字区切りのデータを渡せませんかね。 もしくは xargs -0 がエラーになるOSをご存知でしたら教えて下
493 名前:さい。 FreeBSD, MacOS, Debian GNU/Linuxともにxargsに-0オプションはありました。 [] [ここ壊れてます]
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/16(火) 16:09:39.07 .net] Solarisとかあやしそうだね
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/17(水) 00:51:10.26 .net] >>485 そうみたいね https://unix.stackexchange.com/questions/67193/solaris-xargs-command-for-solaris https://docs.oracle.com/cd/E19253-01/819-1210/6n3j74k03/index.html
496 名前:481 mailto:sage [2018/01/17(水) 04:46:35.14 .net] >>485 >>486 ありがとうございます。 ファイルパスに関するシェルスクリプトを作ろうとしており, ファイル名に改行文字が含まれている場合を考慮してナル文字区切りでデータを扱いたかったのです。 が,もうそんな特殊なファイル名にしている側の責任ってことにします。 仕事だったらもうちょっと考えるところですが個人で扱うので自分が気をつければいいだけなんで。 リンク等ありがとうございました。
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/17(水) 08:37:13.99 .net] pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html POSIXのfindには+終端もあるみたいだから、 用途によってはxargsを使わずに変なファイル名が扱えることもある。 例によってSolarisにはないが、POSIXに準拠してないということで切れる。
498 名前:481 mailto:sage [2018/01/17(水) 09:45:47.24 .net] >>488 ありがとうございます。 > 例によってSolarisにはないが、POSIXに準拠してないということで切れる。 恥かしながらSolaisってPOSIX準拠を謳っていないことを今知りました…… よくシステムコールAPIの説明で「SolaisまたはPOSIX」とありますが, その真意をようやく掴めました。 --- awkのRSにナル文字を指定できればxargsの代替として使えるかもしれないと思ったんですが, $ printf '%s\0%s\0%s' 'First' 'Second' 'Third' | awk -v RS="$(printf '\0')" '{ print $0 }' みたいなことをやっても撥ねられる (シェルがナル文字についての警告を出して,「FirstSecondThird」とだけ表示される) のでやっぱりナル区切りを扱うのはやめておこうと思いました。 大人しく空白区切り・改行レコードで行きます。
499 名前:481 mailto:sage [2018/01/17(水) 09:55:31.15 .net] なんかこうすると上手く行った (ように見えます)。 $ printf '%s\0%s\0%s' 'First' 'Second' 'Third' | \ awk ' \ BEGIN { RS="\0" ORS="\n" } { print } \ ' なんでこれが良くて >>489 がだめなのか分からないのが怖いので結局ナル文字区切りはやめることにしました。 連投&スレ汚し失礼しました。
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 11:41:43.86 .net] sedでiフラグをdフラグと一緒に使うことはできないのでしょうか。
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 11:44:10.00 .net] ↓ sed mevius.2ch.net/test/read.cgi/unix/1085730992/
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 19:40:41.47 .net] >>492 誘導ありがとうございます。一応の解決を見ました。
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/26(金) 00:50:46.41 .net] hoge.sh <(cat hoge.txt fuga.txt piyo.txt) ### hoge.sh #!/bin/bash wc -l $1 # 正しい行数 wc -l $1 # なぜか0 おせーてエロいひと
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/26(金) 06:57:46.46 .net] >>494 つ cat hoge.txt fuga.txt piyo.txt | (wc -l; wc -l)
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:35:58.02 .net] こういうhoge.shがあったとして ``` #!/bin/bash set -x for x in aa bb cc; do echo $x done ``` 実行するとこうなる ``` $ bash hoge.sh + for x in aa bb cc + echo aa aa + for x in aa bb cc + echo bb bb + for x in aa bb cc + echo cc cc ``` けどこうしたい(forやifが出力されないようにしたい) ``` $ bash hoge.sh + echo aa aa + echo bb bb + echo cc cc ``` どうしたらいい?
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:38:33.65 .net] つづき。ためしにこうしてみた ``` #!/bin/bash for x in aa bb cc; do set -x echo $x set +x done ``` 実行したら set +x も表示された(これは
507 名前:いらない) ``` $ bash hoge.sh + echo aa aa + set +x + echo bb bb + set +x + echo cc cc + set +x ``` [] [ここ壊れてます]
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:40:28.83 .net] grep -vでもしたら
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 23:21:30.45 .net] echo $x の前に echo + echo $x と記述する
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使ったほうがコード短くなるのに