[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/25 22:56 / Filesize : 258 KB / Number-of Response : 1042
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その27



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/05/03(木) 17:54:23.25 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/
 (左上の「Shell & Utilities」 から参照することができます。)
・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に逃げずにシェルスクリプトで処理するのが頭のいいやり方。
 質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
前スレ シェルスクリプト総合 その26
https://mevius.5ch.net/test/read.cgi/unix/1489979246/

582 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:41:12.01 .net]
な?www

583 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:43:50.91 .net]
な?問題を誤解して的はずれなレスを出すんやで
話にならんわ

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:46:19.16 .net]
>>5

585 名前:59
> あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w

勿論そうだよ。
正規表現で書ける条件だったから、grepでうまくいった。
世の中には正規表現で書けない条件とかも当然あって、そういう場合
perlやawkなら自明にかけるけど、スクリプト言語使わずに
シェルだけで書こうとすると面倒だったりする。

> 俺が言ってるシェルスクリプト向きの問題っていうのは
> 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ

それに反対してる人は誰もいないと思うよ。
それこそがシェルが特化している応用分野なわけで。
しかし>>521はそれを示す例題としてはよろしくない。
他の言語ならコマンドの組み合わせとかせずに容易に解ける問題だからね。
[]
[ここ壊れてます]

586 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:47:07.64 .net]
お前に言ってない。さすがだなwwいつもその調子。問題出すのもその調子だからなあw

587 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/12(火) 23:48:09.54 .net]
>>563
真面目だなっ!w
ある意味尊敬(馬鹿にはしてない)

588 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:13:02.23 .net]
>>563
お前が問題を理解できなかっただけのこと

>>516
> 今時Python使わないでわざわざシェル使う理由って?

俺はこれ↑に対して、シェルスクリプトの方が適した問題だからって
コマンドをつなげて実行できるのが簡単だと↓以下のように>>518でレスしたわけだが

> pythonであるコマンドを実行して
> それを他のコマンドに流すみたいな
> ことが簡単にできたらね

結局、だから俺が最初から言ってるように、シェルスクリプトの方が
適してるんだろ? ならもうお前口塞げ、混ぜっ返してるだけでなにも役に立ってない

589 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:20:43.06 .net]
>>563
あとなやっぱりわかってないわお前

grepもperlもawkもコマンドなんだよ。
シェルスクリプトっていうのは、そのコマンドを
"組み合わせる"のが得意って話だ。

だからgrepもperlもawkもシェルスクリプトのパワーの一つなんだよ。
もちそんそれだけじゃない。便利な多くのコマンドが
用意されてる。それらはシェルスクリプトの関数であると言える

pythonで、せっかく用意されたこれらのコマンドを使わないで
python用ライブラリとか使って冗長にコードを書くならそれは無駄だし
コマンドを使う場合でも、シェルスクリプトほど簡潔にできない。

シェルスクリプト(grep, perl, awkを組み合わせること)
VS
python(grep, perl, awkコマンドを使う もしくは 使わない)

って話であって、perlの方が〜awkの方が〜っていうのは
シェルスクリプトの方がシンプルに書けることの反論になってないんだよ。

590 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:23:56.99 .net]
なんか変な人が居着いちゃった



591 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 00:24:50.12 .net]
>>568
前からやで。ずっといついている

ずっと前から俺はいる

592 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:18:17.08 .net]
IDもワッチョイもないからオレオレ言われてもレスの時系列で追えないし面倒だわ

まあキチガイ君がお題の条件だしが決定的に出来ない子なのはよく分かる
>「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
>521読んで道程まで完全に一致させろいう意図だと理解できたやつがいたら天才だわ
普段から人と会話してなさそう

593 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:27:58.12 .net]
>>521
grep /bin/bash </etc/password | cut -d: -f1

594 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:32:08.64 .net]
>>570

>>518を読んでいればわかるだろ

> pythonであるコマンドを実行して
> それを他のコマンドに流すみたいな
> ことが簡単にできたらね

595 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:38:12.94 .net]
普段から人と会話してなさそうが如実

596 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:40:17.86 .net]
そういう悪口しか言えなくなったらおしまい

597 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 01:55:40.86 .net]
そろそろ名前つけてくれませんかね

598 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 02:14:43.53 .net]
POSIX shで絶対値をなるべく簡単に扱いたいんだけどいい方法ありますかね
exprコマンドにabsとかがあればよかったんだけども

599 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 02:31:02.70 .net]
>>571
入力側のリダイレクトって読みにくいので、自分もcatで書くかも

