シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
探検
シェルスクリプト総合 その36
■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
168デフォルトの名無しさん
2021/03/29(月) 17:44:52.06ID:jeDqT5qX169デフォルトの名無しさん
2021/03/29(月) 17:47:55.60ID:T/NVAJfs めっちゃ右翼だなそりゃ…
仕方なく読む專だからわからんのだけど、zshもshっぽく振る舞うモードとかあるんじゃないのさすがに限度ってものがあると思うが
仕方なく読む專だからわからんのだけど、zshもshっぽく振る舞うモードとかあるんじゃないのさすがに限度ってものがあると思うが
170デフォルトの名無しさん
2021/03/29(月) 17:51:37.76ID:jeDqT5qX171デフォルトの名無しさん
2021/03/29(月) 17:53:39.75ID:wK+S1L2g >>168
> macOS Catalina
どーせそういうと思ったw
なんつーか、みんな基礎的な知識がないよな
あ、macOS Catalinaの/bin/shは(POSIXモードの)bash 3.2.57 だ
これからもずっと変わらんだろうよ
> macOS Catalina
どーせそういうと思ったw
なんつーか、みんな基礎的な知識がないよな
あ、macOS Catalinaの/bin/shは(POSIXモードの)bash 3.2.57 だ
これからもずっと変わらんだろうよ
172デフォルトの名無しさん
2021/03/29(月) 17:56:44.94ID:jeDqT5qX173デフォルトの名無しさん
2021/03/29(月) 17:58:03.88ID:jeDqT5qX なおBigSurは最初からzsh
もうbashには戻らんだろうね
もうbashには戻らんだろうね
174デフォルトの名無しさん
2021/03/29(月) 18:01:27.34ID:wK+S1L2g175デフォルトの名無しさん
2021/03/29(月) 18:04:28.54ID:1/gzKsrI ログインシェル と /bin/sh は違うぞ
/bin/sh がなんなの確認してみ
/bin/sh がなんなの確認してみ
176デフォルトの名無しさん
2021/03/29(月) 18:06:21.42ID:jeDqT5qX177デフォルトの名無しさん
2021/03/29(月) 18:07:44.45ID:jeDqT5qX >>175
zshにリンクされてるね
zshにリンクされてるね
178デフォルトの名無しさん
2021/03/29(月) 18:07:48.03ID:wK+S1L2g >>176
俺が聞いたのは、プロンプトになんて表示されるかだ
なぜ質問に答えられないのか?
それだけなんだが?
レスするよりタイプ文字は少ないだろ
ああ面倒だw
答えは、sh-3.2
bash 3.2の3.2だ
なにか言い返す言葉はあるか?
俺が聞いたのは、プロンプトになんて表示されるかだ
なぜ質問に答えられないのか?
それだけなんだが?
レスするよりタイプ文字は少ないだろ
ああ面倒だw
答えは、sh-3.2
bash 3.2の3.2だ
なにか言い返す言葉はあるか?
179デフォルトの名無しさん
2021/03/29(月) 18:08:14.41ID:1/gzKsrI >>176
確かめてないだろw
冷静にもう一度ちゃんと確かめてみ
>macOS Catalina
>以前は手を入れないとダメだったらしいけど
ってのからも明らかにログインシェル=/bin/shだと思ってるだろうし
確かめてないだろw
冷静にもう一度ちゃんと確かめてみ
>macOS Catalina
>以前は手を入れないとダメだったらしいけど
ってのからも明らかにログインシェル=/bin/shだと思ってるだろうし
180デフォルトの名無しさん
2021/03/29(月) 18:10:30.37ID:wK+S1L2g >>177
されてない
それどころかbashにもリンクされてなくて
ファイルサイズはbashとzsh(ほぼ同じぐらい)の1/10程度しかない
これは/bin/shがbashをベースにPOSIXに準拠するだけの機能に
減らしてビルドした縮小版だからだ
されてない
それどころかbashにもリンクされてなくて
ファイルサイズはbashとzsh(ほぼ同じぐらい)の1/10程度しかない
これは/bin/shがbashをベースにPOSIXに準拠するだけの機能に
減らしてビルドした縮小版だからだ
181デフォルトの名無しさん
2021/03/29(月) 18:13:42.46ID:1/gzKsrI >>177
嘘なのかw、マジでそうならなんかおま環くさい
/bin/shがコロコロ変わったら困るから(コロコロ変わる必要もないしな)、なんらか(chsh)でそうなるわけもなく、なんでそうなんか...嘘くさいww
BigSurはまだ更新してないからってことは、Catalinaか...尚更嘘くさい
そんな変なの捨ててクリーンインストールしなさいなww
嘘なのかw、マジでそうならなんかおま環くさい
/bin/shがコロコロ変わったら困るから(コロコロ変わる必要もないしな)、なんらか(chsh)でそうなるわけもなく、なんでそうなんか...嘘くさいww
BigSurはまだ更新してないからってことは、Catalinaか...尚更嘘くさい
そんな変なの捨ててクリーンインストールしなさいなww
182デフォルトの名無しさん
2021/03/29(月) 18:14:08.54ID:wK+S1L2g しかしmacOSの/bin/shが、bashやzshの1/10にまでサイズが減ってるとなると
本来のbashに比べて/bin/shは相当機能が削減されたbashだと思うけど何が減ったんだろう?
/bin/shはbashのインタラクティブシェルとしての機能を削っただけかな?
本来のbashに比べて/bin/shは相当機能が削減されたbashだと思うけど何が減ったんだろう?
/bin/shはbashのインタラクティブシェルとしての機能を削っただけかな?
183デフォルトの名無しさん
2021/03/29(月) 18:16:02.09ID:qWZz7CCC チャーリー浜「...」
184デフォルトの名無しさん
2021/03/29(月) 18:16:35.62ID:wK+S1L2g そういやqiitaかなんかでmacOSの/bin/shを最新のbashに
アップデートしましょうとか書いてあった記事があったな
Apple版bashじゃなくてbash本家からビルドしてsudoでcpしてw
システム壊す気かって思ったwww
アップデートしましょうとか書いてあった記事があったな
Apple版bashじゃなくてbash本家からビルドしてsudoでcpしてw
システム壊す気かって思ったwww
185デフォルトの名無しさん
2021/03/29(月) 18:25:27.61ID:1/gzKsrI186デフォルトの名無しさん
2021/03/29(月) 18:30:46.99ID:wK+S1L2g ふ、黙った所を見ると終わったかね?素人が俺様に敵うわけねーだろ
187デフォルトの名無しさん
2021/03/29(月) 18:33:56.47ID:1/gzKsrI お前はそれを冗談で言ってなさそうなとこがな
188デフォルトの名無しさん
2021/03/29(月) 18:34:14.26ID:5I9+wJCt 動いてるなら必要十分だよな
bashはもうバージョン5だし、補完やらのAPIを外部に晒したのが成功して、対話モードが随分良くなった
2つ入れるのはアリだと思う
名前も念の為分けといた方がいいかもしれない(俺はサボったけど)
ただ、呪文のようなパラメータ置換をモリモリ実装してるのは頭おかしいと思う
外部コマンド使え
bashはもうバージョン5だし、補完やらのAPIを外部に晒したのが成功して、対話モードが随分良くなった
2つ入れるのはアリだと思う
名前も念の為分けといた方がいいかもしれない(俺はサボったけど)
ただ、呪文のようなパラメータ置換をモリモリ実装してるのは頭おかしいと思う
外部コマンド使え
189デフォルトの名無しさん
2021/03/29(月) 18:35:37.53ID:wK+S1L2g > ただ、呪文のようなパラメータ置換をモリモリ実装してるのは頭おかしいと思う
> 外部コマンド使え
1/1000ぐらいにパフォーマンス下がるぞw
数値は適当だが
> 外部コマンド使え
1/1000ぐらいにパフォーマンス下がるぞw
数値は適当だが
190デフォルトの名無しさん
2021/03/29(月) 18:38:16.17ID:wK+S1L2g 外部コマンドはパフォーマンスが大幅に低下するだけじゃなく
改行をうまくあつかないという問題がある
変数には改行を入れられるが、外部コマンドだと行区切りとして扱われる
改行をうまくあつかないという問題がある
変数には改行を入れられるが、外部コマンドだと行区切りとして扱われる
191デフォルトの名無しさん
2021/03/29(月) 18:46:02.19ID:CpwX2Qd/ そういえばCatalinaだとこれ↓見ろってでますね
https://support.apple.com/kb/HT208050
https://support.apple.com/kb/HT208050
192デフォルトの名無しさん
2021/03/29(月) 18:59:51.55ID:wK+S1L2g >>191
> macOS Catalina の Bourne 互換シェルとのスクリプトの互換性をテストするには、
> 「/var/select/sh」を「/bin/bash」「/bin/dash」または「/bin/zsh」に変更してみます。
それみてmacOSの/bin/shのサイズが1/10しかない理由がわかったw
man shすれば書いてあったが、macOSの/bin/shはシェル本体じゃなくて
シェル(/var/select/sh、デフォルトは/bin/bashへのシンボリックリンク)
を起動するためのコマンドなのか
どおりでstrings使ったらbashやzshといった文字が見つかるわけだ
/bin/sh をデフォルトのbashから別のシェルに変更したい場合は
シンボリックリンクを変更すれば出来るんだな
ってことはやっぱり単にPOSIXモードが有効になったというだけのbashなのかもな
> macOS Catalina の Bourne 互換シェルとのスクリプトの互換性をテストするには、
> 「/var/select/sh」を「/bin/bash」「/bin/dash」または「/bin/zsh」に変更してみます。
それみてmacOSの/bin/shのサイズが1/10しかない理由がわかったw
man shすれば書いてあったが、macOSの/bin/shはシェル本体じゃなくて
シェル(/var/select/sh、デフォルトは/bin/bashへのシンボリックリンク)
を起動するためのコマンドなのか
どおりでstrings使ったらbashやzshといった文字が見つかるわけだ
/bin/sh をデフォルトのbashから別のシェルに変更したい場合は
シンボリックリンクを変更すれば出来るんだな
ってことはやっぱり単にPOSIXモードが有効になったというだけのbashなのかもな
193デフォルトの名無しさん
2021/03/29(月) 19:55:41.76ID:1/gzKsrI >>191
/bin/dash ってあるから、
次か次の次かで /bin/sh は bash を捨てて(流石に捨てるだろう3ベースのなんて。kshがまだあるから同じように残るか??) の dash になる可能性が大な感じ?
/bin/dash ってあるから、
次か次の次かで /bin/sh は bash を捨てて(流石に捨てるだろう3ベースのなんて。kshがまだあるから同じように残るか??) の dash になる可能性が大な感じ?
194デフォルトの名無しさん
2021/03/29(月) 20:03:13.24ID:wK+S1L2g >>193
bashからdashに変更すると互換性が壊れるからなぁ
まあそれをUbuntuがやってのけたから
互換性気にしないAppleならやるかもな
保守が続いてるdashに変更するか
それともAppleがbashをメンテンスし続けるか
後者でもほぼ修正はないんだから、大変ではないだろうな
bashからdashに変更すると互換性が壊れるからなぁ
まあそれをUbuntuがやってのけたから
互換性気にしないAppleならやるかもな
保守が続いてるdashに変更するか
それともAppleがbashをメンテンスし続けるか
後者でもほぼ修正はないんだから、大変ではないだろうな
195デフォルトの名無しさん
2021/03/29(月) 20:07:19.27ID:KEZ/XNTe196デフォルトの名無しさん
2021/03/29(月) 20:10:44.21ID:1/gzKsrI Appleでメンテするのがめんどくさくなって捨てるのは定番
移行を即すためにも最後のあるんだろうし、dashをも入れてるのは 意味がある ことだろう
Appleの準備が終わったら&Appleが移行期間が終わりと見なしたら変わるだろうな
bashに固執することなんてないし
移行を即すためにも最後のあるんだろうし、dashをも入れてるのは 意味がある ことだろう
Appleの準備が終わったら&Appleが移行期間が終わりと見なしたら変わるだろうな
bashに固執することなんてないし
197デフォルトの名無しさん
2021/03/29(月) 21:01:40.15ID:wK+S1L2g bashは機能拡張とかいうレベルのメンテはしなくていいけど
もしかしたらこれから新たな脆弱性が見つかる可能性もあるからね
そうなると古いbashは公式にはメンテされない
Appleが独自で修正を入れる必要がある
/bin/sh(=/bin/bash)はAppleが手を入れてるからGPLv3だと困るとして
まったく手を入れなくていいとなった場合
macOSに新しいbashをバンドルすることはあるだろうか?
つまり古いbashはいずれにしても問題があるわけで更新しなければいけない
だから/bin/shをdashに変更した後、bash5をバンドルするかなってこと?
それが無理ならdashに変更したらbashを削除することも有り得そう
それを見越してzshに移行しろって言ってるのかもな
もしかしたらこれから新たな脆弱性が見つかる可能性もあるからね
そうなると古いbashは公式にはメンテされない
Appleが独自で修正を入れる必要がある
/bin/sh(=/bin/bash)はAppleが手を入れてるからGPLv3だと困るとして
まったく手を入れなくていいとなった場合
macOSに新しいbashをバンドルすることはあるだろうか?
つまり古いbashはいずれにしても問題があるわけで更新しなければいけない
だから/bin/shをdashに変更した後、bash5をバンドルするかなってこと?
それが無理ならdashに変更したらbashを削除することも有り得そう
それを見越してzshに移行しろって言ってるのかもな
198デフォルトの名無しさん
2021/03/29(月) 21:01:56.86ID:wK+S1L2g つまりbash用スクリプトはmacOSで動かないわけで、
bashを入れるためにはHomebrewを使わなければならないわけで
そうするとbashからdash(POSIX準拠)に書き直す必要があるんじゃないか?w
HomebrewのインストーラーをRubyからBashに書き直しました!
https://itchyny.hatena
blog.com/entry/2020/03/03/100000
これどれくらいbash依存してるんだろう?
bashを入れるためにはHomebrewを使わなければならないわけで
そうするとbashからdash(POSIX準拠)に書き直す必要があるんじゃないか?w
HomebrewのインストーラーをRubyからBashに書き直しました!
https://itchyny.hatena
blog.com/entry/2020/03/03/100000
これどれくらいbash依存してるんだろう?
199デフォルトの名無しさん
2021/03/29(月) 21:13:02.60ID:wK+S1L2g Homebrewのインストーラー
https://raw.githubusercontent.com/Homebrew/install/master/install.sh
ざっと見てみたが、結構長いな
配列使ってるところがread -n 1が少し厄介だな
POSIX準拠させるよりもzshで動くようにしたほうがいいのかもしれんな
しかしこれどうやってテストしたんだろうか
https://raw.githubusercontent.com/Homebrew/install/master/install.sh
ざっと見てみたが、結構長いな
配列使ってるところがread -n 1が少し厄介だな
POSIX準拠させるよりもzshで動くようにしたほうがいいのかもしれんな
しかしこれどうやってテストしたんだろうか
200デフォルトの名無しさん
2021/03/29(月) 21:49:47.52ID:wK+S1L2g ふむ read -n 1 = getchのPOSIX準拠コードはあるようだ
https://qiita.com/miminashi/items/ad060c43c130581b412a
getch() {
old=$(stty -g)
stty raw -echo min 0 time 1
printf '%s' $(dd bs=1 count=1 2>/dev/null)
stty $old
}
じゃああとは配列の置き換えが面倒なだけだな
https://qiita.com/miminashi/items/ad060c43c130581b412a
getch() {
old=$(stty -g)
stty raw -echo min 0 time 1
printf '%s' $(dd bs=1 count=1 2>/dev/null)
stty $old
}
じゃああとは配列の置き換えが面倒なだけだな
201デフォルトの名無しさん
2021/03/30(火) 22:27:21.29ID:jfNjkEti こうなったら世界唯一のリードオンリー言語、applescriptで書き直すしかないな
202デフォルトの名無しさん
2021/03/31(水) 11:33:02.43ID:AtIsL56M arrayも使えないのは正直つらい
コマンドだけど魔改造でびっくらこいたのはlinux版のcolumn.1(kernel.org配布なんで公式のはず)だなあ
linuxなのに-hも--helpも受け付けないbsd版使ってたわ
--jsonとか--treeとかもはやcolumnの域を超越してる
コマンドだけど魔改造でびっくらこいたのはlinux版のcolumn.1(kernel.org配布なんで公式のはず)だなあ
linuxなのに-hも--helpも受け付けないbsd版使ってたわ
--jsonとか--treeとかもはやcolumnの域を超越してる
203デフォルトの名無しさん
2021/03/31(水) 12:20:25.54ID:ekNiD538 配列なんていらんと思ってるけど、何に使ってるか聞いていい?
できれば難しいケースでw
できれば難しいケースでw
204デフォルトの名無しさん
2021/03/31(水) 12:34:19.85ID:AtIsL56M ごめん、単語分割めんどいので全部突っ込みます
205デフォルトの名無しさん
2021/03/31(水) 12:37:32.99ID:ekNiD538 >>204
https://github.com/koalaman/shellcheck/wiki/SC2086
こうやりたいのなら
options="-j 5 -B"
make $options file
こうやればいい
make_with_flags() { make -j 5 -B "$@"; }
make_with_flags file
配列はやっぱり、いらんのよなぁ
https://github.com/koalaman/shellcheck/wiki/SC2086
こうやりたいのなら
options="-j 5 -B"
make $options file
こうやればいい
make_with_flags() { make -j 5 -B "$@"; }
make_with_flags file
配列はやっぱり、いらんのよなぁ
206デフォルトの名無しさん
2021/03/31(水) 12:43:15.98ID:ekNiD538 単語分割は値にスペースが入ってるときに困るんで基本使わないよ。
その上で配列いらんと思ってる。>>205に書いた通り
その上で配列いらんと思ってる。>>205に書いた通り
207デフォルトの名無しさん
2021/03/31(水) 16:10:08.25ID:AtIsL56M >>205
ああwikiにもデバッグにもお世話になってるわshellcheck様々
まあそうなんだけど、逆に割りたいところでは割りたい時にも文字列より便利なんだよなコマンド組み立てとか
そもそも俺のは乱用であって、配列本来の用途は添字で引くことでしたね!
mktempしてpaste key valueを流し込み、
grep ^key^I |cut -f2-
で引くとかぱっと思いつくけど、汚え
なんか良い方法あったらご教授頂きたい
ああwikiにもデバッグにもお世話になってるわshellcheck様々
まあそうなんだけど、逆に割りたいところでは割りたい時にも文字列より便利なんだよなコマンド組み立てとか
そもそも俺のは乱用であって、配列本来の用途は添字で引くことでしたね!
mktempしてpaste key valueを流し込み、
grep ^key^I |cut -f2-
で引くとかぱっと思いつくけど、汚え
なんか良い方法あったらご教授頂きたい
208デフォルトの名無しさん
2021/03/31(水) 16:20:02.26ID:AtIsL56M まずmktempじゃなくて文字列変数でいいな、最大サイズとか規格にありそうだけどとりあえず
209デフォルトの名無しさん
2021/03/31(水) 16:54:44.20ID:0ggCFJWv 配列は普通キーと値を追加して育てるので'key sep val '>>で追記
二度同じキーを入れると複数引っかかるので
tac |grep -m1あるいはtail -n1
とりあえずkey sep>>で空文字が返るでよしとする
でもunsetと区別できない
セパレータはタブよりヌル文字にあたりにしたほうが無難そう
ボロボロ出てくるんで出直してきます…
二度同じキーを入れると複数引っかかるので
tac |grep -m1あるいはtail -n1
とりあえずkey sep>>で空文字が返るでよしとする
でもunsetと区別できない
セパレータはタブよりヌル文字にあたりにしたほうが無難そう
ボロボロ出てくるんで出直してきます…
210デフォルトの名無しさん
2021/03/31(水) 20:23:49.38ID:rlnsgVLR >>207-209
ちゃんと読んでないけど
コマンド組み立てならこんな感じ
[ "$FLAG" = "on" ] && set -- -f "$@"
[ -e "$FILE" ] && set -- --file "$FILE" "$@"
cmd "$@"
添字で引きたいならこんな感じ
set -- a b c
echo $2
grep ^key^I |cut -f2- なら、次のようにすればgrepもcutも使わなくても出来るよ
while IFS="$TAB" read -r key value; do
echo "$value"
done
一般的なプログラムでは配列あったほうがいいけど
シェルスクリプトでやるような内容で配列なんかいらない
ただみんなシェルスクリプトを雰囲気でやってて知らないだけ
ちゃんと読んでないけど
コマンド組み立てならこんな感じ
[ "$FLAG" = "on" ] && set -- -f "$@"
[ -e "$FILE" ] && set -- --file "$FILE" "$@"
cmd "$@"
添字で引きたいならこんな感じ
set -- a b c
echo $2
grep ^key^I |cut -f2- なら、次のようにすればgrepもcutも使わなくても出来るよ
while IFS="$TAB" read -r key value; do
echo "$value"
done
一般的なプログラムでは配列あったほうがいいけど
シェルスクリプトでやるような内容で配列なんかいらない
ただみんなシェルスクリプトを雰囲気でやってて知らないだけ
211デフォルトの名無しさん
2021/03/31(水) 20:37:35.81ID:fnN7hvaV でも、PerlもPythonもないけど、いれるほどでもない用事のときには、Bashくらいが適当かつ充分だったりするからね。
212デフォルトの名無しさん
2021/03/31(水) 20:43:11.59ID:rlnsgVLR へー、fi って終了って意味だったのか。勉強になった
https://www.dict.com/%E3%82%AB%E3%82%BF%E3%83%AB%E3%83%BC%E3%83%8B%E3%83%A3%E8%AA%9E-%E6%97%A5%E6%9C%AC%E8%AA%9E/fi
fi, -na [fi]
終了, 終止, 終わり, おしまい, 最後, 結末, 終結
https://www.dict.com/%E3%82%AB%E3%82%BF%E3%83%AB%E3%83%BC%E3%83%8B%E3%83%A3%E8%AA%9E-%E6%97%A5%E6%9C%AC%E8%AA%9E/fi
fi, -na [fi]
終了, 終止, 終わり, おしまい, 最後, 結末, 終結
213デフォルトの名無しさん
2021/03/31(水) 20:44:51.45ID:rlnsgVLR >>211
そのBashくらいが〜が俺にとっては、Dash(POSIX準拠)で十分なんだよね
そのBashくらいが〜が俺にとっては、Dash(POSIX準拠)で十分なんだよね
214デフォルトの名無しさん
2021/03/31(水) 21:13:09.30ID:4SvaIgPh まじかよ、じゃあesacもすげー意味に違いないな
215デフォルトの名無しさん
2021/03/31(水) 21:16:15.45ID:1zeQu1PP216デフォルトの名無しさん
2021/03/31(水) 22:31:27.28ID:rlnsgVLR 実際fiって映画の最後のfinから来てるのかもな
217デフォルトの名無しさん
2021/04/01(木) 03:14:03.54ID:B5PjUTjB ここが教養スレだ!
218デフォルトの名無しさん
2021/04/01(木) 14:47:29.53ID:9tfGPqCh シェルスクリプトじゃないけど、質問。
makeで、ターゲット実行が成功しても失敗しても、最後に後始末みたいな処理をさせる方法はない?
bashならtrap ... EXITでできるけど。
makeで、ターゲット実行が成功しても失敗しても、最後に後始末みたいな処理をさせる方法はない?
bashならtrap ... EXITでできるけど。
219デフォルトの名無しさん
2021/04/01(木) 15:17:09.43ID:Hb/UV5K1220デフォルトの名無しさん
2021/04/01(木) 21:35:25.25ID:HbnIL0Hw >>219
ああ、pipefailの意味をやっと理解したわ
bashのinfo何度も通読してるはずなんだけど、last commandのステータスを返すって当たり前じゃね、ってスルーしてた…
限りなくバグに近い仕様ってやつか
ああ、pipefailの意味をやっと理解したわ
bashのinfo何度も通読してるはずなんだけど、last commandのステータスを返すって当たり前じゃね、ってスルーしてた…
限りなくバグに近い仕様ってやつか
221デフォルトの名無しさん
2021/04/01(木) 22:02:03.77ID:B5PjUTjB 互換性オプションはマニュアル読んでも例を見ないと分からない物が多いと思う
222デフォルトの名無しさん
2021/04/01(木) 22:26:08.86ID:o5XCnMGW makeの欠点はシェルの文法を混ぜ込むことだよな
223デフォルトの名無しさん
2021/04/01(木) 23:47:14.73ID:I05CY+G0 >>219
ちゃうねん、もう一声!
ひとつのターゲットの中での最後じゃなく、依存関係にあるターゲットでも、並列のターゲットでも、とにかくすべての最後に処理をやらせたいんや。
ちなみに、そのページは見てたけど、流してたわ。w
あらためて見直すと、意義がわかった。
ありがとやで!
ちゃうねん、もう一声!
ひとつのターゲットの中での最後じゃなく、依存関係にあるターゲットでも、並列のターゲットでも、とにかくすべての最後に処理をやらせたいんや。
ちなみに、そのページは見てたけど、流してたわ。w
あらためて見直すと、意義がわかった。
ありがとやで!
224デフォルトの名無しさん
2021/04/01(木) 23:49:43.54ID:I05CY+G0225デフォルトの名無しさん
2021/04/02(金) 00:09:16.86ID:sr96G99p226デフォルトの名無しさん
2021/04/02(金) 02:22:57.94ID:xkKIrGbu227デフォルトの名無しさん
2021/04/02(金) 02:28:01.75ID:sr96G99p Pythonスクリプトの問題点
1. makeのように依存ファイルに基づいた処理を行うのが大変
2. makeでやっていたような処理はシェルスクリプトで書いたほうが簡潔に書ける
なんでPythonのようなタスクを行うのに
適してない言語を使おうとするのかわからない
1. makeのように依存ファイルに基づいた処理を行うのが大変
2. makeでやっていたような処理はシェルスクリプトで書いたほうが簡潔に書ける
なんでPythonのようなタスクを行うのに
適してない言語を使おうとするのかわからない
228デフォルトの名無しさん
2021/04/02(金) 11:31:17.73ID:ebi/L5xP make相当のもあるし最近良くなったので(PEP517)、python+c拡張のプロジェクトでなら従った方がいい
わざわざビルドプロセスだけpythonで書いて添えるんならやめとけ
わざわざビルドプロセスだけpythonで書いて添えるんならやめとけ
229デフォルトの名無しさん
2021/04/02(金) 13:02:49.67ID:xkKIrGbu230デフォルトの名無しさん
2021/04/02(金) 13:20:46.71ID:sr96G99p >>229
そんなsedはゲームにも使えるんやで!みたいなことを言われてもな
sedで書かれたチェスがもの凄い件
https://softantenna.com/wp/unknown/chess-written-in-sed/
> sedで書かれたテトリス「sedtris」なんてものまであるようです。
自分が得意な言語じゃなくて適切な道具を使いましょうってだけ
make使ってなにかのコマンドを実行してたんだろ?
ならそれはシェルスクリプトが適切な道具だ
Pythonじゃない。Pythonで書くと倍以上にコードが長くなるだろう
そんなsedはゲームにも使えるんやで!みたいなことを言われてもな
sedで書かれたチェスがもの凄い件
https://softantenna.com/wp/unknown/chess-written-in-sed/
> sedで書かれたテトリス「sedtris」なんてものまであるようです。
自分が得意な言語じゃなくて適切な道具を使いましょうってだけ
make使ってなにかのコマンドを実行してたんだろ?
ならそれはシェルスクリプトが適切な道具だ
Pythonじゃない。Pythonで書くと倍以上にコードが長くなるだろう
231デフォルトの名無しさん
2021/04/02(金) 13:27:11.24ID:s72UfXRI それもよく言われるけど落とし穴が多すぎる、現にハマってるようだし他の方法を考えた方が
232デフォルトの名無しさん
2021/04/02(金) 13:27:52.24ID:s72UfXRI >>229宛てね
233デフォルトの名無しさん
2021/04/02(金) 13:36:01.88ID:ebi/L5xP なるべく基本ユティリティでやりたくて、makeで融通が効かないタスクの自動順序解決&実行ならtsortを使うのが良い
234デフォルトの名無しさん
2021/04/02(金) 13:46:20.17ID:ebi/L5xP 何がやりたいのか小出しでよくわからんね
makeはtsort+ビルド向けの機能のセットであって、ビルドに使わないなら必要としてるのはtsortの部分だろ
makeはtsort+ビルド向けの機能のセットであって、ビルドに使わないなら必要としてるのはtsortの部分だろ
235デフォルトの名無しさん
2021/04/02(金) 14:06:24.57ID:qkslRrVn 具体的にどうタイムスタンプ(に限らないが)を取ってきてコマンドと結合しtsortにかけ、出力を整形して実行するのか
みたいな事なら答えてやれるし、それがこのスレの趣旨だろう
みたいな事なら答えてやれるし、それがこのスレの趣旨だろう
236デフォルトの名無しさん
2021/04/02(金) 14:16:05.96ID:W1Cqjj5x 単にタスクランナーとして使ってるだけかもしれんし、質問者が出してない情報を推測であれこれ言うのはやめよう
237デフォルトの名無しさん
2021/04/02(金) 17:21:25.62ID:l3SG9gZX #!/bin/sh
# >>14
# 外国籍の者が日本人に成り済ますために使う「通名」作成スクリプトを実行し
# 当たり玉を3回以上出した者をPOSIX中心主義者と見なしコレ以降の書き込みを禁じる
KIM=1
while [ $KIM -lt 21 ]
do
echo "$KIM回目"
KIM=$( expr $KIM + 1 )
NAME=$( shuf -e 村 崎 本 田 山 玉 子 -n 1 )
if [ "$NAME" = "玉" ]
then tput setaf 3 && echo "金$NAME"; tput sgr0
else echo "金$NAME"
fi
sleep $(( $(od -vAn -N3 -i /dev/random) % 5 ))
done
# >>14
# 外国籍の者が日本人に成り済ますために使う「通名」作成スクリプトを実行し
# 当たり玉を3回以上出した者をPOSIX中心主義者と見なしコレ以降の書き込みを禁じる
KIM=1
while [ $KIM -lt 21 ]
do
echo "$KIM回目"
KIM=$( expr $KIM + 1 )
NAME=$( shuf -e 村 崎 本 田 山 玉 子 -n 1 )
if [ "$NAME" = "玉" ]
then tput setaf 3 && echo "金$NAME"; tput sgr0
else echo "金$NAME"
fi
sleep $(( $(od -vAn -N3 -i /dev/random) % 5 ))
done
238デフォルトの名無しさん
2021/04/02(金) 17:37:09.20ID:sr96G99p POSIX中心主義ってあれ生きてるの?
もう虫の息なきがw
もう虫の息なきがw
239デフォルトの名無しさん
2021/04/02(金) 18:12:13.70ID:Ka7wreYU 煽ってくる質問者なんてほっとけ
240デフォルトの名無しさん
2021/04/02(金) 18:17:16.53ID:hbCxlU+U 移植性や持続性っても、
移植性ってただ他でも動くでしかないし、
持続性ってただ変わらない=古いのに固執でしかないし
メンテナンス性は軽視もしくは考慮外だからな(命名のいい加減さから考慮してないだろうなw)
その面が実務者(新しい人だけど)に公にやんわりとw指摘されて瀕死かな
移植性ってただ他でも動くでしかないし、
持続性ってただ変わらない=古いのに固執でしかないし
メンテナンス性は軽視もしくは考慮外だからな(命名のいい加減さから考慮してないだろうなw)
その面が実務者(新しい人だけど)に公にやんわりとw指摘されて瀕死かな
241デフォルトの名無しさん
2021/04/02(金) 18:25:37.14ID:2zuzxBMS >>240
日本語でOK
日本語でOK
242デフォルトの名無しさん
2021/04/02(金) 18:35:13.75ID:hbCxlU+U 自分の無知を人の日本語wのせいにするんじゃないよ
243デフォルトの名無しさん
2021/04/02(金) 18:42:19.12ID:ebi/L5xP tsortはmakeのような動的依存解決&コード生成に使う発想は無かったわ
確かにスクリプト中でタイムスタンプでソート(sort)してからtsortすればmakeの基本機能はカバーできるが、実行したいコマンドを直接書くのはセパレータの扱いや依存が一つしか書けないなど厄介
書き散らしたシェル関数/コマンド"名"を直列に依存解決してダンプ、リファクタリングの参考にするのには気軽でいい
確かにスクリプト中でタイムスタンプでソート(sort)してからtsortすればmakeの基本機能はカバーできるが、実行したいコマンドを直接書くのはセパレータの扱いや依存が一つしか書けないなど厄介
書き散らしたシェル関数/コマンド"名"を直列に依存解決してダンプ、リファクタリングの参考にするのには気軽でいい
244デフォルトの名無しさん
2021/04/02(金) 19:16:18.60ID:1/Ara7QU 進捗率表示してくれるpvコマンドってどうなの?
やっぱその分処理遅くなったりする?
やっぱその分処理遅くなったりする?
245デフォルトの名無しさん
2021/04/02(金) 19:16:25.76ID:ebi/L5xP 見かけ上無引数のシェル関数で包めば、とりあえず簡単に動くコードは吐けるか
あんまりやりすぎるとmakeでタスクランナーと変わらんが
あんまりやりすぎるとmakeでタスクランナーと変わらんが
246デフォルトの名無しさん
2021/04/02(金) 19:37:10.62ID:ebi/L5xP247デフォルトの名無しさん
2021/04/02(金) 19:42:14.08ID:ebi/L5xP たぶん求められている答えじゃないかもしれないけど…
ことパイプに関しては前後のコマンドすらスループットに大いに関係がある
特に挟まれる前提のコマンドなら、それ単体で遅い速いを言うのは意味がない
ことパイプに関しては前後のコマンドすらスループットに大いに関係がある
特に挟まれる前提のコマンドなら、それ単体で遅い速いを言うのは意味がない
248デフォルトの名無しさん
2021/04/02(金) 20:08:48.33ID:ITrGzi0M 進捗確認ツールならそれ自体は多分十分気をつけてるだろ、通信先が病的なら気をつけても無駄だが
遅くて困ってからstdbufとか試せば
どうしても必要なものとは思えないけど、インストールスクリプト等でこだわりがあるなら
遅くて困ってからstdbufとか試せば
どうしても必要なものとは思えないけど、インストールスクリプト等でこだわりがあるなら
249デフォルトの名無しさん
2021/04/02(金) 20:45:04.78ID:B/D63v/Y 確かにこれに限らずパイプ通しただけでもわからんよな
それ用のコマンドだから意識してるとは思うが
それ用のコマンドだから意識してるとは思うが
250デフォルトの名無しさん
2021/04/02(金) 22:49:58.28ID:Gl9s1y4K straceするんだ
ファイルIO想定で書いたけど、ストリームも一応(ロジックそのままで)対応しとくかみたいな奴が腐ったミカン
内部バッファにある程度貯めて処理するのが理想だけど、パイプラインのパーツはそうじゃない
こまめに空パイプ覗きに行って藪蛇ブロック、貯めたデータの処理止まってたり
時々ドバっと書き出すから後続はずっとアイドル
なんかインピーダンスみたいだな
ファイルIO想定で書いたけど、ストリームも一応(ロジックそのままで)対応しとくかみたいな奴が腐ったミカン
内部バッファにある程度貯めて処理するのが理想だけど、パイプラインのパーツはそうじゃない
こまめに空パイプ覗きに行って藪蛇ブロック、貯めたデータの処理止まってたり
時々ドバっと書き出すから後続はずっとアイドル
なんかインピーダンスみたいだな
251デフォルトの名無しさん
2021/04/02(金) 22:56:06.54ID:Gl9s1y4K リーダ/メイン/ライタの3プロセスで1コマンド構成するのがベストになんだろうが、めんどくさいな…
pvみたいに統計取るだけの奴は、読んだ分をそのまま書き出すだろうから、それ自身が問題起こすことは考えにくいかと
ところで、誰かtime したかー?
pvみたいに統計取るだけの奴は、読んだ分をそのまま書き出すだろうから、それ自身が問題起こすことは考えにくいかと
ところで、誰かtime したかー?
252デフォルトの名無しさん
2021/04/02(金) 23:12:36.74ID:nXGaO3xM タスクランナーなら、
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
Jenkins,
Ruby のRake, Thor,
JavaScript のnpm scripts, gulp
253デフォルトの名無しさん
2021/04/02(金) 23:21:07.01ID:Gl9s1y4K 俺は他の使ってるが、単なるオレオレタスクランナーならモダン言語で良いの山ほどあるしな
やっぱり何でもmakeマンには賛同できないわ
やっぱり何でもmakeマンには賛同できないわ
254デフォルトの名無しさん
2021/04/02(金) 23:22:46.09ID:Gl9s1y4K どうせ自分用なんだから好きなの使えば良いわけだし
255デフォルトの名無しさん
2021/04/02(金) 23:55:49.61ID:Fe5X0u2X 複数の言語を使ってるとなんで言語ごとに
タスクランナーを変えなきゃいけないんだよと思う
大したことなんかしないだろ
タスクランナーを変えなきゃいけないんだよと思う
大したことなんかしないだろ
256デフォルトの名無しさん
2021/04/03(土) 00:05:04.26ID:hWVbhofL >>255
高度な機能を実装する為にモダン言語使っているというだけで、自分の好きなシェルを指定して、そのシェル文法で書くのが主流だと思うよ
(思う、というのはホスト言語の構文ももちろん使えるから、他人は知らん)
.ONESHELLみたいな汚いワークアラウンドも要らないしmakeよりはbsh
高度な機能を実装する為にモダン言語使っているというだけで、自分の好きなシェルを指定して、そのシェル文法で書くのが主流だと思うよ
(思う、というのはホスト言語の構文ももちろん使えるから、他人は知らん)
.ONESHELLみたいな汚いワークアラウンドも要らないしmakeよりはbsh
257デフォルトの名無しさん
2021/04/03(土) 00:12:46.44ID:YB/KO+42 Makefileは真のタスクランナー(シェルスクリプト)の
よく使う使い方を書いたサンプルファイルだよw
makeコマンドが入っていれば、makeコマンドで実行できるし
入ってないならMakefileの中を見て
そこに書いてるサンプルを直接実行するもの
よく使う使い方を書いたサンプルファイルだよw
makeコマンドが入っていれば、makeコマンドで実行できるし
入ってないならMakefileの中を見て
そこに書いてるサンプルを直接実行するもの
258デフォルトの名無しさん
2021/04/03(土) 00:23:20.08ID:r67/WY6G makeがcで書かれてるからといってcでルールかかない
259デフォルトの名無しさん
2021/04/03(土) 00:24:59.87ID:r67/WY6G のと同じか
スレチぎみだけどbashで書けるオススメおしえろ
スレチぎみだけどbashで書けるオススメおしえろ
260デフォルトの名無しさん
2021/04/03(土) 00:28:21.58ID:YB/KO+42 > bashで書けるオススメおしえろ
どういう意味?
makeは依存ファイルに基づいてビルドするターゲットを決めるものだけど
その機能を使わないで、ただのタスクランナーとして使うなら
普通にシェルスクリプトにコード書けばいいんじゃん?
よくinstall.shとかあるでしょ?
インストールというタスクを実行してる
どういう意味?
makeは依存ファイルに基づいてビルドするターゲットを決めるものだけど
その機能を使わないで、ただのタスクランナーとして使うなら
普通にシェルスクリプトにコード書けばいいんじゃん?
よくinstall.shとかあるでしょ?
インストールというタスクを実行してる
261デフォルトの名無しさん
2021/04/03(土) 00:37:33.71ID:r67/WY6G >>260
ロジック頭から追わなくてもルールベースで書けるってのが意義では、ここだけmake信者の気持ちは理解できる
カジュアル用途なら再コンパイル判定は要らないし、トポロジカルソートだけしてくれれば大体みんな満足でしょう
シェルオタとしては上の方に出てるtsort実装もやってみたくはある
ロジック頭から追わなくてもルールベースで書けるってのが意義では、ここだけmake信者の気持ちは理解できる
カジュアル用途なら再コンパイル判定は要らないし、トポロジカルソートだけしてくれれば大体みんな満足でしょう
シェルオタとしては上の方に出てるtsort実装もやってみたくはある
262デフォルトの名無しさん
2021/04/03(土) 00:40:42.08ID:YB/KO+42 >>261
ルールって何?ルールがなにもないんだけど?
ルールって何?ルールがなにもないんだけど?
263デフォルトの名無しさん
2021/04/03(土) 00:42:44.05ID:r67/WY6G264デフォルトの名無しさん
2021/04/03(土) 00:52:45.70ID:r67/WY6G >>262
connect: lounch-serverみたいな感じ、これなら生tsortでも済むけど
connect: lounch-serverみたいな感じ、これなら生tsortでも済むけど
265デフォルトの名無しさん
2021/04/03(土) 00:53:12.25ID:YB/KO+42 >>263
適切な順番に並べればいいだけじゃん?
例えばmake.shとか作って
task1() { ・・・}
task2() { ・・・}
task3() { ・・・}
cmd1() {
task1
task2
task3
}
"$@"
とか書けば、make.sh cmd1でこの順番通りに実行できるでしょ?
task2がtask3に絶対依存するってものなら
task2の中からtask3を呼び出せばいいだけだし
シンプルな手続き型で書けることを
知らなきゃわからない独自の定義構文で書くのってアホらしいと思う
適切な順番に並べればいいだけじゃん?
例えばmake.shとか作って
task1() { ・・・}
task2() { ・・・}
task3() { ・・・}
cmd1() {
task1
task2
task3
}
"$@"
とか書けば、make.sh cmd1でこの順番通りに実行できるでしょ?
task2がtask3に絶対依存するってものなら
task2の中からtask3を呼び出せばいいだけだし
シンプルな手続き型で書けることを
知らなきゃわからない独自の定義構文で書くのってアホらしいと思う
266デフォルトの名無しさん
2021/04/03(土) 00:55:23.30ID:r67/WY6G 依存とレシピを同一視できるのが強みじゃないかな
267デフォルトの名無しさん
2021/04/03(土) 00:56:16.66ID:YB/KO+42 なんのために?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」 「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 [Hitzeschleier★]
- 中国から訓練の連絡あったが、区域など具体的な内容知らされず=小泉防衛相 [♪♪♪★]
- 空自機レーダー照射、音声データ公開 中国 ★4 [蚤の市★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダーを照射を批判、同事案で中国を批判するのは初めて [お断り★]
- 【高市早苗総理】食料品消費減税に慎重「今すぐ約束できない」…「物価上昇率は徐々に落ち着いていくと見込んでいる」 [Hitzeschleier★]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」 [931948549]
- 【正論】高市さん「『企業献金について与野党で協議する』という答弁は石破個人のものであり、もはや無効」特定野党を完全論破 [519511584]
- 【悲報】高市早苗政権に文春砲が連発! [115996789]
- 【正論】高市さん「長期金利が上がり続けていくことよりも、日本が成長していく方が大事」 [519511584]
- ギャル時代の私見て
- 自作pc時期が悪いおじさん、絶命 [329329848]
