シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
探検
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
717デフォルトの名無しさん
2019/06/23(日) 23:42:25.49ID:T9PQd+F5 なんか寧ろ
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
718デフォルトの名無しさん
2019/06/24(月) 00:09:49.32ID:JSF3ka2M719デフォルトの名無しさん
2019/06/24(月) 08:34:33.19ID:Ih+U6NjR sed, awk, perl でほとんどの場合は事足りるね
720デフォルトの名無しさん
2019/06/24(月) 09:13:55.59ID:XM+cNyeI awk使うならsedいらんやろ
perl使うならawkいらんやろ
perl使うならawkいらんやろ
721デフォルトの名無しさん
2019/06/24(月) 09:16:06.21ID:d7e7JOi5 awkは書かねえ
たった1行
たった1行
722デフォルトの名無しさん
2019/06/24(月) 09:26:43.54ID:Ih+U6NjR 最近は ruby も使ってるな
だからって ruby 以外全部いらんとか言わないけどなw
だからって ruby 以外全部いらんとか言わないけどなw
723デフォルトの名無しさん
2019/06/24(月) 09:54:11.13ID:GG24ezzu シェルスクリプトと言いながら、ほとんどをawk使って実装しているのを見ると
お前大したことないなって思ってしまう。
お前大したことないなって思ってしまう。
724デフォルトの名無しさん
2019/06/24(月) 13:17:34.61ID:a0F4XMAJ awk は、CSV が使えないだろ
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
725デフォルトの名無しさん
2019/06/24(月) 13:33:16.85ID:c6qVqrI9 まあ適材適所ですよねー
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
726デフォルトの名無しさん
2019/06/24(月) 13:39:12.42ID:O6cXrA2h GNU awk なら組込み変数 FPAT(Field PATtern) を使う方法が
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
727デフォルトの名無しさん
2019/06/24(月) 14:17:45.54ID:ZKJigLEQ 素のwindowsで正規表現パターンの置換コマンドを使おうとする場合、
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
728デフォルトの名無しさん
2019/06/24(月) 14:20:32.48ID:GG24ezzu WSLの(Ubuntuの)sedやろ
729デフォルトの名無しさん
2019/06/24(月) 17:10:03.02ID:qnOmIbRW いずれにしてもPython・Ruby・Perlを中途半端に知ってるせいで
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
730デフォルトの名無しさん
2019/06/24(月) 19:20:37.72ID:lyh6bIzY >>727
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
731デフォルトの名無しさん
2019/06/24(月) 19:42:19.51ID:hXFbATXB シェルスクリプトでは、コマンドが別途必要ということからくる互換性を考えると、
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
732デフォルトの名無しさん
2019/06/24(月) 19:44:29.99ID:hXFbATXB > スプリクト
自分でこれ何?とか思ったわw
自分でこれ何?とか思ったわw
733デフォルトの名無しさん
2019/06/24(月) 19:52:23.47ID:DDT4XoH6 バッド・スプリクト
734デフォルトの名無しさん
2019/06/24(月) 20:10:18.30ID:SYnG+fYe735デフォルトの名無しさん
2019/06/24(月) 20:16:04.28ID:yIlGaHve ぼくなんてほかのひとに仕事取られないように超絶技巧スクリプト作ってるぜ?
736デフォルトの名無しさん
2019/06/24(月) 20:20:52.93ID:SYnG+fYe >>735
どんなの?みてみたい
どんなの?みてみたい
737デフォルトの名無しさん
2019/06/24(月) 20:53:55.73ID:Ih+U6NjR こうしてメンテ不能なものが増えていく
そういうのは個人の趣味でやってくれ
そういうのは個人の趣味でやってくれ
738デフォルトの名無しさん
2019/06/24(月) 21:07:51.65ID:4+LiJo6+ sed 's/ /_/g' の空白を強調するために
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
739デフォルトの名無しさん
2019/06/24(月) 22:00:43.72ID:qnOmIbRW 「コマンドを別途用意する必要がある」からシェルスクリプトは不利っておかしくね?
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
740デフォルトの名無しさん
2019/06/24(月) 23:38:29.17ID:d7e7JOi5 C言語ソースの方がはるかにポータビリティが高いし対応できる人材も豊富だよな。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
741731
2019/06/25(火) 00:46:35.21ID:U26iaC7q >>739
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
742デフォルトの名無しさん
2019/06/25(火) 00:57:21.48ID:5X/+rI3v でも既存のコマンドの組み合わせでできるのに
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
743デフォルトの名無しさん
2019/06/25(火) 01:01:17.89ID:DXMPLOPq744デフォルトの名無しさん
2019/06/25(火) 01:04:49.56ID:5X/+rI3v C言語には機種依存する部分を、C言語から排除してるから
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
745デフォルトの名無しさん
2019/06/25(火) 01:58:59.20ID:yYWVi1kF まだgrepとsedとawkの基本が使えるようになった程度だけど確かに万能感あるわ
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
746デフォルトの名無しさん
2019/06/25(火) 02:41:27.82ID:DXMPLOPq747デフォルトの名無しさん
2019/06/25(火) 02:42:31.60ID:5X/+rI3v Perlはプログラム言語だよ
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
748デフォルトの名無しさん
2019/06/25(火) 02:43:29.91ID:5X/+rI3v749デフォルトの名無しさん
2019/06/25(火) 05:16:39.60ID:DXMPLOPq >>742
これ。
これ。
750デフォルトの名無しさん
2019/06/25(火) 08:12:25.16ID:7F89fU7n awkがプログラミング言語でないとでも?
751デフォルトの名無しさん
2019/06/25(火) 19:07:36.51ID:SVEcKi8R シェルスクリプトでファイル走査して、
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
752デフォルトの名無しさん
2019/06/25(火) 20:06:41.52ID:fN+iFfQl シェルスクリプトでごりごり書いたら出力結果でるまで数十秒でるようになったんで
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
753デフォルトの名無しさん
2019/06/25(火) 20:10:24.39ID:Y04/VZ6Y754デフォルトの名無しさん
2019/06/25(火) 20:20:08.32ID:cs2C/fkq >>752
パターンマッチ使えよ
パターンマッチ使えよ
755デフォルトの名無しさん
2019/06/25(火) 20:23:39.41ID:Y04/VZ6Y awk の部分は cut などに分配すると並列化で早くなるかもね
https://qiita.com/8x9/items/f1156503694d3683e78d
https://qiita.com/8x9/items/f1156503694d3683e78d
756デフォルトの名無しさん
2019/06/25(火) 20:24:51.66ID:cs2C/fkq >>753
それの遅い原因はわかっていて、ループの中でコマンドを呼び出しているから
yashは浮動小数点数が使えるから、簡単にコマンド呼び出しをなくせるし
シェルスクリプト用の浮動小数点数ライブラリがあればもっと高速化できる
もちろん他の言語よりかは遅くなるが、逆に言えば少数を使わない処理は
シェルスクリプトでも十分速い
それの遅い原因はわかっていて、ループの中でコマンドを呼び出しているから
yashは浮動小数点数が使えるから、簡単にコマンド呼び出しをなくせるし
シェルスクリプト用の浮動小数点数ライブラリがあればもっと高速化できる
もちろん他の言語よりかは遅くなるが、逆に言えば少数を使わない処理は
シェルスクリプトでも十分速い
757デフォルトの名無しさん
2019/06/25(火) 21:43:54.45ID:NEREV216 そこまでシェルスクリプトに拘るのはなんでだろ。まあスレ的にはいいけど
758デフォルトの名無しさん
2019/06/25(火) 21:57:45.49ID:DXMPLOPq 別に拘ってないよ。
前にも言ったけど、寧ろシェルスクリプトを「使わない」ことに必死な人物の方が多く見受けられる
そういう人々はPythonやRubyやらは便利で何でもできると思ってるようだが 実のところその殆どの機能はシェルスクリプトで十分まかなえる
しかもUnix系OS(これは世界で最も広く使われているOSの一つ)には既定でPythonやRubyはないがPOSIX環境ならある、というようなものもかなりある。
前にも言ったけど、寧ろシェルスクリプトを「使わない」ことに必死な人物の方が多く見受けられる
そういう人々はPythonやRubyやらは便利で何でもできると思ってるようだが 実のところその殆どの機能はシェルスクリプトで十分まかなえる
しかもUnix系OS(これは世界で最も広く使われているOSの一つ)には既定でPythonやRubyはないがPOSIX環境ならある、というようなものもかなりある。
759デフォルトの名無しさん
2019/06/25(火) 22:12:19.75ID:NEREV216 それが拘っているというのだよ、別にいいじゃん他人の好き好みなら
たんなるグルー言語としてしか使わないのがいても当たり前、グルー言語の発祥元がシェル=シェルスクリプトなんだし
無理して、技巧的にならざるを得ないシェルスクリプトでやりたくないと思うのがいても普通だろうと思うけど
その最後のもそんな窮屈な環境を持ち出さなければ、持論が弱いもしくはやはりこだわりたいだけだなと思うだけだな。世間一般的にそんな環境ってどれだけあるんだか
たんなるグルー言語としてしか使わないのがいても当たり前、グルー言語の発祥元がシェル=シェルスクリプトなんだし
無理して、技巧的にならざるを得ないシェルスクリプトでやりたくないと思うのがいても普通だろうと思うけど
その最後のもそんな窮屈な環境を持ち出さなければ、持論が弱いもしくはやはりこだわりたいだけだなと思うだけだな。世間一般的にそんな環境ってどれだけあるんだか
760デフォルトの名無しさん
2019/06/25(火) 22:14:13.67ID:cs2C/fkq こだわるってのはシェルスクリプトでやるのが難しいのをシェルスクリプトでやることであって
シェルスクリプトでやるのが簡単なことを、わざわざ他の言語で長いコード書いてやるのは
単にシェルスクリプトが使えないだけ
シェルスクリプトでやるのが簡単なことを、わざわざ他の言語で長いコード書いてやるのは
単にシェルスクリプトが使えないだけ
761デフォルトの名無しさん
2019/06/25(火) 22:18:25.41ID:NEREV216 それで?誰のこと言っているの?スレにではないどこぞのブログとかの?
そんなことことで言って、なんなの?まさか、シェルスクリプト使える俺ってわけじゃないんでしょ?
そんなことことで言って、なんなの?まさか、シェルスクリプト使える俺ってわけじゃないんでしょ?
762デフォルトの名無しさん
2019/06/25(火) 22:35:37.53ID:T59Fmr+u >>758
使うとか使わないとか、どちらかに「必死」とか考えちゃうほうがおかしくないか?
本人が使いやすいと思う使い方を、とやかくいうことでもないでしょ。
Windowsで普段PythonやRubyを使ってる人(それなりの利用者がいる)が、
たまたま別の*nixの環境を使うことになった場合、
慣れないシェルスクリプトを使うことより使い慣れた各種言語を使うことだって選択肢としてあり得る。
たとえ、自己満足でそれを選択したとしても、それはそれで否定されるようなことじゃないよね。
使うとか使わないとか、どちらかに「必死」とか考えちゃうほうがおかしくないか?
本人が使いやすいと思う使い方を、とやかくいうことでもないでしょ。
Windowsで普段PythonやRubyを使ってる人(それなりの利用者がいる)が、
たまたま別の*nixの環境を使うことになった場合、
慣れないシェルスクリプトを使うことより使い慣れた各種言語を使うことだって選択肢としてあり得る。
たとえ、自己満足でそれを選択したとしても、それはそれで否定されるようなことじゃないよね。
763デフォルトの名無しさん
2019/06/25(火) 22:37:43.25ID:cs2C/fkq × 自己満足でそれを選択したとしても、
○ シェルスクリプトが使えない能力不足で選択しても
だろ?
○ シェルスクリプトが使えない能力不足で選択しても
だろ?
764デフォルトの名無しさん
2019/06/25(火) 22:49:52.60ID:T59Fmr+u だから、どちらでもいいと言ってるんだけど、わからんかなぁ。
765デフォルトの名無しさん
2019/06/25(火) 23:09:53.71ID:NEREV216 わざわざそんな変な訂正するくらいシェルスクリプトを使えるのがよほど自慢らしい
話にはならないな、このスレ見てるのはシェルスクリプトが使える人だろうというのに
話にはならないな、このスレ見てるのはシェルスクリプトが使える人だろうというのに
766デフォルトの名無しさん
2019/06/25(火) 23:40:27.61ID:DXMPLOPq767デフォルトの名無しさん
2019/06/26(水) 02:56:40.90ID:bFZBAYMT JCL書けてもCOBOL書けなきゃ所詮使えない奴
768デフォルトの名無しさん
2019/06/26(水) 04:39:11.67ID:A3AE1MVC JCLとかCOBOLってPCで使えるんだっけ?
769デフォルトの名無しさん
2019/06/26(水) 05:53:32.15ID:5bijRuYR COBOLは使える
JCLは意味による
JCLは意味による
770デフォルトの名無しさん
2019/06/26(水) 06:15:49.88ID:278w9ub/ シェルスクリプト書けてもC書けなきゃ所詮使えない奴
771デフォルトの名無しさん
2019/06/26(水) 08:58:30.18ID:qk5ECIA8 女子中学生Love
772デフォルトの名無しさん
2019/06/26(水) 11:09:09.74ID:+23jdxl3 例えば、環境変数PATH を、パス区切り文字で区切って、1行ずつ表示したい
PowerShell なら、
$env:Path.split( ";" )
Ruby なら、
echo $PATH | ruby -ne 'puts $_.split( ":" )'
シェルスクリプトなら、
echo $PATH | tr : "\n"
tr で変換するのが、しっくりこない!
ただ、区切り文字で区切って、1行ずつ表示したいだけ!
シェルスクリプトで、簡単・可読性が高い、書き方があるかね?
PowerShell なら、
$env:Path.split( ";" )
Ruby なら、
echo $PATH | ruby -ne 'puts $_.split( ":" )'
シェルスクリプトなら、
echo $PATH | tr : "\n"
tr で変換するのが、しっくりこない!
ただ、区切り文字で区切って、1行ずつ表示したいだけ!
シェルスクリプトで、簡単・可読性が高い、書き方があるかね?
773デフォルトの名無しさん
2019/06/26(水) 11:39:42.18ID:278w9ub/ bashなら echo -e ${PATH//:/\\n}
これなら tr のほうが可読性いいよな
これなら tr のほうが可読性いいよな
774デフォルトの名無しさん
2019/06/26(水) 12:27:41.49ID:A3AE1MVC IFS=:
for p in $PATH; do
echo "$p"
done
for p in $PATH; do
echo "$p"
done
775デフォルトの名無しさん
2019/06/26(水) 12:29:22.59ID:A3AE1MVC trは遅い。 ${PATH//:/\\n} は bash依存
776デフォルトの名無しさん
2019/06/26(水) 12:32:02.93ID:A3AE1MVC777デフォルトの名無しさん
2019/06/26(水) 14:20:31.53ID:MBtdxCbX また出たよ否定からのヤツ
778デフォルトの名無しさん
2019/06/26(水) 15:17:24.20ID:4AX1EN8S >>776
おお!すごい。
これはPOSIX準拠してるからどのOSでも(しかもPowerShellやRubyみたいな標準化されてない言語が入ってないUnix系OSですら)使える。
しかもIFSは「Internal Filed Separator」という意味で,それの値を変えるということは
「区切り文字を変える」ことを明示できる。
しかも余計な外部コマンドを使ってないから早い。
おお!すごい。
これはPOSIX準拠してるからどのOSでも(しかもPowerShellやRubyみたいな標準化されてない言語が入ってないUnix系OSですら)使える。
しかもIFSは「Internal Filed Separator」という意味で,それの値を変えるということは
「区切り文字を変える」ことを明示できる。
しかも余計な外部コマンドを使ってないから早い。
779デフォルトの名無しさん
2019/06/26(水) 15:23:24.08ID:4AX1EN8S もちろん時と場合によってPythonやC#を使ったりするけど,それでもシェルスクリプトを一番に考える理由って,規格と実装とが綺麗に分かれてることなんだよね。
PythonやC#にも一応規格というか標準はあるけど,その実装は公式のものとあと二つ三つくらいしかない。
シェルスクリプトにはPOSIX標準という「私は実装しません。この文書を読んで好きに実装して下さい」という素晴しい哲学の規格-実装の仕組みがある。
そのお陰で数十もの個々のPOSIXシェル実装があるから,様々な機械で動かせる。PDP-11用のC#コンパイラなんてないでしょ?
まあ複雑なこと(XMLパースとか排他処理とか)やろうとすると途端に面倒なことになるので,そういう時はPythonやC#に逃げるけどw
PythonやC#にも一応規格というか標準はあるけど,その実装は公式のものとあと二つ三つくらいしかない。
シェルスクリプトにはPOSIX標準という「私は実装しません。この文書を読んで好きに実装して下さい」という素晴しい哲学の規格-実装の仕組みがある。
そのお陰で数十もの個々のPOSIXシェル実装があるから,様々な機械で動かせる。PDP-11用のC#コンパイラなんてないでしょ?
まあ複雑なこと(XMLパースとか排他処理とか)やろうとすると途端に面倒なことになるので,そういう時はPythonやC#に逃げるけどw
780デフォルトの名無しさん
2019/06/26(水) 15:23:55.57ID:4AX1EN8S あ,「今時PDP-11なんて使わねーよ」なんていう例えという概念が分かっていないツッコミはなしで。
781デフォルトの名無しさん
2019/06/26(水) 15:38:30.86ID:A3AE1MVC782デフォルトの名無しさん
2019/06/26(水) 16:49:32.75ID:4AX1EN8S >>781
printfが外部コマンドのシェルがあるとは知らなんだ。
たしかに特殊組込コマンド(必ずシェルに組み込まなくてはいけないコマンド)一覧
http://pubs.opengroup.org/onlinepubs/9699919799/idx/sbi.html
にはprintfはないな。
printfが外部コマンドのシェルがあるとは知らなんだ。
たしかに特殊組込コマンド(必ずシェルに組み込まなくてはいけないコマンド)一覧
http://pubs.opengroup.org/onlinepubs/9699919799/idx/sbi.html
にはprintfはないな。
783デフォルトの名無しさん
2019/06/26(水) 17:23:49.84ID:A3AE1MVC >>782
それらはシェルに組み込まないと実現不可能なものだからね
カレントシェルの状態を変更・取得するものだから外部プロセスではできない。
それ以外は外部コマンドでいいわけだよ。
古いzshもprintfはビルトインではない
それらはシェルに組み込まないと実現不可能なものだからね
カレントシェルの状態を変更・取得するものだから外部プロセスではできない。
それ以外は外部コマンドでいいわけだよ。
古いzshもprintfはビルトインではない
784デフォルトの名無しさん
2019/06/26(水) 19:36:40.66ID:Y3pTO8/n 速度問題にするならプロファイラ欲しいよね
ボトルネック探すために
どんなツールを使っている?
ボトルネック探すために
どんなツールを使っている?
785デフォルトの名無しさん
2019/06/26(水) 19:56:32.05ID:A3AE1MVC 基本はtimeだな。あとはstrace使ってfork数の確認とか
シェルスクリプトが遅くなる原因はforkが大半なので
これを抑えるようにすると速くなる。
あとzshだとzprofというのが使える
シェルスクリプトが遅くなる原因はforkが大半なので
これを抑えるようにすると速くなる。
あとzshだとzprofというのが使える
786デフォルトの名無しさん
2019/06/26(水) 20:56:42.18ID:4AX1EN8S ていうかシェルスクリプトで速度を気にするのが間違いでは?w
早い処理速度を求めるんであればCで書けばいい。
早い処理速度を求めるんであればCで書けばいい。
787デフォルトの名無しさん
2019/06/26(水) 21:01:41.99ID:A3AE1MVC 別に間違いではないよ。
シェルスクリプトで実装るのが適切な問題を
遅いからという理由だけで、他の言語を使わなくて良くなる。
クソコード書いておいて、シェルスクリプトは遅い。
だからCで書くとか言われたらバカみたいって思うでしょ
シェルスクリプトで実装るのが適切な問題を
遅いからという理由だけで、他の言語を使わなくて良くなる。
クソコード書いておいて、シェルスクリプトは遅い。
だからCで書くとか言われたらバカみたいって思うでしょ
788デフォルトの名無しさん
2019/06/26(水) 21:24:26.72ID:4AX1EN8S >>787
> クソコード書いておいて、シェルスクリプトは遅い。
> だからCで書くとか言われたら
いや,それは単純にそんなコードを書くバカの問題であって,
プロファイラが必要になるくらい速度に厳しいプログラムを
シェルスクリプトで書いてしまえば,恐らく誰であろうとCより遅くなる。
だから「シェルスクリプトは遅い」というのは
「本質的に遅く,Cで書かないと速くならないプログラムを無理矢理シェルスクリプトで実装してる」
or
「シェルスクリプトの書き方を知らないがネット記事のコピペを切り貼りして作った凡コード」
の二通りに分かれる。
結局「バカでない人間がシェルスクリプトの速度をプロファイラを使ってまで気にする」という事態は発生しえない。
> クソコード書いておいて、シェルスクリプトは遅い。
> だからCで書くとか言われたら
いや,それは単純にそんなコードを書くバカの問題であって,
プロファイラが必要になるくらい速度に厳しいプログラムを
シェルスクリプトで書いてしまえば,恐らく誰であろうとCより遅くなる。
だから「シェルスクリプトは遅い」というのは
「本質的に遅く,Cで書かないと速くならないプログラムを無理矢理シェルスクリプトで実装してる」
or
「シェルスクリプトの書き方を知らないがネット記事のコピペを切り貼りして作った凡コード」
の二通りに分かれる。
結局「バカでない人間がシェルスクリプトの速度をプロファイラを使ってまで気にする」という事態は発生しえない。
789デフォルトの名無しさん
2019/06/27(木) 04:28:29.87ID:SGv/MKem プロファイラが必要になったからって、速度に厳しいわけじゃないぞ。
プロファイラってのは速度を追求するものではなく、ボトルネックを探すものだ。
シェルスクリプトでもちゃんと使っていれば、実用に耐えられないほど
遅くなるなんてことはないんだが
よくわかってないやつが使うと遅くなる。
大抵はループの中で大量のコマンド呼び出しをしてるからなんだけどな。
プロファイラってのは速度を追求するものではなく、ボトルネックを探すものだ。
シェルスクリプトでもちゃんと使っていれば、実用に耐えられないほど
遅くなるなんてことはないんだが
よくわかってないやつが使うと遅くなる。
大抵はループの中で大量のコマンド呼び出しをしてるからなんだけどな。
790デフォルトの名無しさん
2019/06/27(木) 17:54:22.07ID:vYBmK8+j perlのない環境で、grepやsed使って、
ついつい\d、\wとかを使って、困惑することしばし…
わかっちゃいるんだけど、よく忘れる orz
grep(-P)のように、sedも対応してくれんかのぉ
まぁ、気づかなきゃ同じことだけどw
ついつい\d、\wとかを使って、困惑することしばし…
わかっちゃいるんだけど、よく忘れる orz
grep(-P)のように、sedも対応してくれんかのぉ
まぁ、気づかなきゃ同じことだけどw
791デフォルトの名無しさん
2019/06/27(木) 18:09:55.21ID:Sx1H26YL シェルスクリプトと関係ないな。
コマンドの問題だし。
コマンドの問題だし。
792デフォルトの名無しさん
2019/06/27(木) 18:25:20.18ID:HOV3qatT だったらこのスレいらないな
793デフォルトの名無しさん
2019/06/27(木) 18:58:25.19ID:YlgL60Eu いまだに¥を平気で書いているのにとも
\使える書けるんだから\にしろ、そこからだw
って、(一部)Linuxで採用しているTakaoフォントのグリフが円記号なんだよな。元々の(古い)IPAがだが
\使える書けるんだから\にしろ、そこからだw
って、(一部)Linuxで採用しているTakaoフォントのグリフが円記号なんだよな。元々の(古い)IPAがだが
794デフォルトの名無しさん
2019/06/27(木) 19:11:05.80ID:pgi+u0Sx どんな環境でも動くシェルスクリプトって都市伝説だよね?
POSIX準拠にこだわったりってムダなことだったんだな。
どうせ可搬性が幻なら、あるがままを受け入れよう。
POSIX準拠にこだわったりってムダなことだったんだな。
どうせ可搬性が幻なら、あるがままを受け入れよう。
795デフォルトの名無しさん
2019/06/27(木) 19:40:57.78ID:Sx1H26YL 俺が作ったのはどの環境でも動いてるけど?
796デフォルトの名無しさん
2019/06/27(木) 20:22:07.56ID:gzj/T4br 僕が作ったシェルスクリプトも どの環境でも動いてくれています(KONAMI)
797デフォルトの名無しさん
2019/06/28(金) 13:06:45.81ID:hRIfy8PX798デフォルトの名無しさん
2019/06/28(金) 13:27:15.18ID:LKtIca5E >>739 のリンク先にあるPOSIXで必須とされるコマンド(grepやsedもこれに含まれる)の問題が、
シェルスクリプトと関係ないということでスレチというのなら、
このスレの存在意義が相当薄れることは確か。
シェルスクリプトと関係ないということでスレチというのなら、
このスレの存在意義が相当薄れることは確か。
799デフォルトの名無しさん
2019/06/28(金) 15:20:25.88ID:p9xekXNc >>797
じゃあお前は外部コマンド使用禁止な
じゃあお前は外部コマンド使用禁止な
800デフォルトの名無しさん
2019/06/28(金) 15:23:54.26ID:p9xekXNc 外部コマンド総合スレでも立てるか
でシェルスクリプトはスレチなw
でシェルスクリプトはスレチなw
801デフォルトの名無しさん
2019/06/28(金) 15:37:17.44ID:hRIfy8PX802デフォルトの名無しさん
2019/06/28(金) 15:40:05.21ID:p9xekXNc 反論できなくなるとアスペ認定か
どっちがアスペだよ
どっちがアスペだよ
803デフォルトの名無しさん
2019/06/28(金) 16:03:38.70ID:zQSIyUJ5 お前のログインシェルをfishにしてやろうか
804デフォルトの名無しさん
2019/06/28(金) 16:07:31.10ID:xFtlJ1q/ ww
805デフォルトの名無しさん
2019/06/28(金) 16:33:23.58ID:4HrFS9y+ いいやんfish
何で笑い物になってんの??
何で笑い物になってんの??
806デフォルトの名無しさん
2019/06/28(金) 16:45:37.81ID:hRIfy8PX807デフォルトの名無しさん
2019/06/28(金) 17:01:53.99ID:p9xekXNc808デフォルトの名無しさん
2019/06/28(金) 17:43:39.21ID:iEcNYkGc かなり馬鹿そうだな
809デフォルトの名無しさん
2019/06/28(金) 18:11:19.47ID:T2T4CcZF fishってw
810デフォルトの名無しさん
2019/06/28(金) 18:56:40.55ID:4HrFS9y+ シェルスクリプトが本当にイケてたらfishスクリプトだのVスクリプトだの出てこない。
811デフォルトの名無しさん
2019/06/28(金) 19:09:05.16ID:Ul5nd1dv C言語が本当にイケてたらPerlなんて出てこない
↑好きな言語に変更してください
↑好きな言語に変更してください
812デフォルトの名無しさん
2019/06/28(金) 19:11:15.58ID:Ul5nd1dv fishはシェルとして使うのは良いけど、
/bin/shでも/bin/bashでも動かないから
スクリプトとしては使えないんだよな
/bin/shでも/bin/bashでも動かないから
スクリプトとしては使えないんだよな
813デフォルトの名無しさん
2019/06/28(金) 19:12:15.60ID:Ul5nd1dv 良い言語が必ずしも普及するわけじゃなくて
結局は互換性、標準準拠のものが最後には残るんだよね。
JavaScriptとaltJSの関係でもよくわかった
結局は互換性、標準準拠のものが最後には残るんだよね。
JavaScriptとaltJSの関係でもよくわかった
814デフォルトの名無しさん
2019/06/28(金) 19:54:48.75ID:5SvDrToF つまりTypeScriptもいずれ滅びると。
815デフォルトの名無しさん
2019/06/28(金) 20:01:22.66ID:Ul5nd1dv816デフォルトの名無しさん
2019/06/28(金) 20:48:45.94ID:T2T4CcZF 男はCでwebアセンブラ書け
817デフォルトの名無しさん
2019/06/28(金) 21:33:38.23ID:T2T4CcZF ていうかそんなに互換性やら保守性やら気にするんだったら黙ってPOSIXに準拠しとけよとは思うけどね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 中国人「高市早苗が首相になってからの日本での中国人観光客の1日がこれらしいw」中国でバカウケ [165981677]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- >>3と>>5のワードを使ってai生成する
- ガバガバなんだよ
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
