[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 05/13 07:05 / Filesize : 129 KB / Number-of Response : 443
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:34:47.98 ID:/eJt2TVD.net]
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その28
mevius.5ch.net/test/read.cgi/tech/1532397676/

2 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:36:59.94 ID:/eJt2TVD.net]
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
 つまりシバンは#! /bin/shです。
 他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
  OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
   ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
  FreeBSDユーザーは/bin/shの実体がashなので注意。
  Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
  (参考URL: www.speech-lab.org/~hiroki/csh-whynot.euc
・POSIXに準拠しましょう
 有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
 最新の仕様はこちらへ: pubs.opengroup.org/onlinepubs/9699919799/
  (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
  Heirloom sh: heirloom.sourceforge.net/sh.html
  Dash shell: gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
 Manページや各種リンク(pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
 apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな

3 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:39:20.07 ID:/eJt2TVD.net]
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
 シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。

回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
 安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。

4 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:45:34.73 ID:/eJt2TVD.net]
次スレを立てる時は>>1の本文の先頭に以下を追加して下さい。
!extend:on:vvvvv:1000:512

という注意書きを>>1の先頭に追加してください。

5 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 23:48:15.75 ID:/eJt2TVD.net]
そして注意書きに従ってください。


…回線切って首釣ってくる

6 名前:デフォルトの名無しさん mailto:age [2019/02/08(金) 12:13:50.02 ID:OGIJJ+v/.net]
age

7 名前:デフォルトの名無しさん mailto:sage [2019/02/08(金) 13:03:01.43 ID:VZqJ7QJN.net]
>>5
ワロタ

つーか今時回線なのかw

8 名前:デフォルトの名無しさん [2019/02/09(土) 15:41:36.60 ID:6/bHpQ6m.net]
回線って言葉の定義によるが、今どきの優先での光とかでも回線とは言う。光回線とかね。

9 名前:デフォルトの名無しさん [2019/02/09(土) 15:41:50.96 ID:6/bHpQ6m.net]
優先じゃなくて有線

10 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 22:28:27.73 ID:ksUvHKJZ.net]
printfのフォーマットについてなんだけど
printf '%05d' '33' → 00033
みたいなゼロ埋めってどのシステムでもサポートされているのかな。
%5dみたいな記述はPOSIXの仕様書に在ったから確実だけど
ゼロ埋めフラグについて何の言及もしてないっぽいんだよね。
%gとかと違って「実装を要求しない」とも言っていないし。



11 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 12:20:14.92 ID:8DR6dyZB.net]
あ。自決。
よーく読んでもっつーか普通に書いてあったわ。

12 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 23:18:53.00 ID:Hwu/ac/i.net]
結論を書いてから死ぬんだ

13 名前:デフォルトの名無しさん [2019/02/16(土) 00:07:44.70 ID:FAU3Sbcr.net]
自決か・・・

14 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 01:21:53.36 ID:SPTGalft.net]
>>11
なんて書いてあった?
シェルのバージョンによっては8進数しか
受け付けなかったりするんだよねー

15 名前:デフォルトの名無しさん [2019/02/16(土) 01:31:05.83 ID:k5VPqkkr.net]
シェルスクリプトで数値を扱うのがおかしい。シェルスクリプトは文字として認識しているから、もともと数値の取り扱いは気をつけないといけない。

16 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 01:35:36.86 ID:SPTGalft.net]
そんな事言われましても、シェルスクリプトに
数値計算の機能がありますし

17 名前:デフォルトの名無しさん [2019/02/16(土) 02:04:59.47 ID:k5VPqkkr.net]
>>16
シェルスクリプトそのものにはもともと計算機能は存在しないよ。

shは計算コマンドでの対応しかできない。

18 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 06:28:35.63 ID:OVG8+uJO.net]
>>14
なんか勘違いしてね?
俺が言ってるのは0フラグ。
pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html#tag_20_94_13

ちなみにprintf '%b' '\0ddd'はPOSIXでは8進数しか定められてない
のでその「8進数しか受け付けない」システムは正当。

19 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 06:29:08.87 ID:OVG8+uJO.net]
>>17
$(())があるじゃない
exprやbcはまあコマンドだけど。

20 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 06:56:37.82 ID:0pA9DINd.net]
もともと



21 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 08:05:07.54 ID:SPTGalft.net]
今のシェルスクリプトの話をしろよ
需要に応じて変わるんだよ

22 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 14:10:14.71 ID:DdK+9zEs.net]
    〃〃∩  _, ,_
     ⊂⌒( つД´) < ヤダヤダ
       `ヽ_ ノ ⊂ノ
              ジタバタ

23 名前:デフォルトの名無しさん [2019/02/16(土) 15:55:59.02 ID:FAU3Sbcr.net]
昔はよく expr コマンドを使ったものぢゃよ

24 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 16:39:46.54 ID:MuF4+GQB.net]
exprは(シェルによるけど)grepみたいな正規表現が単語に対して使えるからすごく重宝してた。
でも最近はそもそもそういう非可搬な機能を使うならbashの[[ <str> ~= "/regexp/" ]]でいいやってなってる。

25 名前:デフォルトの名無しさん [2019/02/21(木) 04:12:08.57 ID:UnmnTW3q.net]
mevius.5ch.net/test/read.cgi/tech/1535194140/l50
わざわざひと月経ってから重複立てた理由は?

26 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 04:19:12.64 ID:LAfLZLuz.net]
そっちには特定のOSでしか動かないで存在しないのが入ってるからじゃね。特定のOSの板かスレが相応しいのだろう

27 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 04:24:39.60 ID:LAfLZLuz.net]
ああ、特定のOSでしかでもないのか。じゃ、すでに専用スレあるのでってとこか。言葉が違うのに混ぜることもないだろしな

28 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 17:45:17.27 ID:W8hCm55w.net]
特定のOS?

29 名前:デフォルトの名無しさん [2019/02/23(土) 13:42:47.53 ID:9pS68leH.net]
月経の文字に反応

30 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 15:22:22.19 ID:uN5/G9fw.net]
受け取った文字列が想定しているものかを判定する場合で
「特定の種類の文字のみ構成されている」かを調べる方法として
↓こういうのを考えてみた
test "$VAR" = "${VAR#*[^a-z]}"
成功したらVARは[a-z]のみで構成されているということ。
あと一応POSIX 2018にも準拠してる。

grep(1)などを用いて処理するより早いと思うんだが
最近のPCは処理が速すぎて今一違いが分からんw



31 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 15:46:48.84 ID:jjF3mg4o.net]
case $VAR in
 *[^a-z]*) ;; # a-z以外の文字がある
 *) ;; # a-zのみで構成
esac

でいいやろ?
置換処理しないから更に速いはず

32 名前:デフォルトの名無しさん [2019/03/17(日) 00:42:11.09 ID:vYpDkOnV.net]
foo() {
echo 1
echo
echo
echo
}
a="$(foo)"
echo "$a"


ってやったら、最後に改行がいくつあっても消えちゃうんだけどさ
aに改行ごと入れる方法ない?bash依存なしで

33 名前:デフォルトの名無しさん [2019/03/17(日) 01:22:55.25 ID:MBTcz8WL.net]
>>32
a="$(foo; echo @)"
a="${a%@}"

34 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 22:55:33.85 ID:8/J7EWL3.net]
$ ( a="a,,b,,c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a b c"; IFS=" "; set -- $a; echo $3; )
c


なんでや?

35 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 23:27:41.47 ID:uNuvPAZ3.net]
なんでやと言われましても…

36 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 23:50:57.39 ID:Y/j3QiNl.net]
空(くう)を理解出来ないタイプの馬鹿って結構いるんだよな

37 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 23:54:01.74 ID:8/J7EWL3.net]
スペース か カンマ かによって
挙動が違うっておかしいだろ

38 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 00:09:19.55 ID:iRq0tZYn.net]
挙動は同じだけど?

39 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 00:25:52.00 ID:Z0jAEi8m.net]
わざわざそうしてるってなんで理解できないんだろかな

40 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 01:57:01.83 ID:0Zzw4/NV.net]
>>38>>39 で矛盾してますけど?



41 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 03:19:57.67 ID:bAHak1a6.net]
同じ挙動してるじゃん?

42 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 03:38:05.43 ID:YXzanjRe.net]
>>40
別人だからな。なんで同一視してんのかわからんな

43 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 03:39:03.36 ID:0Zzw4/NV.net]
あぁ、ブラウザで見るとスペースが1個になるのねw


$ ( a="a<カンマ2個>b<カンマ2個>c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a<スペース2個>b<スペース2個>c"; IFS=" "; set -- $a; echo $3; )
c


これで意味分かるやろ?

<カンマ2個>は ,, のこと
<スペース2個> も同様

44 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 03:41:08.39 ID:YXzanjRe.net]
やっぱり、元のヤツか。>>40といい独特というか視野が狭いというか思考理解力が狭いな
>>36が答えでもう終わってるだろうに

45 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:54:41.91 ID:jzAF3+In.net]
あからさまに挙動見て仕様 理解できないとか・・・

46 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 22:56:46.84 ID:RZb/N1K/.net]
シェルスクリプトにヒアドキュメントって
"HERE" でも 'HERE' でも変数展開行われないのか・・・
"HERE" は HERE と同じだと思っていた

47 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 23:25:35.49 ID:bEjwjHsM.net]
なんで展開されると思えるのか、そこが少し不思議

48 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 02:16:32.57 ID:xgV52nBe.net]
>>47
シェルスクリプトだけじゃなくて、他の言語も勉強するといいですよ

49 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 03:13:10.80 ID:eOBuYNEJ.net]
>>48
なんで俺に?

50 名前:デフォルトの名無しさん [2019/03/22(金) 06:47:12.77 ID:aoKwVDMo.net]
> If no part of word is quoted, all lines of the here-document shall be expanded for parameter expansion, command substitution, and arithmetic expansion.
pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04

\HERE とか
HE"R"E とか
""HERE でもいいんだな



51 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 11:57:50.97 ID:g5h3mGP7.net]
a = <<"EOT"

EOT

Ruby では、" " なら、バックスラッシュ・式展開が使える。
' ' なら使えない

52 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:46:19.30 ID:eOBuYNEJ.net]
ヒアの中身の話をしてるんじゃないのか?
なんだかrubyとかやってる人ってとんちんかんな人多いよなあ

53 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 14:48:23.02 ID:HU9xhxJ/.net]
>>47に対して>>48の意味が>>51だったてことだろ。意地はるなみっともない

54 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:16:49.37 ID:eOBuYNEJ.net]
>>53
ますます意味不明
なんでルビーがでてくるし?

55 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 22:38:33.79 ID:z9ChYb8e.net]
あー、もしかして、ヒアドキュメントが
他の言語にもあるって知らない人かな?
もう少し勉強したほうが良いよ

56 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:03:22.48 ID:u7m3wqcd.net]
スレタイ読めない人がいるな

57 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:42:28.23 ID:HU9xhxJ/.net]
この件は別に他の言語での知識経験から故にで全然おかしくないだろう
単にそう思ったのはそうだったのかで済む話でしかないだろうに。何を拘っているんだか

58 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:44:22.75 ID:eOBuYNEJ.net]
環境によって頭を切り替えられない馬鹿だという告白ってこと?
それならまあ納得なのだが。

59 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 23:48:13.41 ID:HU9xhxJ/.net]
なにを言っているんだか。単に「よく」調べないで経験則で思い込んでいたってだけだろう。そういう人もいてもおかしくはないだろう
誰かのように、どうも最初から馬鹿にしたいだけなら違うんだろうけどな

60 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:21:25.87 ID:V0vJvcu9.net]
「普通は」他の言語の知識があるわけで、
他の言語がそうだったから、シェルスクリプトでもそうだと
思ったのに違っていて驚いたってだけの話だろ

なんで言語が変わったら、0から言語仕様を勉強します。
以前の言語の知識は全て捨てて、最初から学び直しますってなるんだ?
文法は「知らない」 or 「間違いなく知ってる」 のどちらかしか無いはずなんです。
「他の言語がそうだったから、同じだろう」なんて思うやつなんてありえないんです。
そう考えてるのか?そんなやついないだろ。



61 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:19:57.25 ID:O+DUttYl.net]
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

62 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:27:43.57 ID:daYwWoP0.net]
たかが>>46の独白(?)に何をそんなに必死になっているんだか
何かが気に食わなかったのだろうな>>46のレスの内容ではなくて

63 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 13:51:52.81 ID:V0vJvcu9.net]
1. シェルスクリプトの仕様に文句言われて悔しい
2. 俺にとっての常識が、井の中の蛙だとばれて悔しい

どっちか

64 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:29:37.54 ID:daYwWoP0.net]
いやいやw君がなんだか。なにその読めなさはwずっと同じ人?

65 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:39:44.63 ID:q0JuU/5a.net]
>>63
3.おまえがバカを晒して悔しい
だろう?

66 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:42:21.52 ID:V0vJvcu9.net]
俺が>>46なんだが?

67 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 14:51:13.97 ID:daYwWoP0.net]
>>66
えーっ、おれが馬鹿を晒してしまったやんけっ
なにを長文で、わかりづらいネチっこい最後の部分。あんたのスタンスなんぞがわかっているのが居るんだからなにをわざわざな...もう
まあ、すまんかった、いろいろと

68 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 16:37:26.87 ID:q0JuU/5a.net]
>>66
だからだよw

69 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 18:12:02.34 ID:V0vJvcu9.net]
理由が書いてないものに意味はないよ。
ばーかばーかっていってるのと同じだからね

70 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 22:04:19.40 ID:x8gXkLwZ.net]
Rubyさいこおおおおおおお
シェルはほろびろおおおお



71 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 23:36:39.28 ID:xoOtakOI.net]
やれやれ、延長戦か。昨日ので終わってれば普通のまともな人に見えたのに。

72 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 11:30:58.75 ID:WkQ3cHj8.net]
ジョブって使ったことあります?
fgとかbgぐらいはあると思うんですが、
そういうのってコマンドラインじゃなくて
シェルスクリプトで使うことって考えられますかね?

73 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 08:32:22.35 ID:Gker1m8S.net]
俺はないけど
単に経験が浅いだけかも知れない

ただ,似非の非同期処理として,ネットワーク資源をwgetなんかで取得しているジョブと同時に
その資源に依存しない種々の作業を同時に実行して,
その資源が必要になった段階でwaitコマンドでwgetの終了を待つ,
みたいなことはよくやる。

74 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 07:25:41.51 ID:KhBeLwdl.net]
USR1シグナルって受け取ったら
trapしてても死んじゃうの?

75 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 08:09:44.39 ID:iZJL5S3u.net]
いいや
シグナルに対してハンドラが無い場合死ぬのであって、trapしてんだか死なない

76 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 10:51:28.75 ID:KhBeLwdl.net]
いや死ぬんだが? これ実行してみ

[main.sh]
#!/bin/sh

trap 'echo USR1' USR1

for i in $(seq 1 10); do
./child.sh "$$" &
done
wait

[child.sh]
#!/bin/sh

sleep 0.1
kill -USR1 "$1"

77 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 14:30:15.21 ID:iZJL5S3u.net]
ただの正常終了、main.sh処理全部終わりましたでしょがー
意図した動きになるようには書いてないだけでしょう

78 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 15:51:57.16 ID:KhBeLwdl.net]
>>77
実行すらしてないようだから、実行結果書いておきますねw

$ ./main.sh
USR1
USR1
$ ./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

79 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:03:50.50 ID:iZJL5S3u.net]
なにそれ。性根の悪いヤツだな
man bashでwait及びシグナルんとこ読みなさい

80 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:07:09.38 ID:KhBeLwdl.net]
>>79
はいどうぞ。

wait [n ...]
n が与え
られていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。


疑問点があれば受け付けますよ?



81 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:08:06.24 ID:iZJL5S3u.net]
なんか続きそうでメンドくさくなった
ただの正常終了、「main.sh処理全部終わりました」
だよ。
wait
じゃなくて
until wait
do
:
done
とかだろう。どう意図した動きにしたいのか知らんけど、間違いは

82 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:08:42.72 ID:iZJL5S3u.net]
マジで性根の悪いヤツだった。言ったことやってから言えよな、もう

83 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:13:17.88 ID:KhBeLwdl.net]
> 言ったこと
ってどれ?w

84 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 16:16:44.69 ID:iZJL5S3u.net]
「シグナルんとこ読みなさい」だよ。くそがw
よく笑ってるな。まじでなんなん?ただのプライドが高いアレか

85 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 23:35:25.52 ID:6TL4Muj2.net]
どこまで本気なのかなあ。
小学生が頭の悪そうななぞなぞで得意がってるとか、そういう雰囲気を感じる。
とりあえず
「シグナルで死んだんなら、なんで echo が実行されてんだよ!」
とつっこんでおくよ。

86 名前:デフォルトの名無しさん [2019/03/30(土) 15:21:37.81 ID:iJ+PacLA.net]
シグナルで死んでるんじゃなくて全てのプロセスが終了する前に wait から抜けちゃうってことだな。
理由はシグナル受け取っているからだが。

87 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 23:21:26.53 ID:s3xILrfA.net]
Ruby のSignal モジュールを使え

割り込み : Ctrl + C

Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)

88 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 23:27:14.67 ID:VjxmND9i.net]
スレ違い

89 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 06:29:53.92 ID:QZIPpnnl.net]
ちゅうかお題違い

90 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 01:31:26.57 ID:IKNNLLYB.net]
for i in *; do
echo "$i"
done

これって必ずソートされるの?



91 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 01:55:34.42 ID:dFHstMQf.net]
POSIXでソートすることになってる

92 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 08:49:30.39 ID:IKNNLLYB.net]
へー、取得したいのは最初の一個だけでいいんだけど、
その最初の一個は、小さいものになるんか

というか、一個だけ取得する速い方法ないかな?
でもソートしてるなら、結局内部で全部読み込むのか?

93 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 09:43:29.00 ID:NOgINnam.net]
へんなの居付いたな

94 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 10:02:05.99 ID:IKNNLLYB.net]
そりゃ俺が立てたスレだしなー

95 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 10:28:36.49 ID:ifPcZP08.net]
ls -1U とか?

96 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 00:24:00.86 ID:opkeFDjY.net]
1.txt, 2.txt, 3.txt と3つファイルがあるディレクトリでecho * したら
これらのファイルがでてくるのに空のディレクトリで、
echo * したら * と表示されるのなんで?
何も表示されないでほしいんだけど、この仕様、なにか便利なの?

97 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 03:15:34.42 ID:7s/hio3T.net]
echoがやってるんじゃないし...

98 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 03:21:22.66 ID:xQGJKB0I.net]
エコーさんはね、もらったものをエコーするだけだってね、ママがいってたの

99 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 04:46:21.43 ID:19nHnpBp.net]
cat *
とかで困るだろうに

100 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 11:44:59.87 ID:opkeFDjY.net]
echoがやってるかどうかは論点じゃないしw



101 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 13:06:19.36 ID:/xpppM3k.net]
いや、重要だぞ。何の man を読めばいいかというのは。読む気があればね。

102 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 14:25:13.45 ID:opkeFDjY.net]
それで質問の答は?

103 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 15:00:27.41 ID:19nHnpBp.net]
答えはmanに書いてある。なんでかは「読まなければならない」けど

104 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 15:08:08.53 ID:vligoyoR.net]
>>102
echo は渡された文字列をそのまま出力する仕様なので、* を渡されたら * が出力される。というのが回答だよ。

105 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 16:46:44.95 ID:/xpppM3k.net]
まあ、「'*' はいらない」というのももっともなことだしね。
bash を使ってるなら man の「パス名展開」の項を読めばいいかも。
bash じゃない場合は…読めばなんとかなるでしょ。

106 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 16:53:45.66 ID:19nHnpBp.net]
いらないからいる(?)になってるんだけどね。それもそうmanに書いてある

107 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 17:59:04.72 ID:opkeFDjY.net]
>>104
聞いてるのは仕様ではなくて、
どうしてそうしたかの理由です。

108 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 18:17:25.75 ID:19nHnpBp.net]
だからmanに書いてあるってw

109 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:15:53.98 ID:opkeFDjY.net]
書いてないから聞いてる

110 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:20:19.17 ID:19nHnpBp.net]
書いてあるんだなあ。書いてないんじゃなくて探してないだな



111 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:23:19.35 ID:opkeFDjY.net]
最近、無いものをあると言いはるのが増えてるのか?
無いものはいくら探してもないし、
有るならさっと出すことぐらいできるだろ

112 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:24:58.44 ID:19nHnpBp.net]
なんかいたね、ちょっと前のシグナルの質問してたのとか
煽って自分では労力さかずに答え出させようしてんの?w

113 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:30:55.71 ID:opkeFDjY.net]
んで答えは?w

114 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:31:22.20 ID:19nHnpBp.net]
manに書いてあるw

115 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:09:11.90 ID:opkeFDjY.net]
書いてない

116 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:21:01.39 ID:19nHnpBp.net]
マンザイとしてはそれはないな。オモロクないやん、マンザイとして。いい感じだったのにw

その言い張り方が、なんか既視感ありすぎ。そしてよく「言いはるのが増えてるのか」なんて言えるなあ
まあ、ふんわりとした答えは>>99で答えてるんだけどね。それはmanに書いてた説明からだよ
ところでOSなに使ってるの?

117 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:24:57.07 ID:opkeFDjY.net]
catが困るのは、単にcatの仕様がクソってだけだろう
標準入力から読み込むためのオプションの - があるのに、
引数なしだと標準入力から読み込もうとするわけだから

118 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:28:22.13 ID:19nHnpBp.net]
浅いな、catは一例なのに
そのやたらプライド高そうだけど、全然そのプライドを裏付けるもの無いから、こんなことになってんやで?まあ、プライド高いから言ってもわからんだろけど

ちなみに、'*'でなくて''でもよさげなんだけど、'*'の方がやっぱりいいんだな(と、思う。そう具体的に書いてない、''に言及してはいないけど)。さて、どうしてでしょう?

119 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:45:06.72 ID:opkeFDjY.net]
> さて、どうしてでしょう?

お前にその答えが言えんの? *の方が良いと思ってるようだが、
正確にはディレクトリが空の時に帰ってくるのは、正確には*じゃないんだが

120 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:49:41.59 ID:19nHnpBp.net]
うん、>>117なんて宣える人にそう言われてたくないけど。やっぱ想像はつかないのね。なのになんで疑われているのかさっぱり。また煽って喋らせる手法?w

正確にはってのはイミフ。なんの正確?なにを言いたいのかイミフだがほぼデフォルトの環境ではそうだよ、てか、そう決められているはずなんだがなあ



121 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:54:08.11 ID:opkeFDjY.net]
聞いてるのは、決められているかどうかじゃなくて
なぜそういう風に決めたかだって言ってるだろ

122 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:55:07.83 ID:opkeFDjY.net]
だいたい、俺の想像していることがわかってない時点で
お前はダメダメなんやで?わかってるか?

俺の想像していることぐらい読み取れ!

123 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:56:45.08 ID:opkeFDjY.net]
ディレクトリが空の時に帰ってくるのは * ではありません。
echo ? だと ? が帰ってきます。

124 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:58:07.29 ID:opkeFDjY.net]
echo *[a-z]* だと *[a-z]* が帰ってきますが、

さて、このディレクトリは空でしょうか?
それとも *[a-z]* という名前のファイルがあるのでしょうか?

125 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:58:24.17 ID:19nHnpBp.net]
だから、なぜそういう風に決められたかっていうことをずーーっと言っているんだけど?
あんたが自分勝手な自分だけの思いで自分の考えに固執してるから先に進んでないんだけなのに。既視感ありまくりw

'*'の方がいいとまでちょっと進んで言っているのに聞かないで反発してるだけだし。答えは書いてある。さあ、理解に向けて進んでみようw

126 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:02:36.29 ID:19nHnpBp.net]
>>123,124
そりゃそうだ。根本的に勘違いしてる。*なんだから'*'、?なんだから'?'、[a-z]*なんだから'[a-z]*'でしょに。なにを言っているのだか

なんで、ますますプライドを裏打ちするものが無いって自ら開陳するかなあ。捨てなその意味ないプライドは。文字通りプライドが邪魔する(意味が違うか?w)でしょうに

127 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:04:35.03 ID:7s/hio3T.net]
>>122
あすぺってこういう人のこと言うの?
違う?

128 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:04:35.25 ID:opkeFDjY.net]
だから答えは書いてないって言ってるだろ

いい加減、悪魔の証明は辞めてくれ。
無いものは無い。無いという証拠を見つけられないなら
悪魔はいるってことだ!←ほんと馬鹿みたいだ

129 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:07:34.48 ID:19nHnpBp.net]
答えは書いてあるよ。ふんわりと。あんたに理解できるようには書いてないかもだけどwいや、プライド高いお人だからわかると思うんだけどということでw

悪魔の証明でもなんでもないのになあ。なんとか言わせたくて必死な感じ?通用しないよ何度もはw

130 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:08:58.45 ID:opkeFDjY.net]
※書いてないから、言えないのです



131 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:09:37.50 ID:19nHnpBp.net]
>>127
俺のこと?違うよww わざとやってます。なんかオモロイから
なんで自分の労力を割くのが嫌いなくせに、まわーーーーーり道してんのかなあと。どこまで回り道すんのかなとw

132 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:11:14.30 ID:19nHnpBp.net]
>>130
そんなあけすけな手にはのらないww

133 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:46:57.92 ID:gljFUA1G.net]
もうどっちがどっちなのか分からんけど
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。

134 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:49:48.14 ID:19nHnpBp.net]
ありゃりゃ。終わっちゃうかっw
親切だな。まあいいことだけど。ヤツにとっていいこととは思えないけど(余計なお世話)

135 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 21:52:55.41 ID:19nHnpBp.net]
>>133
>>96が元、(>>105.106からの?)>>107
だよ。それ以外はいらないww(たぶん)

136 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 22:06:28.63 ID:opkeFDjY.net]
>>133
echo * (別にechoである必要はない)で
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由

137 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 22:52:03.02 ID:opkeFDjY.net]
ありゃ? もうすぐ答え出るかと思ってひとっ風呂浴びてきたんだが
まだでてないや。誰か曰くmanに書いてあるらしいから
知らなくても答える気があるなら、答えられるはずなんだけどなー

な?書いてないだろ?

138 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 22:55:28.86 ID:19nHnpBp.net]
そこまで言い張ってあったらどうすの?いやあるんだけど
黙って逃げるだけの未来しか見えないw

139 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:03:19.00 ID:opkeFDjY.net]
じゃあ先に答えを言ってくれた人へ

ありがとう


これでもう黙って逃げるだけの未来はなくなりました。

140 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:04:43.01 ID:19nHnpBp.net]
やかましわっ、アホっw

なんでこうも強情というか自信満々なのかなあと、実際にあるのに書いてあるのを知っている方は思うんだよ
で、ここまで強情で自身満々故になのか逃げるだけかというのも透けて見えるんだよ

まあ、>>133のお人が答えてもらえるんだからもっと待ちなさいな
なんでそうも自己都合なんだかw。俺が>>133だったら答えるのやめるw。別に>>133のお人に答えるなとか風なことでではない、あくまでも俺だったらね



141 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:10:20.77 ID:opkeFDjY.net]
書いてある内容をコピペすりゃ終わりなのに
長引かせてるのはお前やで?

142 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:13:02.33 ID:19nHnpBp.net]
そうだよ?言われなくても、そうだよ?(すでに>>131で書いてあるやん?w)
なにを急に言い出してるの?それもあんたも律儀にレスしてんのに

143 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:14:01.18 ID:opkeFDjY.net]
自信満々に荒らし宣言w

144 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 23:17:24.59 ID:19nHnpBp.net]
いやいや、それを言うならあんたもだって。なんだかなあ。それに俺はちゃんと答えている(ふんわりと)、それにあーだこーだ言っているのはあんたなんですけど?どっちがよりでしょうねえ?
第三者から荒らしと言われてもしょうがないかと思うが、あんたが言い出すとは、まあ、先の「言い張る〜」と同じパターンやね

てかさ、せっかく>>133が出てきたのにそうやってなぜ流すようなことすんの?w

145 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 11:46:05.38 ID:zBV/1Std.net]
>>133
待ってますよ

146 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 10:20:38.47 ID:eWoMr/0V.net]
>>133
まだですか?

147 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 15:20:56.18 ID:NNFII5Ih.net]
横からだけど面倒臭いから答えを書いとくよ
bash なら man bash の Pathname Expansion に書かれてるから、それをちゃんと読んでから質問してね。

148 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 15:59:00.29 ID:3hZl3Wdo.net]
>>147
そこに「なぜ*を返すことにしたのかという理由」は書いてないって言うのが面倒だから、ソースとGoogle翻訳貼り付けるわ
https://git.savannah.gnu.org/cgit/bash.git/tree/doc/bashref.info#n2116

*パターンマッチング::シェルがパターンをどのようにマッチングするか。

単語分割後、 '-f'オプションが設定されていない限り(* Set The Builtin::)、Bashは各単語をスキャンして文字 '*'、 '?'、および '['を探します。
これらの文字の1つが現れると、その単語はPATTERNと見なされ、パターンと一致するファイル名のアルファベット順にソートされたリストに置き換えられます(* Pattern Matching::)。
一致するファイル名が見つからず、シェルオプション 'nullglob'が無効の場合、単語は変更されません。
'nullglob'オプションが設定されていて、一致が見つからない場合、その単語は削除されます。
'failglob'シェルオプションが設定されていて、一致するものが見つからなかった場合、エラーメッセージが表示され、コマンドは実行されません。
シェルオプション 'nocaseglob'が有効になっている場合、アルファベット文字の大文字と小文字を区別せずに照合が実行されます。

パターンがファイル名展開に使用されるとき、文字 '。' シェルオプション 'dotglob'が設定されていない限り、ファイル名の先頭またはスラッシュの直後に明示的にマッチしなければなりません。
ファイル名 '。' 'dotglob'が設定されていても、 '..'は常に明示的に一致しなければなりません。
それ以外の場合は、「。」 文字は特別扱いされません。

ファイル名を一致させる場合、スラッシュ文字は常にパターン内のスラッシュと明示的に一致させる必要がありますが、
他の一致コンテキストでは、後述のように特殊なパターン文字と一致させることができます。

149 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 15:59:15.40 ID:3hZl3Wdo.net]
nocaseglob'、 'nullglob'、 'failglob'、および 'dotglob'オプションの説明については、* note The Shopt Builtin ::の 'shopt'の説明を参照してください。

'GLOBIGNORE'シェル変数はパターンにマッチするファイル名のセットを制限するために使用されるかもしれません。
「GLOBIGNORE」が設定されている場合、「GLOBIGNORE」のパターンの1つとも一致する各一致ファイル名は、一致リストから削除されます。
'nocaseglob'オプションが設定されている場合、 'GLOBIGNORE'のパターンとのマッチングは大文字小文字の区別なしに実行されます。
ファイル名 '。' 'GLOBIGNORE'が設定されていてヌルでない場合は、 '..'は常に無視されます。
ただし、 'GLOBIGNORE'をNULL以外の値に設定すると、 'dotglob'シェルオプションが有効になるので、他のすべてのファイル名は '。'で始まります。 一致します。
'。'で始まるファイル名を無視するという古い動作をするには、 '。*'を 'GLOBIGNORE'のパターンの1つにします。
'GLOBIGNORE'が設定されていない場合、 'dotglob'オプションは無効になります。

150 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 16:53:14.39 ID:6GvfotlI.net]
存在する機能の説明なのでその機能について説明しているだけかなと



151 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 16:56:27.29 ID:3hZl3Wdo.net]
133 名前:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 21:46:57.92 ID:gljFUA1G
もうどっちがどっちなのか分からんけど
グロブに関する疑問なら答えられそうなので,
最初の質問を教えてくれ。

136 自分:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 22:06:28.63 ID:opkeFDjY [17/21]
>>133
echo * (別にechoである必要はない)で
ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由

152 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:06:51.60 ID:6GvfotlI.net]
なぜかは、
だいたいは、こんな感じ(だろうで)、
if(argc < 2){
fprintf(stderr, "usage: hoge file ...\n");
exit(1);
}
if((fp = fopen(argv[1], ...)) == NULL){
warn("%s", arg);
exit(1);
}

$ rm -v '*'
rm: *: No such file or directory
$ rm -v ''
rm: : No such file or directory
$ rm -v
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
どれがエラーとして適切?ということとかとか。他にエラーにならないのが困るとか

スクリプトでしかの話なら何も返さないというのもあるけど、スクリプトだけのためのじゃないからねえ。上記の通りコマンド的にはエラーの方がわかりやすく、シェルがどのコマンドだから展開方法を変えるというわけでもないし

>>151
そこにあるキーワードで別のmanがググれるよ

153 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:08:25.01 ID:6GvfotlI.net]
>>152
誤 warn("%s", arg);
正 warn("%s", argv[1]);

154 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:14:32.56 ID:3hZl3Wdo.net]
>>152
それどれもエラーになってますよ?

155 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:16:06.60 ID:6GvfotlI.net]
エラーだもの。「エラーの方がわかりやすく」ってとこ?すまん変な文になった
そのままの方がわかりやすく(?)
かな。

156 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:16:38.44 ID:3hZl3Wdo.net]
>>152
> そこにあるキーワードで別のmanがググれるよ

今度は、どのmanですか?

157 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:19:09.45 ID:6GvfotlI.net]
ああ、「どれがエラーとして適切?」もか。「どれもエラーだがどれが適切?」というつもりだったんだが。「どれもエラーだがどれがエラメッセージとして適切?」までか

158 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:20:08.01 ID:6GvfotlI.net]
>>156
今度はという意味がわからんが、
man 「キーワード」
でググってみ

159 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:21:42.07 ID:6GvfotlI.net]
てか、またおまえか?いちいち教えてもらったのに文句つけてるんだなw

160 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:23:26.97 ID:3hZl3Wdo.net]
>>157
for i in *.txt; do rm "$i"; done
(すでに拡張子txtのファイルが全て削除されている場合)
rm: '*.txt' を削除できません: そのようなファイルやディレクトリはありません

これは適切なエラーメッセージだと思いますか?



161 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:24:20.52 ID:3hZl3Wdo.net]
>>158
なんで「キーワード」というふうに隠すんですか?
キーワードの中身を書きましょうよw

162 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:24:53.61 ID:6GvfotlI.net]
>>152の最後に書いてあるだろう。なんでいちいちいちいち教えなきゃならんのねん
コマンドとしては適切だろう

163 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:27:49.54 ID:6GvfotlI.net]
>>161
いちいち教えてもらわなきゃならないのに、隙あらば文句つけるようなヤツに丁寧に教える必要はないってことだよ。社会的に一般的なことだなw
まあ、もともとはあんたに具体的に教えたくないから、あんたじゃない人に他にあるよと言ってみただけだな

てか、ぜんぜん進んでねーな。こんなやりとりしてもぜんぜん進まないよ?少しは頭を働かせて自力でやってみなさいな

164 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:29:55.75 ID:3hZl3Wdo.net]
1. man bashにある
2. ありませんでした。
3. 他のmanにある
4. ありませんでした。

この流れか

165 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:31:26.91 ID:3hZl3Wdo.net]
日本語に訳してあげないと、書いてないことを認めなかったくせに
何言ってるんだろうね。

166 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:31:36.42 ID:6GvfotlI.net]
マジで「読めない」のな...どうしようかw

167 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:32:31.71 ID:6GvfotlI.net]
>>165
なにをおっしゃってるんですか?すごいな、いやすごい

な?全然進まんだろ?w

168 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:35:16.40 ID:3hZl3Wdo.net]
お前が出てくるといつも進まんよなw

169 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:37:34.84 ID:6GvfotlI.net]
あんたが進まなだけだからな、別にあんたが進まないのは俺はどうでもいいんだけど、なにか進みたがってるあんたがどう動くのかが興味ありの
なんで俺にいちいちレスしてんの?w

170 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:42:21.44 ID:3hZl3Wdo.net]
> なんで俺にいちいちレスしてんの?w

お前が言ってることが嘘だからだよ。
manにそういう仕様にした理由は書いてませんでした。



171 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:42:42.54 ID:3hZl3Wdo.net]
知らないなら、素直に知らないって言えばいいのに

172 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 17:44:22.86 ID:6GvfotlI.net]
ちょっとは進んで(ID:3hZl3Wdo がヤツだとは思わなかったのでw)、>>152を書いてみたが、ヤツはやっぱり聞かないだけだったという
俺は単に最初からmanにあるとしか言ってない、man bashに言及してるのはあったけど(>>105ですでになのに、なんでいまごろなんだ?)、まあそこからでもたどり着くかなとw

>>164なんてお前の勝手な妄想解釈。あるよ本当に
(「言っちゃった」とちょっと悔しくもある。また、「言っちゃった」のになんで探せないないねんwwwここまで言えばさすが自分で探すか?)

173 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:02:56.45 ID:6GvfotlI.net]
探せたか?wwまあ、探せても「読めない」可能性が高いかな
・やっぱり、探せない
・探せたが、読めなくて文句つける
・探せて、黙って逃げる
・他
どれでしょう。まあこう書いたら「他」にする可能性が高いか

174 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:16:37.06 ID:3hZl3Wdo.net]
> なんでいまごろなんだ?

>>105の「パス名展開」の項にないのはわかっていて、そこにないと言ってるのに
性懲りもなく、>>147で「bash なら man bash の Pathname Expansion に書かれてるから」と
いうから、こいつ読んでないなってことで日本語に訳してあげたんだろ

そして
> ファイルが見つからない時になぜ * を返すのか?
> そういう仕様にした理由
は、そこに書いてないと同意取れたはずだが?

なんでそんな説明をせにゃいかんのよ?

175 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:23:16.92 ID:6GvfotlI.net]
「性懲りもなく」...「訳してあげた」んだろ
すんげええなあ、今までさんざん無能っぷりを自ら披露しているのにw 単によくレスを見なかった人がと考えはしないのね。自分がレスをよく見ないくせにw

お前のレスはぜーーーーんぶ自分内で完結している。こんな他人と交わらない方がいいんじゃないの?
呆れ果てるな。まあ、その自己の世界で妄想ダダ漏れすればいいと思うよ

176 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:24:46.51 ID:3hZl3Wdo.net]
↑ほらな。俺の言ったことを否定したいだけw

177 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:28:18.84 ID:6GvfotlI.net]
そりゃ、否定するよ。矛盾自己肯定だらけだもの
もしかして、あんたって40超えたおっさんで外人にクソガキ呼ばわりされたことない?って気になったり。まあ、違うかw

178 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:34:08.77 ID:3hZl3Wdo.net]
>>117
40超えたおっさんにクソガキ呼ばわりでもされたか?w

179 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:34:25.94 ID:3hZl3Wdo.net]
>>117 じゃなくて >>177

180 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:37:29.49 ID:6GvfotlI.net]
いや、そういう(一部で有名な)有名人がいてな、あんたの属性が似すぎててな。幾つかは知らんが、あんたもそのうちそうなるだろうな
年意外同じだからw 年取ればそれが変わるわけでもないぞw



181 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:40:11.70 ID:3hZl3Wdo.net]
嫌いなやつはみんな一緒。思考回路が単純(笑)

182 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:43:03.63 ID:6GvfotlI.net]
イミフ。なんで「嫌い」とかアホなこと言っているのだか。人のふり見て我がふり直すとかあるでしょ?そういう意味だよ、そういう有名人
誰ともわからないハズなのに「嫌い」とだけの理由にできるとは...さては...ww

183 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:45:02.15 ID:3hZl3Wdo.net]
はいはい。話戻すぜ。

ファイルが見つからない時になぜ * を返すのか?
そういう仕様にした理由
^^^^^^^^^^^^^^^^^^^^^^

manに書いてあるそーです。やつのたわごとを信じる人は
(ネットじゃなくて)manの中から探してみてください。
信じない or 信じたけど裏切られたら、
ここにmanの場所が書かれることはないでしょう(予言)

184 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:46:10.94 ID:6GvfotlI.net]
・やっぱり、探せない
か... うん、なんかよかったww
じゃ、がんばれよ

185 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:50:10.35 ID:3hZl3Wdo.net]
>>184
安心しろ。俺以外の人も見つけられない。
だからここに俺とお前以外の人間が書くこともない。
俺が言ってることが正しければな(笑)

186 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 18:56:04.68 ID:6GvfotlI.net]
ほんと「読めないのな」。よかったはそういう意味じゃない
わざとかと思えなくもないけど、いままでの「読めなさ」からはわざとではないとしか思えない

どう見ても、お前の都合のよいことだな、さすがだよ
場所のレスもらえればお前がいままで知りたかったことがわかり、黙って逃げるだけw(そこにお前の苦悩とかなさげ)
もらえなかったら、お前の中では自己肯定の補強にになるだけとういう。間違いでもな

しょうがないな、1ヶ月後に教えてやるよw何もなかったら1ヶ月後に、この話題はw

187 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 19:02:14.14 ID:3hZl3Wdo.net]
なんなら一年後でいいんやで?w

188 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 19:09:11.60 ID:6GvfotlI.net]
イミフ。下衆い意味で言っていそうではあるがwじゃ、適当な時にな

189 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 19:20:16.01 ID:3hZl3Wdo.net]
それまで別の話題でお会いしましょう(笑)

あ、他の人、manにないのは明らかなんで探さなくていいですよ〜w
時間の無駄でしょうし。

190 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 19:24:11.57 ID:3hZl3Wdo.net]
__ - ____ ________ - ___



191 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 21:48:40.20 ID:9U0C5XME.net]
>>136
bashがそういう仕様にした理由は, shにあわせたからです.
shがそういう動作をする理由は, expand()が0をかえしたときはもとの引数文字列でmakearg()するようにつくられているからです. おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.

192 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 22:28:59.33 ID:Ejuihx1D.net]
ようやくまともなレスがw

>>191
その動き(expandやmakearg)はソースコードから?

補足しておくと俺は「"bashは"なぜそうしたのか?」とは
聞いてなくて、シェルスクリプト(元をたどればsh?)が
どうしてそういう動作をするのかの理由を聞いてる。

で、それは特に理由はないのかな?たまたま最初の実装した人が
あまり考えず、そうしましたぐらいの理由で。
だから理由を探しても見つからないと

193 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 22:36:01.12 ID:Ejuihx1D.net]
まとめ

for i in *.txt; do
 echo "$i"
done

何もファイルがないディレクトリで↑を実行すると
「*.txt」 というファイルが見つかったかのような動きをします。

「*.txt」というファイルだけがあるディレクトリで実行すると
全く同じように「*.txt」 というファイル名が表示されます。

つまり空ディレクトリでも「*.txt」というファイルがあっても
表示結果が全く同じになります。これは驚き最小の原則に反しています。

194 名前:デフォルトの名無しさん [2019/04/08(月) 22:57:42.88 ID:b/SlAWxT.net]
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/glob.7.html

195 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:22:25.12 ID:Ih2qq+NP.net]
の、POSIXのところは
pubs.opengroup.org/onlinepubs/009695299/functions/glob.html
GLOB_NOCHECK
かな?オプション名が意図不明だが説明文からは

196 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:37:03.41 ID:8H4AhNTa.net]
>>194
これを読んでも同じ結論になるわけだけど

> 先に与えた、わかりやすく簡単なルール、 「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、
> オリジナルの UNIX における定義であった。 これはパターンが空のリストに展開されることも許可されていた。 例えば

> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。

なぜ、わかり易く簡単なルールを捨てて、POSIXでは「そのまま変更されずに残されることになっている。 」を
選んだのかが書かれてないんだよね。

197 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:45:50.70 ID:Ih2qq+NP.net]
・探せたが、読めなくて文句つける
か... 探してじゃなくてっぽいけどw
書いてあることが。読めれば」>>152もわかるだろうに。どういう意味で言ったかわからん最小の原則wとかやらにあっているだろう

まあ、単に「認めたくない」だけだろな
何か他にファイルなどがあるとこで、*.hogeなんてファイルがなかったとしよう、
ls *.hoge
でどう動くのが望ましい?この例「だけ」に噛み付くのじゃなく、ちゃんと頭を使って考えような

198 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:50:01.35 ID:8H4AhNTa.net]
>>197

1. 見つからない場合はエラーとなってls自体が実行されない
2. ls "" とみなされる

のどちらかだろうな。

次はあんたが、頭を使ってレスしてくれなw

199 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:52:32.47 ID:8H4AhNTa.net]
>>197
ついでだから、ファイルが見つからない時

for i in *.txt; do
 echo "$i"
done

はどう動くのが望ましいか書いてくれよ。
今の動きや仕様を書くんじゃなくて
どう動くのが望ましいかをね

200 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:53:17.08 ID:Ih2qq+NP.net]
ほんとに脊髄だけで、頭使わないのな
POSIXはシェルスクリプトだけを考えてるわけではないのだよ
ls *.a *.c *.c
で、どれかがあってどれかが無い場合の動作は?よくそれで頭使ってる風に言えるもんだ。



201 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:54:01.05 ID:8H4AhNTa.net]
> で、どれかがあってどれかが無い場合の動作は?

>>198に書いたとおり

202 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:54:41.62 ID:QfzJZ21c.net]
Ruby のglob を使った方が、バグらないので良い!

203 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:55:27.24 ID:8H4AhNTa.net]
空のディレクトリで実行するとこうなるのかw

$ ls *.a *.c *.c
ls: '*.a' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません
ls: '*.c' にアクセスできません: そのようなファイルやディレクトリはありません

204 名前:デフォルトの名無しさん mailto:sage [2019/04/08(月) 23:58:38.45 ID:8H4AhNTa.net]
多分あいつは、
> この例「だけ」
のことしか考えてない予感がするなw

205 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:00:36.62 ID:cRtn1aSe.net]
>>202
そうだね。ファイルが見つからないときは
ちゃんと空のリストを返してくれる。
シェルスクリプトのように、「*」を返すことはないね。

irb(main):001:0> Dir.glob('*')
=> []

206 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:01:15.03 ID:cRtn1aSe.net]
ID変わったけど、俺が ID:8H4AhNTa な

207 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:01:53.02 ID:b0dEtQwc.net]
まだ、ゴネてる。自分の思ったようにならないってだけでよくそれだけ粘れるな
POSIXの仕様に意味があるのはさんざん言った。お前が認めたくないなんて知ったこっちゃない
POSIXの仕様に合わせてそんなのが動くように普通に書けるし、嫌だったらbashのオプションであんたの好きにできるだろうに

>>201
ls: : No such file or directory
ls: : No such file or directory
ls: : No such file or directory
って、出て来るのが望ましいのね
ls: *.a: No such file or directory
ls: *.b: No such file or directory
ls: *.c: No such file or directory
POSIXの人も俺と同じだと思うよw

>>203
イミフ。なにを言いたいの?

なんで、いちいちいちいちいちいち説明教えなきゃならいないねん

208 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:12:14.14 ID:cRtn1aSe.net]
>>207
この質問は無視?

for i in *.txt; do
 echo "$i"
done

はどう動くのが望ましいか書いてくれよ。

209 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:12:42.47 ID:cRtn1aSe.net]
>>207
やっぱりlsの例だけしか考えてないようだね

210 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:15:06.05 ID:b0dEtQwc.net]
その例だけなら、回らないのが望ましいだろな。だが、POSIXはシェルスクリプトだけを考えてるわけではないからしょうがないうちだろな
で?



211 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:16:54.68 ID:b0dEtQwc.net]
>>209
何を言いたいのかわからんな。どゆこと?まさか「正確」と同じパターンじゃないよな?その気しか思えないので具体的に言って

212 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:18:30.84 ID:cRtn1aSe.net]
ついでにPHPの場合

$ php -r "print_r(glob('*'));"
Array
(
)

Perlの場合
perl -MData::Dumper -e 'print Dumper [glob "*"]'
$VAR1 = [];

Rubyと同じく、見つからない場合は
デフォルトでは空のリストが帰ってくる。

213 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:19:17.64 ID:cRtn1aSe.net]
>>210
さっきから

> POSIXはシェルスクリプトだけを考えてるわけではないから

を繰り返してるけど、シェルスクリプト以外とは何の話をしてるの?
そして、シェルスクリプト以外ではどうだって言いたいの?

214 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:20:20.88 ID:cRtn1aSe.net]
>>211
だからお前、"lsの場合では" *だったらエラーがわかりやすいって言ってるだけじゃん。

forの場合では、当てはまらないじゃん。

215 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:20:53.10 ID:b0dEtQwc.net]
>>213
マジか...

216 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:21:12.57 ID:cRtn1aSe.net]
>>215
逃げるなよ

217 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:24:19.08 ID:b0dEtQwc.net]
>>214
ああ、なんだ「シェルスクリプト」の(それも特定な)場合か。「ls」なんて言ってるから他のコマンドとかと思ったぞ
POSIXはシェルスクリプトだけを考えてるわけではないからw
話にならない、POSIXを勉強して出直してね

218 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:24:33.50 ID:cRtn1aSe.net]
C言語めんどくせーなーと思ったら、サクッとソースコード見つかった。
https://qiita.com/sassy_watson/items/03c16bd03b56e5579477

↑のコードの ./*.txt を * に変換したけど、
やはり、空のディレクトリで * と表示されることはなく
何も表示されなかった。

POSIXってほんと何を言いたいんだろう?

219 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:25:50.97 ID:b0dEtQwc.net]
>>216
逃げるも何も「文句をつける対象を理解してない」のにどう相手をすれと?あんたにこれ以上こまごまこまごま教えてなきゃならんのか?
だったら、逃げるよ

220 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:26:21.07 ID:cRtn1aSe.net]
POSIXはシェルスクリプトだけを〜とか、じゃあC言語のことなんですかねぇ
でもC言語でも空のディレクトリで * が返ってくることはないし
ほんと何が言いたいんだかw



221 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:27:47.89 ID:cRtn1aSe.net]
POSIXはシェルスクリプトだけを考えてるわけではないから

→ Ruby・・・空の配列を返す
→ Perl・・・空の配列を返す
→ PHP・・・空の配列を返す
→ C言語・・・空の配列を返す

シェルスクリプト以外は空の配列を返します。

222 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:28:27.37 ID:b0dEtQwc.net]
>>218,220
はあ...最後な
>>194,195をよーく読め。なんでそれがbashでになってるのかも

223 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:29:23.15 ID:b0dEtQwc.net]
以後、脊髄反射マンと呼ぶからなw

224 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:29:27.03 ID:cRtn1aSe.net]
>>222
またそれか。よく読んでも、そうした理由は書いてない。

225 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:29:47.10 ID:cRtn1aSe.net]
>>223
脊髄反射マン必死だなw

226 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:31:21.79 ID:b0dEtQwc.net]
Supports rule 3 in the Shell and Utilities volume of IEEE Std 1003.1-2001, Section 2.13.3, Patterns Used for Filename Expansion.

227 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:32:12.65 ID:b0dEtQwc.net]
>>225
モロ体現してありがたい。オモロイなあんたは

228 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:32:37.61 ID:cRtn1aSe.net]
>>226
何度も言ってるが、
俺が聞いているのは、そういう仕様にした"理由"であって
仕様の場所は聞いてはいない。

ほんと、脊髄反射しかしねーなw

229 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:34:36.17 ID:b0dEtQwc.net]
>>228
言っているけど。「読めれば」そう書いてあるんだけどな。「読めない読めない」言われてもしょうがない
あんただって、「空」だったらマズいときもあるって認めてるやん
本当にただただ「認めたくない」だけなんだな。その「コロ」っとあんたの原点に戻るあたり
まあ、がんばりや

230 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:35:06.66 ID:cRtn1aSe.net]
そして面白いのが、シェルスクリプトは glob で見つからない場合に
検索パターンを返すのに対して、シェルスクリプト以外では
見つからない場合に、空のリストを返すって所だな。



231 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:37:41.48 ID:cRtn1aSe.net]
>>229
お前、マズイときもあるし、マズくない時もあるって
自分で認めてるやんw

ということはお前の主張は、所詮マズイときの例でしかなく
マズくない時には当てはまらないってことになるんだぞ
わかってるのか?お前の主張が崩れてるの

で、シェルスクリプト以外は空のリストを返しているのに
シェルスクリプトだけは、見つからなかった時に * という
文字列を返すという仕様にした理由は?

232 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:39:30.00 ID:cRtn1aSe.net]
結局、一番マトモな理由は >>191が書いた

> おそらく, そういう仕様をきめてからそういう動作をさせたわけではないとおもいます.

これだけなんだよな。特に理由はない。
(深く考えずに)そうしてしまった。

もちろん、正式なドキュメントとして
この理由が、書かれている文書は見つかってないがね。

233 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:42:08.93 ID:cRtn1aSe.net]
あ、みなさん。もし ID:b0dEtQwc を擁護したい人がいるならば
ID:b0dEtQwc が示したドキュメントの中から、
「そういう仕様にした"理由"」を書いてある所を指摘して構わないんですよ?

ないでしょう? 誰も指摘しないもんね。それが証拠だよ。

234 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:42:13.89 ID:b0dEtQwc.net]
何言っているの?
>この仕様、なにか便利なの?
が、お前の原点だろ?それ以後「認めなたくない」のであーだこーだ言っているだけだな

235 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:43:58.23 ID:b0dEtQwc.net]
とうとう誰とも言えない人に頼るようになったか...ww

236 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:46:08.72 ID:cRtn1aSe.net]
>>234
ちゃんと流れを読むように

107 自分:デフォルトの名無しさん[sage] 投稿日:2019/04/04(木) 17:59:04.72 ID:opkeFDjY [4/21]
>>104
聞いてるのは仕様ではなくて、
どうしてそうしたかの理由です。

237 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:50:22.73 ID:b0dEtQwc.net]
>>236
流れというかレスを読めないあんたに言われたくないw
いや、原点の話でしかないな。あんたの都合に(それもあんたの都合の良いようになだけな)合わせる必要性はこれっぽちもないな
とりあえず、原点の問題は解消した&マズい場合もあるそれが理由ってことも解消したってことで、おしまい

238 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:51:41.47 ID:cRtn1aSe.net]
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/glob.7.html

> において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。
> しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。
> bash では、次のコマンドで昔からの振る舞いに設定することができる。
>
> shopt -s nullglob

なぜ昔からの振る舞いから替えたのか?その理由が謎
(理由を明確に述べているドキュメントがない)

239 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:52:47.78 ID:cRtn1aSe.net]
>>237
おしまいなんで、あんたは消えていいです。
1ヶ月後にちゃんと答えてください(笑)

240 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 00:54:45.59 ID:cRtn1aSe.net]
> POSIXはシェルスクリプトだけを考えてるわけではないから

↑これも結局何が言いたいのか不明だったな
まあ、何も考えずに(調べずに)シェルスクリプト以外の言語でも
* を返してるはずだって思い込んだんだろうなw
(実際には見つからない場合は空のリストを返します。)



241 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:01:34.97 ID:b0dEtQwc.net]
なにか勝ち誇って妄想全開のようだが、全然違う
>>195をよく読もうな。>>226と注目すべきとこあげたのに

他の言語でもglobなんて自ら実装したりはしないんじゃないの。単にそのオプションがデフォルトでは設定されていない、オプションが設定できるのは設定すれば同じになるんじゃないの。妄想お疲れさん

242 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:09:06.87 ID:cRtn1aSe.net]
> POSIXはシェルスクリプトだけを考えてるわけではないから

↑これで何が言いたいのかを書けば済む話
それが出来ないのはなぜだろうw

243 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:09:51.04 ID:cRtn1aSe.net]
あ、ちなみに「注目すべきとこ」には何も書いてませんよ。
いつもどおりです。

244 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:15:27.47 ID:b0dEtQwc.net]
ほんとーーにっ、「読めない」のな、この脊髄反射マンっw

245 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:16:58.07 ID:cRtn1aSe.net]
読めないって言わずに、具体的に引用すればいいだけなのに
それをしないのは、結局引用する場所がないからなんだよね

246 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:23:40.88 ID:b0dEtQwc.net]
「無い」から「引用できない」に変わったけど、同じパターンやな。そして前言はなかったことにという前々からの同じパターン

247 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:25:22.47 ID:cRtn1aSe.net]
>>246はとりあえずレスしてみましたってだけで
中身がなにもないことに、皆さん気づきましたか?

248 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:26:56.18 ID:b0dEtQwc.net]
なんか少しは自分を見直すとかあって、ここでもこんなクソ(俺のも含めて)なレスの応酬もなく、見てためになる万人が楽しめるレス、Q&Aになるかと思ったが、無理かやっぱ(偉そう偉そう)
そりゃ無理かっ。なんか急に飽きた、じゃな

249 名前:デフォルトの名無しさん mailto:sage [2019/04/09(火) 01:29:05.84 ID:cRtn1aSe.net]
はい、コイツは何度目かの逃亡宣言です。
また懲りずに来ますよw

250 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 08:51:10.36 ID:1CG1Z7Gt.net]
bashの算術計算で小数を使う方法ってないです?
+=で加算したいんですが



251 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 12:14:47.90 ID:sSiaigIF.net]
>>250
それ俺も欲しいんだよね。

前にやった実装は、小数点以下2位固定だったから
1.23 を 123 にして計算してから、後ろ2桁の間にドットを入れて対応したけど
小数点以下の桁数が1.2とか1.234とかだったら面倒なんだよね。

bcコマンドとか呼び出せば簡単なんだが。

252 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 17:03:23.97 ID:bMTFn+JP.net]
exec 3>&1; exec >&-; exec >&3
たまにこんなのを見ますがこれはどんな時に使うんです?
ファイルディスクリプタ自体は理解しましたがfdの複製や切り替える目的が分からなくて
cmd 2>err.txtは意識せず使えてますが

253 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 17:46:50.14 ID:cVfQRf/N.net]
>>252
不勉強なんで「3」ってfdは知らないんだけど、「>&」ってリダイレクトを
使うと書き込みじゃなくて切替になるんだけど、これを使うとエラー
出力を標準出力に切り替えて標準出力で両方の出力を得たりする
ことができるです

「Command > FileName 2>&1」ってするとエラー出力の内容が標準
出力になってFileNameに両方の内容が書き込まれる
逆に「Command 2> FileName 1>&2」ってすると標準出力がエラー
出力になっるので、エラー出力でFileNameに書き込むことが出来る

で、何に使うのかっていうと、「grep」なんかは検索結果は標準出力に
でるけど「指定されたのはディレクトリだよ」みたいなメッセージは
エラー出力に出される
両方の出力をみて処理したいとかの時にはこれで切り替えて標準
出力の内容を変数に保存しておいて処理するとかに使うです

例が雑でわかりにくいかもだけど、エラーと通常の出力を同じ出力で
使う方法ってことで、あとはスクリプトなんでアイデアしだいなんで

254 名前:デフォルトの名無しさん [2019/04/11(木) 23:20:48.83 ID:smzX9gsy.net]
>>252
tldp.org/LDP/abs/html/x17974.html

255 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 00:07:43.92 ID:XpqpR76r.net]
>>252 はリダイレクトを知りたいんじゃなくて、fd=1 を 3 にコピーして 1 をクローズして再度 3 から 1 にコピーする意味
が何なのかを質問しているんだと思う。
結局もとのファイルに繋ぎなおすだけだよね。
一旦クローズするから flush されるとか?ならわかるんだが、実際どうなのかわからん。

256 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 00:45:21.11 ID:L59U/aC1.net]
ファイルディスクリプタに関しては
逆引き辞書が必要なんだと思う

○○をしたい時 → こうします。っていうやつ

257 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 03:08:23.09 ID:WO5SLys3.net]
ファイルディスクリプタ(FD) 3番からは、システムが使うけど、ユーザーも使うことができる。
FD0 : 標準入力、FD1 : 標準出力、FD2 : 標準エラー出力

端末に、ls と打つと、
1. シェルが、lsコマンドのプロセスを起動して、それに、FD0〜2 を渡す
2. lsプロセスは、FD3 を使って、ファイル一覧を作って、FD1 に出力する

主なFD3 の使用方法は、標準入力を、ファイル・キーボードの2つで、切り替えて使いたい時

標準入力をファイルからにすると、キーボード入力が出来なくなるため、
一旦、標準入力(FD0)をFD3 にして、ファイルから入力して、済んだら元に戻す

こんな事を一々、シェルスクリプトでやるよりも、Ruby でやればよい。
FD何番を使っているとか、意識せずにすむ

258 名前:257 mailto:sage [2019/04/12(金) 04:14:55.73 ID:WO5SLys3.net]
exec 3<&0 < a.txt # FD3 から入力

while read LINE
do
echo "--- ${LINE} ---"
done

exec 0<&3 3<&- # 標準入力を元に戻し、FD3 を閉じる

# 上のようにも書けるが、下の方が、標準入力のファイルディスクリプタ(FD)0 をいじらないので、安全

exec 3< a.txt

while read LINE 0<&3 # FD3 から入力
do
echo "--- ${LINE} ---"
done

exec 3<&- # 閉じる

「UNIX シェルスクリプト・コマンドブック 第2版、山下哲典」の、exec の説明の所に書いてある。
第3版には載っているかどうか、知らないけど

259 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 13:25:25.09 ID:L59U/aC1.net]
もう少しまともに説明できるやついないのかな・・・

260 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 13:27:28.90 ID:I415couP.net]
宿題は自分でやろうな



261 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 16:22:09.16 ID:zYICSkfs.net]
CTRL+Cのトラップについて教えて

以下のスクリプトの時、実行してすぐにCTRL+Cを押すと
#!/bin/sh
set -e
sigint() { echo sigint; }
trap 'sigint' INT
#trap 'echo $?' EXIT
sleep 10

こんな感じでバラバラなんだけどさ

dash・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
bash・・・トラップできる。終了コード130
zsh・・・トラップできる。終了コード130
ksh・・・トラップできない。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると258と表示される。トラップできず)
mksh・・・トラップできる。終了コード0
(コメントアウトしてるEXITのtrapを有効にすると0と表示される。トラップできる。)
posh・・・トラップできない。終了コード130
(ただしコメントアウトしてるEXITのtrapを有効にするとトラップできる)
yash・・・トラップできる。終了コード130
(コメントアウトしてるEXITのtrapを有効にすると386と表示される。トラップできる。)

なんでこうなって、どれが正しい動きで、どれでも同じ動きさせるには、どうすりゃいいの?

262 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 16:46:27.11 ID:2vVcl4ag.net]
宿題は自分でやろうな

263 名前:デフォルトの名無しさん [2019/04/13(土) 06:04:26.25 ID:blG/UTRx.net]
Ruby では、カスタムハンドラを定義した場合、終了しない。
デフォルトのままなら、Ctrl+C で終了する

つまり、デフォルトハンドラから、カスタムハンドラへ付け替えたため

sleep 7 #=> ここではデフォルトハンドラだから、Ctrl+C で終了する

previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end

print "previous_handler = "
p previous_handler #=> "DEFAULT"

sleep 7 #=> ここでは、カスタムハンドラへ付け替えたので、終了はしない

264 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 06:40:14.96 ID:mImzJn5T.net]
それはシェルスクリプトも同じだろうな。上の終了しているのは set -e しているからじゃないのかな
シェルスクリプトは子プロセスを起動していてシグナルを受けるのが子プロセスでが多くタイミング的に〜以下省略

265 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 07:34:12.37 ID:bIdtQ5MW.net]
> set -e しているからじゃないのかな
それをわかってるから、サンプルコードにも入れてるんだけどねw

問題はそこじゃなくて、なんでシェル毎に挙動違うんだよ!?
どれが正しいんだよ!?という話なわけで

266 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 07:57:58.58 ID:i5T2wQ7z.net]
CTRL-Cを入力するタイミングが下手すぎるって話だろ
まさか手入力じゃあるまいな?

267 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 08:08:06.94 ID:bIdtQ5MW.net]
>>266
手入力しないでやる方法を教えてくれ!

268 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 08:08:38.43 ID:bIdtQ5MW.net]
いやkill使うのは知ってる。それをどういう風に使えば、
手入力と全く同じことを再現できるのかという話だ。

269 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 08:12:44.72 ID:bIdtQ5MW.net]
2つの端末を使って一方で実行してから
もう一方で(手入力で)実行するっていうのは
結局手入力してるのと変わらないし、

1つのスクリプトでkillすると、
それこそわけわからんことになる。
イベントハンドラ内でkillするか、違う場所でkillするか
シェルによって挙動が違う

270 名前:263 mailto:sage [2019/04/13(土) 08:51:59.71 ID:blG/UTRx.net]
Ruby では、

previous_handler = Signal.trap( :INT ) do
puts "シグナルハンドラへ入った!"
end

print "previous_handler = "
p previous_handler #=> "DEFAULT"

# 自プロセスへシグナルを送ると、カスタムハンドラが呼ばれるが、終了はしない
Process.kill :INT, Process.pid

Signal.trap( :INT, previous_handler ) # 元のハンドラへ戻す

sleep 7 #=> ここでは、デフォルトハンドラへ戻したので、Ctrl+C で終了する

「改訂2版 Ruby逆引きハンドブック」では、もっとややこしい記述をしてる

シグナルハンドラはグローバルだから、
他のスレッドに変更されないように、Mutex で排他制御してる



271 名前:263 mailto:sage [2019/04/13(土) 09:02:30.89 ID:blG/UTRx.net]
シングルスレッドでは、sleep 7、としてる間に同時に、

Process.kill :INT, Process.pid
と、自プロセスの命令を実行できない

マルチスレッドなら出来るのだろうが、マルチスレッド・プログラミングはややこしい!

272 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 09:27:42.11 ID:bIdtQ5MW.net]
>>271
マルチスレッドのほうが楽だな。

それらをマルチプロセスでやってくれ。
子プロセスは自分で作成したものだけじゃなくて
既存のプログラムも使い、バックグラウンドプロセスも使ってみること

273 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 09:36:25.97 ID:bIdtQ5MW.net]
zshの謎な挙動はこれが原因か?
https://fumiyas.github.io/2013/12/05/trap-exit.sh-advent-calendar.html

> でました、zsh の非互換! zsh はシグナルハンドラー※内で終了すると、 EXIT ハンドラーを実行してくれません。酷い。 (※この例では SIGINT のデフォルトのシグナルハンドラー)

> こんな感じで bash, ksh, zsh には微妙な動作の違いがあったりするので、 ちょっと変わったことしようとするときは特に注意しましょう。

274 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 09:39:48.45 ID:bIdtQ5MW.net]
読みづらいなw

$ zsh -c '
atexit(){ echo "Bye!"; };
trap atexit EXIT;
trap "trap - EXIT; atexit; exit -1" TERM;
kill -TERM $$
'

275 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:31:16.12 ID:6byp94bf.net]
全てのシェルで適切に終了処理をするって難しいな・・・

276 名前:263 mailto:sage [2019/04/13(土) 11:39:28.75 ID:blG/UTRx.net]
Ruby で、at_exit に、終了処理を書いておけばよい

シェルスクリプトで、書く必要がない

277 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:55:58.29 ID:6byp94bf.net]
時たま出来てしまうゾンビは何が原因なんだろう?
kill -TERM 0 してるから全部死んでくれるはずなんだが・・・

278 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:57:21.41 ID:6byp94bf.net]
あ、バックグラウンド処理とかしてる
そしてCTRL-Cで強制終了した時の話
ゾンビだから消せなくて困る

279 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 13:02:33.69 ID:blG/UTRx.net]
ゾンビは、子プロセスが終了して、
OS が、その終了コードをどう扱えば良いのか、わからないから、ひとまず保存している状態

普通なら、子プロセスの終了コードは、親プロセスへ渡されるのかな?

ゾンビが生まれた時に、親プロセスがどうなっているのか?

280 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 14:09:25.74 ID:mImzJn5T.net]
>>265
お前には言ってない

>>266
タイミング的に子プロセスが受け取るのかシェルが受け取るのかってことなんだけどね。コマンドを実行中なのかシェルが実行中なのか
set -e を使うからややこやしい、シグナルの基本をわかってないんじゃないんだろなとしか思えんけど。コマンドがINTシグナルで終了した場合、シェルが擬似的にシグナルハンドラ呼んでるっぽいかな(もしくは自らにINTシグナル出してるのかな?)

何したいのか知らんけど、set -e 使わずに、INTシグナルハンドラでexitすればいいんじゃないの



281 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 14:29:06.39 ID:6byp94bf.net]
>>279
その理屈はわかるんだけどねぇ

まず必ずゾンビになるんじゃなくてたまになる。だからタイミングの問題
CTRL-Cを押した時になる。通常の処理では発生しない。
CTRL-Cのハンドラでは作業ディレクトリの削除を行っている。

ワーカー(& によるバックグラウンド処理)が複数ある。サブシェルを使ってるせいか
同じな名前のプロセスがたくさんいる。ワーカーを生成した後はwait(引数なし)を実行している。
ゾンビの存在は確認しているが、誰がゾンビになったのかその親が誰かはよくわかっていない。
(たまにしかならんので探しにくい)ただし内部で呼び出してるtrやmvがゾンビになったこともある。

CTRL-Cのハンドラでは作業ディレクトリの削除の他、多数生きてるワーカー(労働者)を
皆殺しにするためにジェノサイド(kill -TERM 0)を発動している。
ただし労働者を消した後に、労働者の作業場(作業ディレクトリ)も片付ける
必要があるので自分だけは死なないようにしている。(trap ':' TERM)
実際にはもっと複雑だけど、死なないのは自分だけなはずなんだけどな

バグでゾンビになったこともあるので記憶が曖昧だけど
(バグを修正した今は)zshだけしか発生しなくなっているかもしれない。
もしかしたらzsh内蔵のkillにバグがあって殺す順番とか
子供が生まれるタイミングで発生してるとか?

でもまあなんだかんだでシンプルにしていったら
ゾンビの発生率も下がってきたし諦めるかな

282 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 14:40:48.63 ID:6byp94bf.net]
うーん、おかしい。trってワーカー(バックグラウンドプロセス)の
中で使っているとはいえ、パイプの右側でしか使ってないんだが?

283 名前:279 mailto:sage [2019/04/13(土) 15:17:27.06 ID:blG/UTRx.net]
漏れにも、ゾンビになるプログラムとならないプログラムの、違いがわからない

ゾンビになるメカニズムを検索してみれば?

284 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 15:21:25.04 ID:6byp94bf.net]
「ゾンビになるメカニズム」で検索してみた

管理テーブルにデータが残ってるだけなら
消す方法(もしくは隠す方法)があってもいいと思うんだがねぇ

285 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 16:27:29.48 ID:i5T2wQ7z.net]
>>284
wait()すりゃいいんだよ。
普通はinitが拾ってくれるんだが、誰にでも好き嫌いはあるということだろう。

286 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 16:33:30.75 ID:mImzJn5T.net]
>>280
>コマンドがINTシグナルで終了した場合、シェルが擬似的にシグナルハンドラ呼んでるっぽいかな(もしくは自らにINTシグナル出してるのかな
違うか。control-cでのINTシグナル送るやつの文献ってどこぞにあるかなあ

287 名前:279 mailto:sage [2019/04/13(土) 17:05:08.41 ID:blG/UTRx.net]
Ctrl+C が、子プロセスやパイプラインのジョブグループに、

どのように伝達されていくかとか、難しい

288 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:21:22.57 ID:6byp94bf.net]
いろいろ間違っていた。訂正する。

まずCTRL-Cは関係なさそう。実は正常な動作でも(プログラム実行中に)ゾンビができることがあった。
ゾンビができると今は無限ループ状態になるので気づいたが、ちょっと前まではプログラムの構造上、
ゾンビを放置して正常終了していたと思う。zshではあまりテストしていなかったから気づかなかった。

バックグラウンドプロセスが関係あるかないかはよくわからない。
何回か動かしているがバックグラウンドプロセスを使用しない場合は今の所再現していない。

あとなんかWSLとのからみな気がしてきた。
速度が違うから断定は出来ないがLinuxだと再現しない。

今の所、WSL環境にて、zshで、バックグラウンドプロセスを使用し、
その中でパイプを使った処理を行うと、まれにゾンビプロセスができる。

289 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:27:02.88 ID:i5T2wQ7z.net]
>>286
シグナル一般の話ではなくてttyの話だったら、詳解Unixに載ってた気がするが、
当然そのくらいは読んでるよね。

290 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:36:42.95 ID:mImzJn5T.net]
>>287,289
なるほど
すまん、読んでない。遠い記憶では読んでいたような気もするが忘れたので読んでない



291 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:43:50.87 ID:6byp94bf.net]
再現コード出来た。このコード、なにか問題有る?

これをWSL+ZSHで実行すると、人目につかず永遠とbcコマンドで1+1を計算し続け、
CTRL-Cで停止するときにbcコマンド含めたプロセスグループ全体をkillする(はず)
これをやるとbcコマンドがゾンビ化する。(Linuxだとしない)

#!/usr/bin/zsh

int() {
echo kill
kill -TERM 0
echo killed
exit 1
}
trap 'int' INT
trap ':' TERM

worker() {
while :; do
echo '1+1' | bc > /dev/null
done
}

for i in $(seq 16); do
worker &
done

echo wait
wait

292 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:44:42.87 ID:6byp94bf.net]
やっぱり詳解Unixは買わねばいかんか・・・

293 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:54:41.69 ID:6byp94bf.net]
dash、bashでは再現しない。kshでも再現した。
いずれもWSLのみ。これもうWSLの問題だろ・・・
きっとWSLのバグをzshとkshが踏んじゃったんだな

294 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 17:55:48.18 ID:6byp94bf.net]
これ関連してるのかな?

Why are there many zombie process in windows subsystem for linux(WSL)? How to kill them totally?
https://superuser.com/questions/1419292/why-are-there-many-zombie-process-in-windows-subsystem-for-linuxwsl-how-to-ki

295 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 18:09:57.29 ID:6byp94bf.net]
次のWindows 10のリリースで治ってんじゃないですかねー
もういいか

Zombie zsh processes left behind that consume 8 % CPU each
https://github.com/Microsoft/WSL/issues/3940

Killing a defunct zombie leaks the zombie process forever
https://github.com/Microsoft/WSL/issues/3741

https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-18267
Fix issue where zombie process may not be reaped and remain indefinitely.

296 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 14:12:09.49 ID:uU4FE3J6.net]
read -r text <<HERE
printf [%s]\n it's a "s'm'a'l'l 'w"o'r"l'd"
HERE
$text

↓出力

[it's]
[a]
["s'm'a'l'l]
['w"o'r"l'd"]

この仕様、うまくすればなにかに使えそうな気がしている。
文法エラーにもならずevalとはまた違った挙動だ。
とゆうかどういう仕様なんだろう?

297 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 17:50:16.12 ID:21MN1CXY.net]
$ cat b.pl
#!/usr/bin/perl -w
print("$_\n") foreach @ARGV;
$ cat c.sh
#!/bin/bash

IFS=+
./b.pl a b c
./b.pl a+b+c
while read -r v ; do $v ; done <<EOF
./b.pl a b c
./b.pl+a+b+c
EOF
$ ./c.sh
a
b
c
a+b+c
./c.sh: 行 6: ./b.pl a b c: そのようなファイルやディレクトリはありません
a
b
c
$ # うん、なかなか面白いね。どうしてこうなるかは man に書いてあるよ。
$ # 簡単に言うと、単語の分割というのは最初に行われるものと
$ # 変数が展開された後に行われるものがあるんだ。
$

298 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:41:03.59 ID:ZXb+3x2v.net]
シェルスクリプト(対話操作含め)が実行される手順って結構複雑な割に他の言語よりずっと単純だから
理論から実践(この場合はシステム処理とか?)への、かなり良い足掛かりになるよね。

299 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 01:20:29.51 ID:Has+aDs1.net]
www.sample/{01..10}.jpg
これが書かれたtxtを読み込んでブレース展開して出力する方法ないです?

$ printf "%s\n" < foo.txt
適当にこうやっても上手く行かなくて

300 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 01:26:56.31 ID:S3Y2FMky.net]
ないです



301 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 01:40:13.99 ID:0pnJkrzy.net]
eval $(echo -n 'echo '; cat foo.txt) とか?

302 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 02:15:47.05 ID:FhppS/ri.net]
sh << END
printf "%s\n" $(cat foo.txt)
END

303 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 02:24:15.12 ID:FhppS/ri.net]
echo "printf '%s\n' $(cat foo.txt)" | sh
でよかった

304 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 08:49:56.51 ID:Hx8930Ug.net]
eval 'echo '$(<foo.txt)

305 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:59:40.33 ID:Has+aDs1.net]
>>304
内側のリダクレクトが何かと思えば $(cat file)の変形があったとは
複数行も対応してるしこれなら行けそうですわ

306 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:47:47.19 ID:Hx8930Ug.net]
ごめん、もうちょっとシンプルに書けた。
eval echo $(<foo.txt)

307 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 02:03:07.74 ID:KyfckjPA.net]
>>306
これいいね!
……正直,実際に使う機会は少なそうだけど
シェルの処理をしっかり把握してないと思い付かない回答。

308 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 11:54:54.98 ID:c8JzoHXu.net]
例えばさ、

bash -n -c 'a=(a b c)'
↑これはbashとして正しい文法だけどさ

sh -n -c 'a=(a b c)'
↑これは文法エラーになるじゃん? 実行していなくても

これみたいに、実行してないのにあるシェルではOKで
別のシェルではNGみたいな文法って他に何かしらない?

309 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 12:22:26.76 ID:KyfckjPA.net]
>>308
君と似た例ではあるが;

$ bash -n -c '%=a'
$ sh -n -c '%=a'

310 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 15:47:58.78 ID:8XF5nS5J.net]
eval 'printf "%s\n" '$(cat foo.txt)
これprintfをシングルクォートで囲まないと改行されないのね
www.sample/01.jpgnhttp://www.sample/02.jpgnhみたいな結果ばかりでちょっと悩んだ
zsh使ってないけどこれはforの後の二重括弧に空白が必要だとかなんとか
{には空白がいるのにfor((が通るbashの方が不自然なのか



311 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 18:28:36.64 ID:i3ajZQCG.net]
export -p と export の違いってなに?

312 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 18:36:38.02 ID:oyNQbI7u.net]
\n の処理をだれがいつやらかすのかってとこかな。printfにやらせたいprintfに \n のまま渡さなくてはという感じ
eval printf "'%s\n'" $(cat foo.txt)
eval printf '%s\\n' $(cat foo.txt)

313 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 23:58:52.60 ID:htDMK2AO.net]
そもそもなぜ eval を使うのかというと、コマンドラインの解釈において
ブレース展開がコマンド置換より前だから
コマンド置換してからブレース展開するためには
eval を使って解釈を最初からやり直す必要があるためで
しかしながら printf と "%s\n" にはその必要がないのだから、つまり
printf "%s\n" $(eval echo $(<foo.txt))
でいいんじゃないかな。

314 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 08:44:15.00 ID:q7kwqzjj.net]
ダブルクリックで実行できるのとできないシェルスクリプトの違いって一体
whileとcaseで簡易メニュー作ってたんだけどダブルクリックしても画面に何も出ない上に
起動されたbashがCPUがかなり食ってた
無論端末から実行はしっかり通る
ls結果を外部保存するような単純な奴はダブルクリックでも正常通りなんだけど

315 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 13:31:54.32 ID:zhMneqp1.net]
シェルスクリプト関係ない

316 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 18:19:48.00 ID:/EY0Mv6x.net]
>>311
マニュアル嫁
つーか実行すれば一目瞭然だぞ
……と思ってやってみたらexportはオプション成しで起動すると
export -pと同じ動作をするんだね

317 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 18:22:18.78 ID:/EY0Mv6x.net]
>>314
使ってるGUIシステムがX11なら
x-terminal-emulatorなんかを使って仮想端末を立ち上げてからじゃないと
メニューみたいな端末出力を必要とするものは期待した通りに動かないよ。

318 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:23:01.28 ID:zVNwrrWL.net]
>>316
そうマニュアルに書いてあるだろう。なんのボケ?w

319 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:51:37.02 ID:zhMneqp1.net]
模範解答

export -p がどう表示されるかはPOSIXで規定されていますが、
export がどう表示されるかは未定義です。(同じとは限りません)
つまり、exportがどうなるかはシェル毎に異なります。
pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#export

更にexport -pはbashではPOSIXに反してdeclareで表示されます。
これらは各シェルのマニュアルには書いていません。

320 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 22:49:27.06 ID:/EY0Mv6x.net]
模 範 解 答



321 名前:デフォルトの名無しさん [2019/04/24(水) 08:22:12.86 ID:6O+4Q2Ek.net]
bashで abc*が展開できると出来ないときがあって
それをテストするのに
[  "abc*" = 'abc*' ]
とやりたいのにできません
どうやったらできますか?

322 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 17:25:06.62 ID:bQUFU5ml.net]
>>321
何がどうできないのかよく分からないけどシングルクォートとダブルクォートは
処理が違うから「=」にならないと思うよ
シングルクォート側は文字列なので「abc*」っていう文字列になるけど
ダブルクォート側は解釈されるので「*」にあたるものが存在しないと何もない
状態なので「abc」って文字列になるんじゃないかな

323 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 17:40:21.19 ID:uakSx5ac.net]
は?

324 名前:デフォルトの名無しさん [2019/04/24(水) 17:42:31.98 ID:6O+4Q2Ek.net]
abc*が展開できない時はそのままabc*になるのでそう思って書いてみました

325 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 18:28:22.30 ID:6T3A9gnL.net]
abc* というファイルが実際にあるというというのは除外でいいのね?

326 名前:デフォルトの名無しさん [2019/04/24(水) 18:32:06.10 ID:6O+4Q2Ek.net]
ええです

327 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 18:45:29.21 ID:6T3A9gnL.net]
ダブルクォートで囲んでも囲んじゃうとglob展開は行われない変数などのようには。(>>322見るとデフォでは??展開できるなんかあっったかなあ)

[ "$(echo abc*)" = "abc*" ]
とかかな
any='abc*'; [ "$(echo $any)" = "$any" ]

328 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 19:43:12.00 ID:uakSx5ac.net]
日本語がダメな奴と日本語がダメな奴が
初心者同士の会話をしてる。
ついていけない。

329 名前:デフォルトの名無しさん [2019/04/24(水) 19:56:20.38 ID:6O+4Q2Ek.net]
>>327
ありがとうございます
echoを使わずできたらお願いします
無理なら諦めます

330 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:25:30.92 ID:6T3A9gnL.net]
>>328
答えてやれよ。マウントとりではなくて。ふたレスもするくらいな
(>>322は正直お前の>>323と同じだが、それだけじゃなというのと、もしかしてもしかしてもしかしてだけど)



331 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:29:18.25 ID:6T3A9gnL.net]
>>329
echoを使わずの条件がわからない。他にもやり方があるけど、複数行にだったり
stackoverflowではなんか凝ったのより ls が人気みたい。見た目でわかりやすからかな

332 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:08:22.56 ID:uakSx5ac.net]
何をやりたいのかわからない。

端末にecho *って入力して
あぁ、展開されましたねって
確認すりゃいいだけじゃんか

なんで[ ]とか使うのか

333 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:16:12.73 ID:6T3A9gnL.net]
>>332
お前が何言っているのかわからない
シェルスクリプトで判断してなにかその後にする部分のことを聞いてきているのだろう。その判断するとこだけを書いているのだろうと読むと思うけど

(日本語どうの言うなら、他人の日本語より自分の日本語を疑った方がいいようなw)

334 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:29:00.43 ID:6T3A9gnL.net]
>bashで abc*が展開できると出来ないときがあって
abc* としても、該当するものがあってglob展開する場合と、該当するものがなくてglob展開しない(出来ない=globのまま)ときがあって
>それをテストするのに
展開できなかった場合はマズいので(とかなんとで)、それをテストするのに
[  "abc*" = 'abc*' ]
>とやりたいのにできません
としてみましたが、思ったようになりません

だよ。たぶんw

335 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:15:49.65 ID:kFXKi6KY.net]
Ruby で該当するファイル数を数えれば?
それが、0 なら、該当なし

p Dir.glob( 'C:/Users/Owner/Documents/*.txt' ).length #=> 0

336 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:19:13.46 ID:uakSx5ac.net]
>>333
お前はさ、なぜこういう質問に至ったかまで考えられてないんだよ。
意味不明なんだよ。

>>334
そう思うやろ?だったら意味不明って気づかなきゃ。

> 展開できなかった場合はマズいので

つまり、現時点で「展開できてる」はずなわけだよ。
展開の仕方を知ってる。
なのに展開できないと言ってる。意味不明だろう?

337 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:37:08.62 ID:6T3A9gnL.net]
>>336
なにを言っているのかさっぱりわからん。意図目的とすることがな。いや後半はまったくわからん、お前の頭の世界の話だけのようで。ちょっと怖いぞw
ただマウントとりたいだけというのはわかるぞw

338 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:39:35.88 ID:6T3A9gnL.net]
読めなかったらのをごまかすためにむちゃくちゃ言っているんだな
うん。そゆことにしとこ。でないとアレだなということで

339 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:49:53.80 ID:uakSx5ac.net]
だーかーらー、いつもどおりのやってるやり方で展開して
それをチェックすればいいだけだろと

340 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:04:43.57 ID:6T3A9gnL.net]
ぜんぜん「だーかーらー」でもなんでもないな。お前の言っていることはわからん
どうも自称初心者じゃない自称日本語ダメじゃない人の自分の脳の世界でなんか言ってるとしか見えない

お前の言う初心者の ID:6T3A9gnL は >>327 ので不満があるようだがそれでも答えになってるらしいぞ

お前の変な言い分はお前のためでしかなく、他に対する目的も意味もない。マウントとりたいだけのお前には意味があってもな。マウントとりたいから延々続くのか?



341 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:06:17.58 ID:6T3A9gnL.net]
誤 お前の言う初心者の ID:6T3A9gnL は
正 お前の言う初心者の ID:6O+4Q2Ek は
なんかすまん

342 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:14:58.44 ID:uakSx5ac.net]
> お前の言う初心者の ID:6T3A9gnL は >>327 ので不満があるようだがそれでも答えになってるらしいぞ

だからなんなのか知らんが、お前ら、いつもどおりの展開ってecho使ってんのか?
使ってないだろ。いつもどおりの使えばいいだけなのに、
悩んで(?)別の方法模索してるから、意味不明だって言ってるんだよ。
質問者にも回答者にも

343 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:22:52.75 ID:6T3A9gnL.net]
むちゃくちゃww
自分で>>332って書いているのに
言うにことかいて「だからなんなのか知らんが」だってwwwもろマウントとりたいだけ、マウントとり失敗してわけわからんだけだな

344 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:54:51.80 ID:uakSx5ac.net]
展開されるかどうかの確認はそれでいいし、
プログラムでならいつもどおりのやり方で展開すればいい
何をやりたいのかわからないのに、どちらの話かわかるわけないだろ
どちらにしろ「は?」なわけだが

345 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:00:15.44 ID:SQ7d9Ur4.net]
すでにお前に対して「は?」だよ

346 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:02:54.32 ID:zUwJ78d6.net]
っていうか、正しいやり方知らんのか?
echo使って検査するんじゃないぞ(それじゃできない)

347 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:05:34.10 ID:zUwJ78d6.net]
それじゃできないっていうのはコレな

> abc* というファイルが実際にあるというというのは除外でいいのね?

abc* というファイルが実際にあることも考慮するやり方をするべき
そうすれば正解にたどり着く

348 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:16:01.39 ID:2wE9GZDh.net]
ダメな場合もあるのはわかって聞いているんだけど。本人がいいっていったからそれに合わせてだよ

だれかみたいに「すべき」とか強要するつもりも知識自慢したくてたまらないとかもないからな。その最後のといい、なんか偉そうにしたいのね、質問者の意図とか読まずに、知識自慢するためのw質問者の他の情報も引き出そうともせずに

shopt使うとかいう知識自慢だったら笑うぞ。別にabc*という実ファイルがあった場合でものshopt使わずにの方法もあるけどな

349 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:21:59.00 ID:zUwJ78d6.net]
本当に差があるやつとの会話は疲れるw

> bashで abc*が展開できると出来ないときがあって
展開でするやり方知っってるよな?それ使え

> それをテストするのに
展開できないことのテストはいらん

お前が知ってるはずの、展開するやり方を使って、
-f (もしくは -d や -e 等)で、その名前の
そのファイルが実査に有るかどうかを調べるだけ

shoptとかもしらん

350 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:22:22.15 ID:zUwJ78d6.net]
実査 -> 実際



351 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:34:11.93 ID:2wE9GZDh.net]
やっぱり、まだわかってないんだな、「展開〜」という質問を
shoptとかもしらん....
-f とか、まさかそんな「当たり前の」こと言い出すとは
まさか「その程度」だとは思わなかったわっ。なんだろこれw

352 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:03:28.37 ID:zUwJ78d6.net]
× shoptとかもしらん
○ shoptとかもいらん

なんで当たり前の正解を言ったら
お前悔しがってんの?w

知識自慢したのお前じゃん
そして「は?」の意味わかっただろ。
全く見当違いのことをやろうとして、
全く見当違いの解答をしてるんだよ。
クソガキどもが

353 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:09:13.03 ID:2wE9GZDh.net]
そりゃ、お前が悪い。shoptもな
なんかもったいぶってるだけでだからな。自覚がないのか?さんざん偉そう俺は初心者じゃないってだけの、質問から外れたことばっかり言っている
お前が>>349>>352で書けば終わってることだからな

俺は別にお前みたいな知識自慢したくてなんてないぞ。おまえがさんざん俺偉いというだけのような&「そうすれば正解にたどり着く」とかうやむやなこと言うからだろうに

とうとう、「クソガキども」のお言葉いただきましたっ。なんだじじいかw自称他人を自分より劣ると言える

354 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:11:10.67 ID:2wE9GZDh.net]
誤 お前が>>349>>352で書けば終わってることだからな
正 お前が>>349>>332で書けば終わってることだからな

355 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:15:09.23 ID:zUwJ78d6.net]
だから何をやりたいのかわかったのは
それ以降のレス読んでからだろうが

意味不明だし、馬鹿がクソな回答しやがるし
ほんと低い

356 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:17:21.45 ID:2wE9GZDh.net]
>だから何をやりたいのかわかったのは
イミフ。おまえもたいがい日本語ダがメだぞ?w いままでのレスの数々でも

やっぱり「俺高いお前低い」とは言いたいのね。なんでそう言いたいのか自分に問いてみような

357 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:19:37.90 ID:2wE9GZDh.net]
ああ、「クソガキども」のお言葉いただいたので(なんでそんなこと言いたくなったのか自分に問いてみようなw)、もういいや

358 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:20:59.82 ID:zUwJ78d6.net]
> なんでそう言いたいのか自分に問いてみような

邪魔だからだな。頭悪そうな兄ちゃんがきて
頭悪そうな会話をしてる。そんな感じだ。

359 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 01:23:14.93 ID:o77IOYp5.net]
そして誰もいなくなった

360 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 04:25:44.56 ID:Q6RVSnnY.net]
質問する側が馬鹿すぎると馬鹿を引き寄せるだけなんだよなあ。
まず、まともな質問をするために man を読もうよ。



361 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 09:00:30.11 ID:XBKhyEHe.net]
よくわからんが、なんで -f が出てくるんだ?
ファイルの有無が問題じゃないんだろう?
globしたかしないかが問題なんだろう?

362 名前:デフォルトの名無しさん [2019/04/25(木) 10:40:29.00 ID:xhj9dxYD.net]
""で囲むと展開されなくて""で囲まないと複数の引数として認識するから出来ないので諦めますね

363 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 10:43:57.02 ID:zUwJ78d6.net]
>>361
globでファイル名に展開されるかどうかは
ファイル(ディレクトリなども含む)の有無で決まるから

364 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 12:49:51.00 ID:XBKhyEHe.net]
>>363
こういう奴がセキュリティホールを作り込むのかね

365 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:29:45.25 ID:wpotMNKo.net]
そもそも、ファイル名に、半角英数字、- _ (base64url encoding)以外を使うような、
システムを作る奴が悪い

さらに、Windows では、大文字小文字だけが異なる、ファイル名も作れないし。
例、aB, Ab

366 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 14:58:23.69 ID:zUwJ78d6.net]
>>364
セキュリティホールを作るのは、
お前のように正しく理解してないからだよ。

問題が有るというのなら言ってみな。

367 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 16:49:38.33 ID:hZ9DlonC.net]
なぜ自信満々なのか、馬鹿の頭の構造はわからないな。

368 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 20:07:34.96 ID:zUwJ78d6.net]
反論がないから

369 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 03:55:26.84 ID:N1bTr2ZN.net]
馬鹿なレスだな

370 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 04:25:43.51 ID:Y1o8+v/L.net]
シェルの歴史に詳しくなれるサイト見つけた
https://www.in-ulm.de/~mascheck/



371 名前:デフォルトの名無しさん [2019/05/03(金) 15:34:52.90 ID:m+FxQhlt.net]
bashのさ、<() ってさ、sort test.txt みたいなのを sort <(cat test) って書けるから
リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
そうとはかぎらないよな?例えば、同じファイルを二回読み込むとかさ
そういうのってやっぱ一時ファイル作らないと無理だよな?

372 名前:デフォルトの名無しさん [2019/05/03(金) 18:08:45.95 ID:/bmAVHAq.net]
>>371
パイプの概念がないのか?

sortコマンドもどこでどうなったのかを気にしないで使うというのもよくわからない。

373 名前:デフォルトの名無しさん [2019/05/03(金) 21:10:21.19 ID:m+FxQhlt.net]
>>372
知らんがな。俺に言うなや。
そのツールが、そうなってるんだから
sortコマンドはただの例だからこれ以上追求しなくていい

てか、複数ファイルを入力したり複数ファイルを出力したりすることだって
あるんだから、必ずパイプで解決できるわけじゃない
diffコマンドとかそうだろ

374 名前:デフォルトの名無しさん [2019/05/03(金) 21:28:48.60 ID:wXl0ssRE.net]
同じ出力のデータを分けて処理することは可能だが、なぜ魔法文にこだわっているのかがわからない。

375 名前:デフォルトの名無しさん [2019/05/03(金) 21:31:24.78 ID:m+FxQhlt.net]
>>374
その話は関係ないから打ち切ろう

あるツールが「引数で指定した同じファイルを二回読込みしている」
そういう処理をしている。(そのツールの修正は不可能)
ここまでは理解しているかな?

376 名前:デフォルトの名無しさん [2019/05/03(金) 21:32:23.63 ID:m+FxQhlt.net]
まあ結論としては無理ってわかってんだけどさ
bashの拡張を持ってしても

377 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 21:35:32.54 ID:m+FxQhlt.net]
あ、一時ファイル(FIFOファイル含む)作りたくないっていうのが最終的な希望ね。
メモリだけ(tmpfsや類似のメモリベースのファイルシステムやブロックデバイス除く)でやりたい。
無理ってわかってるけど。

378 名前:デフォルトの名無しさん [2019/05/03(金) 23:01:24.06 ID:wXl0ssRE.net]
ただの無知か。

379 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 09:14:36.29 ID:HnSBFy63.net]
>>371
例がないと何を言っているか意味がよく分からない。
teeとかファイルに出力しながら標準出力にも出力しているけど、
そのようなことがbashだけで表現できればOK?

380 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 09:40:10.00 ID:eyQzK648.net]
>>379
「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。

#!/bin/sh
cat "$1"
wc -l "$1"


↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す



381 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 09:47:38.10 ID:HnSBFy63.net]
>>380
ファイルを作らないでメモリだけでっていうことなら、
↓こんな感じならOKなの?
dat=$(cat $1)

382 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 09:57:48.90 ID:eyQzK648.net]
>>381
それでもいいよ
何をしたいのかわからんけど

kono-comand ?

↑?の部分になんて書く?

383 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:01:46.67 ID:eyQzK648.net]
明らかに読み間違えてるレスがくると疲れるんで、
一時ファイルを使った場合の例も書いておくは
これは例なんで、この例を修正しろなんてレスは不要

generate-text > /tmp/test.txt
kono-comand "/tmp/test.txt"

この一時ファイル test.txt を作りたくない
なんで?とかいう質問も不要

384 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:05:16.07 ID:HnSBFy63.net]
>>383
ホントに意味が分からないんだは、
上の例でもこれでいいんじゃないのと思っちゃう。
generate-text | kono-comand
だからこれを直せってほうが意味通じるかも。

385 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:05:29.00 ID:ic6F2rX1.net]
条件の説明が下手すぎ

386 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:07:09.78 ID:eyQzK648.net]
>>384
本当に疲れる。

>>371を読み返せ。

> リダイレクトを受け付けないコマンドに、一時ファイル作らずに渡せると思ったけど、
> リダイレクトを受け付けないコマンド
> リダイレクトを受け付けないコマンド
> リダイレクトを受け付けないコマンド

パイプもリダイレクトだ。

387 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:08:50.78 ID:eyQzK648.net]
っていうか、

generate-text | kono-comand

kono-commandの内容は上に書いたとおり↓で

> #!/bin/sh
> cat "$1"
> wc -l "$1"

修正不可能つってるんだから
これでは動きません。の一言でよかったなw

>>385
動かないコードを書いる時点で説明の問題じゃない。

388 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:09:39.22 ID:ic6F2rX1.net]
>>384
コマンドが標準入力をサポートしてない場合のだろう、よってパイプが使えない
標準入力サポートしていてパイプでいいだろうというコマンド例を挙げてくるとか説明が下手すぎなだけだろうなw

389 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:10:34.97 ID:eyQzK648.net]
>>388
あ、回答者の説明が下手すぎってことかw

390 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:10:41.51 ID:ic6F2rX1.net]
いつもの自信過剰な人か



391 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:11:55.19 ID:eyQzK648.net]
>>390
ん?今回はへこましてみるか?

俺「やっぱできないよなぁ」
→ 俺もできないと思うよ。

で終わればいいやん。

392 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:15:59.85 ID:ic6F2rX1.net]
標準入力もデバイス(ファイル)としてある

393 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:16:50.69 ID:eyQzK648.net]
https://hogem.hatenablog.com/entry/20090530/1243612485

> diff -u hoge.out fuga.out
> diff <(./hoge) <(./fuga)

よくこんな感じで、一時ファイルを作らない例として挙げられてるけど、
これって、diffが引数のファイルを一度しか読み込まないという
内部実装に依存しているってことなんだよな。

だから複数回読み込んでいたりすると使えない。
一度しか読み込まないという仕様はないだろうから
たまたま使えたということ。

394 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:17:09.83 ID:eyQzK648.net]
>>392
知ってる

395 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:23:29.06 ID:ic6F2rX1.net]
ストリームでいいのかファイルでなければならないのか条件説明がやっぱり下手すぎ
標準入出力は普通は単なるストリームで戻ったりはしたない、一気通貫するだけ
2度読み??とかストリームでないなら当然ファイルにしなければならないだろうに、あたりまえだろう。結局あたりまえのことを確認したいだけなのか。例で上げてくるのがストリームでいいだろうのを出すから下手なんだよ

396 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:24:53.38 ID:eyQzK648.net]
>>395
これを満たせばいいだけ。
いい加減にしろや


「リダイレクトを受け付けないコマンド」例
ファイル内容と行数を表示するために「同じファイルを二回読み込む」
これは "例" でありこのコマンドの内容についてのレスは不要
実際には中身はわからずバイナリで修正不可能なものとする。

#!/bin/sh
cat "$1"
wc -l "$1"


↑このコマンドに対して、一時ファイル(FIFOファイル含む)を作らないでデータを渡す

397 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:26:01.06 ID:eyQzK648.net]
はは。catとwcでファイル読み込みを二回実行してるから、
ストリームでは無理なことにも気づいてない(笑)
マヌケか

398 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:26:07.92 ID:ic6F2rX1.net]
それが下手だと言ってもわからないんだな

399 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:27:31.82 ID:eyQzK648.net]
>>398
どこが下手なのか言ってないからね。

ストリームで不可能な例を見て、
これストリームで可能じゃん!って
言ってしまった時点で、お前の負け

400 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:30:40.72 ID:eyQzK648.net]
俺が言いたいのは、

> diff <(./hoge) <(./fuga)

が使えるかどうかは、コマンド(この場合はdiff)の
内部実装に依存するから、試してみるまでわからないということ、
ファイルじゃないと二度読みはできないとかそういう話はしてない。


<(./hoge)が使えるかどうかは、コマンド次第という話をしてる

どんなコマンドだって、一度読むだけで実装することは可能(メモリに読み込めばいい)
だから、<(./hoge)が使えるかどうかはやってみるまでわからんのだよな。
という話をしてる。



401 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:31:29.76 ID:ic6F2rX1.net]
>>384
というように、
cat "$1" | wc -l
したいわけじゃないんだよ。後は後出しでいろいろ言ってくるだろう

402 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:32:27.87 ID:eyQzK648.net]
ということを、とあるファイルを引数にするコマンドを
一時ファイルを作らないでやろうとして
あれ?となった次第。

そのコマンド、一度だけしか読まないでできるように思えるんだけどな。

403 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:33:45.55 ID:eyQzK648.net]
> cat "$1" | wc -l
> したいわけじゃないんだよ。

>>380 を読めばそれぐらいわかる

404 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:36:59.95 ID:ic6F2rX1.net]
catやwcなんぞ各コマンドの入力ソースはストリームでしかないので、できないことはないけどな。お前には教えないがw

405 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:38:28.81 ID:eyQzK648.net]
>>404

> これは "例" でありこのコマンドの内容についてのレスは不要

あーあ、やっちまった。コマンドの内容にレスしたね(笑)

406 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:40:23.60 ID:ic6F2rX1.net]
>>405
>>385 そう言うなら、当然これを受け入れろな

407 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:40:24.64 ID:eyQzK648.net]
例だから、実際にはcatやwcが使われているわけじゃないのに
catやwcなんぞとかwww

408 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:40:58.27 ID:eyQzK648.net]
>>406
自分の理解力のなさを自覚するように。

こっちは、ちゃんと例を出してる。
その例を満たせなかった時点でアウト

409 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:44:00.90 ID:ic6F2rX1.net]
コマンドの入力がストリームでいいならできる、他のなんか知らんコマンドがストリームじゃダメならできないでしかない。使用するコマンドによるでしかないだろにアホか

410 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:53:18.47 ID:eyQzK648.net]
> コマンドの入力がストリームでいいならできる、

そんな当たり前のことを言われてもなw


重要な点は、本来、該当のコマンドは「ファイルを指定する」前提であるということ
diffコマンドみたいにな。

それを半ば無理やり、ストリームから読み込ませる文法が
bashにはあるということ

> diff <(./hoge) <(./fuga)

だが、本来コマンドは、ファイル名を指定させる以上、ストリームを前提としているとは限らないわけで、
そういうコマンドに、bashを使って無理やりストリームで渡して動いたとしても、
それはたまたま動いただけいう話をしてる。
(コマンドの仕様で規定されてないならば)実装依存なので動くという前提に立ってはならない。



411 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:54:58.56 ID:eyQzK648.net]
あ、bashの拡張なんて俺は普通使わんけどなw
今回はたまたま利用可能だったってだけで

412 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:55:49.57 ID:ic6F2rX1.net]
では、なにを当たり前のことを延々と言っているのかね?
というような、お前のレスはこんなんばっかだな

413 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:56:37.92 ID:eyQzK648.net]
>>412

俺「やっぱできないよなぁ」
→ 俺もできないと思うよ。

で終わればいいやん。

414 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 10:58:48.90 ID:eyQzK648.net]
基本的に、俺が出した結論が正解なので、
最後の最後でここで他になにかないのか?と聞いても
新しいことは何もわからないというのがいつものパターン

415 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 11:00:31.72 ID:ic6F2rX1.net]
そうならないのは、
>>385,390

(実は答えは別にもあるのだが、お前には教えないw)

416 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 11:03:05.91 ID:eyQzK648.net]
>>415
その答えは俺も知ってるけどな(笑)

417 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 11:04:39.93 ID:eyQzK648.net]
そういや前にも、

他にもやり方あるけどお前には教えてやんないよ。ばーかばーか

みたいなレスあったなw
結局やり方なかったみたいだけどw


あ、今回は有るんですよね?知ってます。だって俺も知ってるからね!

418 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 11:05:09.17 ID:ic6F2rX1.net]
ほほー、よくわからんが解決してなにより
めずらしくちゃんと終えられてよかったよ

419 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 11:10:16.30 ID:eyQzK648.net]
ほほー(笑)

420 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 20:25:44.11 ID:ifYIOobQ.net]
やれやれ、何事かと思ったら……
「そのツール」って何だよ。それを書かない時点で相手にする価値が無いゴミだろ。



421 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 21:30:57.91 ID:eyQzK648.net]
ツール名聞いたって何の意味もないくせにw

じゃあgccとでも言っておこうか。一例として

422 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 00:09:54.93 ID:v1YqewFO.net]
チンピラ以下の馬鹿だな

423 名前:デフォルトの名無しさん [2019/05/05(日) 01:20:16.53 ID:kL93aIfd.net]
なぜかシェルスクリプトのスレなのにコマンドの世界の話をしてますね。

424 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 01:55:58.03 ID:BV99JfCS.net]
シェルスクリプトはコマンドを使って組むもの。基本的なものですらコマンドだったり。
コマンドの動作がどうだから入出力がどうだからで組みもするもんだろう。

425 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 04:20:05.42 ID:HUD7QHVp.net]
いつものってことはこいつは常連客なのか
ちゃんとコテ付けてくれないと困るなぁ

426 名前:デフォルトの名無しさん [2019/05/05(日) 13:10:37.85 ID:ptHRpxR9.net]
>>424
プログラムですよ?

427 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 19:12:30.87 ID:Cb4SiVVu.net]
なにいってんのこいつ

428 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 22:39:57.67 ID:QbHFXZX+.net]
やっぱワッチョイ導入しよーぜ

429 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 01:18:15.86 ID:VbOWf0H0.net]
やはりそれが目的ですか

430 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 13:16:54.80 ID:UGCyqtDX.net]
どういうこと?



431 名前:デフォルトの名無しさん [2019/05/11(土) 15:19:07.32 ID:D877RybE.net]
[ string1 > string2 ] ってPOSIX準拠じゃないよね?
POSIXの範囲で(外部コマンドを使わずに)
文字列の大小の比較ってできたっけ?

432 名前:デフォルトの名無しさん [2019/05/12(日) 02:15:32.41 ID:0u/cIV/f.net]
>>427
おまえさ、ここはシェルスクリプトのスレッドだぞ?

コマンド一発にしたいのなら、そういうコマンドを作ればいい。

UNIXの考え方は、あるものの組み合わせで実現できるものはそうすべきだが、無理やりあるものの組み合わせでやれなんて言ってない。

433 名前:デフォルトの名無しさん [2019/05/12(日) 02:18:26.37 ID:0u/cIV/f.net]
>>431
どの言語でも、単に文字列を比較する構文は、どういう比較なのか分かりにくいから、まともなプログラマは避ける。

434 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 02:27:43.60 ID:4QpB/QIi.net]
これまた変なのが現れたな

435 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:06:37.34 ID:VATOmp33.net]
>>431
外部コマンドを使わないという制約なら
↓こういうのでは
string1='aaaaa'
string2='bbbb'
[ ${#string1} -le ${#string2} ]

436 名前:デフォルトの名無しさん [2019/05/12(日) 19:46:54.27 ID:OoMn1CYl.net]
「文字列の比較」ができるという触れ込みで文字数の比較を
している言語やデータベースなんか聞いたこと無いなw

普通は現在のロケールに従って文字列の照合順序で比較のことを言う
百歩譲っても文字コード順とか

437 名前:デフォルトの名無しさん [2019/05/12(日) 20:03:17.70 ID:0u/cIV/f.net]
>>436
文字列が同じ値かどうかの比較を忘れているのか?

438 名前:デフォルトの名無しさん [2019/05/12(日) 22:54:11.71 ID:OoMn1CYl.net]
変なやつだったようだな

439 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 23:14:03.33 ID:VATOmp33.net]
文字数の比較じゃないのか。申し訳ない、俺の読解力が不足してた。
後学の為に訊いておきたいんだけども、文字列の比較がごく普通にできるプログラミング言語って例えばなんだろう。

440 名前:デフォルトの名無しさん [2019/05/12(日) 23:17:08.65 ID:OoMn1CYl.net]
C言語



441 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 03:22:38.08 ID:gc1mJry9.net]
構文的ならC言語はできない方かなあと
他の(スクリプト)言語でいくらでもあるからそちらでもよかったんじゃないかと

442 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 04:40:36.56 ID:0SM9rJAF.net]
>>439
ベイシック






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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