600 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 03:18:10.80 .net]
>>575
いやでござるwww

>>576
マイナスだけでいいなら
echo ${a#-}

プラスも考慮するなら
echo $((${a#-}))



601 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 03:20:58.92 .net]
お前じゃないよ自意識過剰

602 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 05:05:47.59 .net]
>>576
こんなのどうだろう
$(((0 < a)?a:a * -1))
(aに値を代入)

603 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 05:23:49.94 .net]
なんで俺が短く書いたのに、わざわざ冗長なコード書くかね?
しかも三項演算子を使ってもっと短くかけるし

$(((0 < a)?a:a * -1))
$((a>0?a:-a))
$((${a#-}))
${a#-}

604 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:09:33.52 .net]
>>581
おまえのコードは本質的じゃない
彼が望むのは「絶対値」であって「マイナスを除いたもの」ではない
OK?
分かったらひっこんでろ低能
もしこれに反論があったら「分かってない」ことになるからな?

605 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:26:16.58 .net]
>>582
わかってないのはお前では?

つーか、その反論されたら困るからって
「反論したら俺のかちー」みたいな言い方やめた方がいいよ
恥ずかしいw

俺は反論したから、さあ、次はお前が反論する番だ

606 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 06:48:30.93 .net]
なんで阿呆が二人に増えるんだよ

607 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:16:13.42 .net]
もう消えろお前ら
このスレに相応しくない
なんだよ最近のこのスレの雰囲気最悪じゃねーか
長文ダラダラ返信長々と最後にレスしたほうが勝ちみたいな古い争いしやがってからに

608 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:17:03.30 .net]
ヒント:一人二役

609 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:17:43.72 .net]
>>577
簡潔に書きたいというお題じゃなかったのか

610 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:31:11.05 .net]
>>577
<をどこに書いてもいいことはあまり知られていない。
</etc/password grep /bin/bash | cut -d: -f1



611 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:38:00.62 .net]
いや読みにくいって話であってだな

612 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:45:03.32 .net]
>>577
そりゃあんたの頭のレベルが低いからだと思うよ

613 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 08:58:22.24 .net]
>583の脳内では全く論がない噛みつくだけの行為も反「論」になるらしい
これもう日本語が分かってないってレベルじゃないな
ただの小学生だわ

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:13:46.26 .net]
小学生なら簡単に構ってちゃんになりそうなのはわかるな。もう構うなw

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:49:23.22 .net]
GNU grep なら

$ grep -Po '^.+?(?=:.+:/bin/bash$)' /etc/passwd

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 09:56:16.86 .net]
>>591
論じゃなければ、何か言い返せよって言うだけの話だけど?
ほんと本質じゃないどうでもいい所にしか反応しないのなw

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:00:11.88 .net]
さいごにレスしたぼくがしょうりなんだ!

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:17:30.52 .net]
>>595
違うと思うぞw

でもあんたはそう思ったから、書き込んだんだよね

619 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:21:55.43 .net]
なんにでもレスするやつ

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 10:56:37.40 .net]
レスしなきゃ負けると信じてるみたいだからしょうがないね



621 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 11:34:13.17 .net]
$ cat <<. <<.
1AAA
.
2BBB
.
とやると
2BBB
とだけ出力されるんだけど、これどういう理屈か分かる?
標準入力ってヒアドキュメントでさえ上書きされる仕様なの?

622 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 11:42:05.35 .net]
strace で見ると 2BBB だけ read してるな(1AAA は無視)。

623 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 12:01:06.03 .net]
>>598
なるほど。だから「さいごに〜」とか話に全く関係ないことを言い出したのねw

>>599
ヒアドキュメントって標準入力として読み取るものでしょ?
そこは何らおかしくない

cat < /proc/loadavg < /proc/uptime
ってかいて、/proc/uptime からしか読み込まないのと一緒だと思うよ

624 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 12:22:00.85 .net]
>>595
0x03e8 ばんさえとれればあなたのしょうりです。

625 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 16:23:41.49 .net]
>>601
なるほどね
$ somecmd < a.file < b.file
↑これでb.fileしか読み込まれないのも(やったことなかったから)知らなかった。
ありがとう

626 名前: []
[ここ壊れてます]

627 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 16:51:47.47 .net]
リダイレクトは引数じゃないからね
実質これと同じわけだし

exec </proc/loadavg
exec </proc/uptime
cat

628 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 17:56:57.18 .net]
>>604
なるほど、納得

629 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 18:05:22.98 .net]
>>593
を〜、grep -oで切り出しできるのね
久々にこのスレで参考になりました

630 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/13(水) 18:44:51.04 .net]
なんか嫌らしい感じ



631 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 18:54:32.62 .net]
コロンを含むディレクトリを$PATHに登録した場合ってどういう挙動になるんだろう

632 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 20:11:28.93 .net]
コロンがセパレータなのでそこで分かれる

633 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 20:52:33.17 .net]
findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど
どうにかなりませんかね。
今のところ/dev/nullに標準エラー出力を捨てることで解決してるんですけども。
find . -exec basename \{\} \; | head
↑これで再現するはずです。
解決するときはできればPOSIXの範囲でやりたいです。findのGNU拡張で解決できるならそれでもいいんですが
メインPCがOS Xなので、最低でもBSD拡張、さらに言えばPOSIXに限定してほしいです すいません。

634 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 21:25:25.31 .net]
macOSだが再現しないなあ

635 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:13:02.03 .net]
FreeBSDは再現しない。
CentOSは再現した。
対策は後で考える。

636 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:18:48.70 .net]
なにか最近やけに POSIX にこだわってる奴が多いが同一人物か?

637 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:31:37.92 .net]
>>613
単純にPOSIXの価値というかシェルスクリプト全体の有用性が見直されているだけでは
たとえば*BSDのスレでGNUライセンスに拘ったレスが連続するのはおかしいが
BSDライセンスを重視するスレがたくさんあっても別におかしくはないだろう

638 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:32:42.05 .net]
パイプでなのでfindとhead が同時にプロセスとして存在
findが標準出力に出力するとパイプを通して/パイプとして繋がってるheadの標準入力に入力として
headが目的を達して終了=パイプが無くなる、だがしかし、findは出力を続けようとし出力しようとしたらパイプが壊れてるうううっ

普通何もしなくても、パイプが損失したらSIGPIPEが飛んできて(強制)終了するんだけど(フィルタとしてもなUNIX的な望ましいデフォルト動作)、なぜかSIGPIPE無視して続けようという謎動作?

findとheadが直接は繋がっていなくてかもしれんが。パイプの送出側がSIGPIPEを無視って謎動作なのは変わらないかな

639 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:38:09.62 .net]
>>615
basenameが標準出力につながってるだけだから、findはwriteしないのでSIGPIPEを受け取らないよ。
basenameが事故死したのをfindが報告してるだけ。

というわけで、basenameが事故死したらfindを続けるのをやめるようにしてみた。
この方が無駄にbasenameを続けるよりよかろう。
find /var \( -exec basename {} \; -o -quit \) | head
ただし、最初の事故死についてだけはfindがおせっかいに報告してしまう。

あとはまかせた。

640 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:41:30.04 .net]
>>616
そのへんが実装によりちょっと違うってとこなのかなあ。出る出ないは



641 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:48:28.09 .net]
>>613
自分側で「なにか違って」動かなかったらめんどくさいってだけじゃないの、単に

642 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:49:53.08 .net]
>>610

643 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:50:38.44 .net]
CentOS$ strings /bin/find | grep -i signal
signal
%s terminated by signal %d
FreeBSD$ strings /

644 名前:usr/bin/find | grep -i signal
なんもなし

以上、findのおせっかい度の差。
[]
[ここ壊れてます]

645 名前:619 mailto:sage [2018/06/14(木) 22:51:53.48 .net]
すまん間違えて送信しちゃった
$ find /etc -exec sh -c 'basename {}' \; | head
これでどうだろう。
-quitオプションはPOSIXの範疇ではないけどこれはPOSIXに準拠してる
ちなみに>>610のコマンドラインはDebian GNU/Linuxのfind 4.7で再現した。

646 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:55:42.54 .net]
>>619,620
なーるほどっ
ww
なるほどっ、なっとく

647 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/14(木) 22:57:07.67 .net]
>>621
ん? それSIGPIPEは回避できるけど別の問題が発生しない?
「basename: 余分な演算子 XXX」←みたいに怒られるんだが
あと
$ find /etc -exec sh -c 'echo {}' \; | head
↑これをやるとやっぱりSIGPIPEが出されるようだ。

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:01:24.90 .net]
>>613
どこかの先生が課題にそう書いてるんだろう。
ちゃんと調べないで持ってくるバカ学生が多いんじゃないの。

649 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:03:14.56 .net]
>>610
>findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど

この動作は、POSIX的にはどうなの?
まずいというならPOSIX的にどうまずいの?

650 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:08:14.14 .net]
find . -exec basename \{\} \; | { head; cat >/dev/null; }



651 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:14:45.23 .net]
>>626
どういう仕組みなん?

652 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 00:39:45.42 .net]
-execにこだわりがないのであれば、
find . -print0 | xargs -0 -L 1 basename | head
今度はxargsがお節介メッセージ出すけど、findはheadが終了したら終了する

653 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 01:01:37.95 .net]
xargs(1)に-0オプションはない(POSIX厨)

654 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 02:22:41.09 .net]
findにも-print0は無いけどな。BSDにもあるからいいんじゃね

655 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 08:25:40.13 .net]
find . -print | xargs -n1 basename 2>/dev/null | head

656 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 20:58:34.50 .net]
execオプションはやめといたほうがいいね

657 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 21:35:58.85 .net]
元々何が気に入らなかったのかイマイチわからない

658 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 22:35:17.99 .net]
POSIX的に気に入らない

659 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 23:11:38.57 .net]
POSIX POSIXうっせー

660 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/15(金) 23:13:05.02 .net]
>>634
こういうPOSIXにやたらこだわってるのって
なにかの精神障碍があるんじゃないの?
一度そういう病院で診てもらえ。



661 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 00:18:50.65 .net]
findutilsのソース取って来てあのメッセージ出ないようにパッチして使っちゃえよもう
git.savannah.gnu.org/cgit/findutils.git/tree/find/exec.c?h=v4.6.0#n354

662 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 00:33:50.14 .net]
>>616
find . -exec sh -c 'trap "exit" pipe; basename {}' \; -o -quit | head

663 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 01:07:40.99 .net]
>>638
試してないけど、trapせずにbasenameのあとにexitするだけでだめなん?

664 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 08:33:03.61 .net]
find /etc -exec basename \{\} \; |& head
これでエラーも出ず余計な出力も引っ掛らなかったんだけど
理屈が分からん
|& は標準出力と標準エラー出力両方を通すはずなので
SIGPIPEのエラーが出力されるはずだがgrepしても見当らない

665 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 10:03:37.06 .net]
find自身がSIGPIPEで終了してんじゃない
実行時間も短くなってるし

666 名前:640 mailto:sage [2018/06/16(土) 10:31:40.54 .net]
>>641
すいません。それどうやって確かめたらいいですかね

667 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 10:39:12.35 .net]
Linux なら strace で見ると分かる

$ strace -f bash -c 'find /etc -exec basename \{\} \; |& head'

668 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 11:10:29.82 .net]
stderrが(標準出力)のパイプになりの、そのパイプが無くなり、find自身がエラーメッセージをそれに書き込もうとしてSIGPIPEを受けるってとこか
find . -exec basename {} \; -o -print | head
としても同じように終わるってとこで

669 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 12:55:30.00 .net]
>>644
ほほう

670 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:02:42.26 .net]
>>640
だれかこれをmacOSでやってくれない?
あれは確かSIGPIPEを受けとらないから
GNU findと違ってこの書き方だと不具合が起こりそうだ



671 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:15:44.53 .net]
>>646
>あれは確かSIGPIPEを受けとらない
いや、それはないだろう。単に>>621の違いじゃないの
macOS Sierra標準のbashはまだ |& をサポートしてないヤツみたいなので(??)、2>&1 | としたが同じくfindは終わる

672 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:16:47.78 .net]
>>647
× >>621
>>620

673 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 13:26:10.67 .net]
ああ、|& は元々はzshのなのか(?)
macOS Sierra標準のzshでは/でも、>>640のままで特に何も問題なく終わった

674 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 14:10:29.68 .net]
>>649
|&はcsh由来。zshはパクっただけ。

675 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:20:45.43 .net]
|&はPOSIXなの?

676 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:32:28.45 .net]
やかましいわっw、おばかさん

677 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 17:58:54.17 .net]
それはPOSIXですか?POSIXじゃないのですか?

678 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:00:34.28 .net]
ところで俺のPOSIXを見てくれ。こいつをどう思う?

679 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:14:03.11 .net]
すごく、標準的です

680 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:39:24.01 .net]
Is it POSIX?



681 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 18:58:44.20 .net]
No, it is Apple

682 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/06/16(土) 19:58:16.75 .net]
まあPOSIXじゃないので質問者の要請は満たしてないよね
俺が提案するとしたらexecは使わず
find . | xargs -I @ basename @ | head
↑これ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef