シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
探検
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
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に準拠しとけよとは思うけどね。
818デフォルトの名無しさん
2019/06/28(金) 21:40:41.84ID:fHg6yLGA POSIXモードもしくはPOSIX準拠をうたっているのが本当か?というとこかな
なにか完璧POSIX準拠それ以上も以下もないってどれだ?dash?
あと、POSIX以前もしくは不備のとかちょっと前の話題でもあったねえ
なにか完璧POSIX準拠それ以上も以下もないってどれだ?dash?
あと、POSIX以前もしくは不備のとかちょっと前の話題でもあったねえ
819デフォルトの名無しさん
2019/06/28(金) 23:19:35.88ID:2yxMx+rx シェルスクリプトの言語仕様なんてたかが知れてるんだから
覚えられないはずがないんだが、それができないのは覚えられないんじゃなくて
シェルプログラミングのプログラミングスタイルを理解できてないってことなんじゃないかな
手続き型というより関数型に近いスタイルだからね
>>818
dash(ash)一択でしょ
debian/ubuntuのデフォルトシェルだし
その他のシェルはPOSIX準拠ではない配列が使えてしまう
覚えられないはずがないんだが、それができないのは覚えられないんじゃなくて
シェルプログラミングのプログラミングスタイルを理解できてないってことなんじゃないかな
手続き型というより関数型に近いスタイルだからね
>>818
dash(ash)一択でしょ
debian/ubuntuのデフォルトシェルだし
その他のシェルはPOSIX準拠ではない配列が使えてしまう
820デフォルトの名無しさん
2019/06/28(金) 23:25:17.84ID:CM5w69Yd なんでshじゃダメなの?いや煽りでなしに。
821デフォルトの名無しさん
2019/06/28(金) 23:28:28.79ID:2yxMx+rx >>820
shの実体は何?
shの実体は何?
822デフォルトの名無しさん
2019/06/28(金) 23:37:24.02ID:CM5w69Yd 知らんけどもともとは何だったの?
823デフォルトの名無しさん
2019/06/28(金) 23:37:32.86ID:GaQSOKcq >>819
dashがたぶん近いんだろうが、POSIX準拠それ以上も以下もないのか本当に?というとこかな
POSIX準拠それ以上も以下もないんだったら、dashで動けば終了、他で動かないのはPOSIX準拠してないからそいつが悪いで済むんだろうなw
dashがたぶん近いんだろうが、POSIX準拠それ以上も以下もないのか本当に?というとこかな
POSIX準拠それ以上も以下もないんだったら、dashで動けば終了、他で動かないのはPOSIX準拠してないからそいつが悪いで済むんだろうなw
824デフォルトの名無しさん
2019/06/28(金) 23:42:51.93ID:GaQSOKcq >>822
/bin/sh の実態がbashだったりkshだったりdashだったりというのが現在
元々のオリジナルのshはアレすぎて現存しないんじゃないかな
オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
という流れじゃなかったかなあ。/bin/sh なんて存在しない、現在
/bin/sh の実態がbashだったりkshだったりdashだったりというのが現在
元々のオリジナルのshはアレすぎて現存しないんじゃないかな
オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
という流れじゃなかったかなあ。/bin/sh なんて存在しない、現在
825デフォルトの名無しさん
2019/06/28(金) 23:51:49.75ID:CM5w69Yd >>824
知らんけど聞く限り/bin/shの指し先が千差万別なのが諸悪の根元なんじゃないの?
どんなにショボくてもオリジナルのsh復興してそれ以外で書いちゃダメってことにすれば?
それで不便があったとしても、それが本来のshでしょ。
わがまま言っちゃいかん。
知らんけど聞く限り/bin/shの指し先が千差万別なのが諸悪の根元なんじゃないの?
どんなにショボくてもオリジナルのsh復興してそれ以外で書いちゃダメってことにすれば?
それで不便があったとしても、それが本来のshでしょ。
わがまま言っちゃいかん。
826デフォルトの名無しさん
2019/06/28(金) 23:54:24.85ID:2yxMx+rx オリジナルのsh = POSIX準拠ではない
改変版のsh = OSとそのバージョンの数だけ存在する(数十種類レベル)
改変版のsh = OSとそのバージョンの数だけ存在する(数十種類レベル)
827デフォルトの名無しさん
2019/06/29(土) 00:00:54.47ID:4wm1mmLB オリジナルのshのソースコード(C言語)
http://x68000.q-e-d.net/~68user/unix/pickup?sh
略
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
略
IF input>0
THEN Ldup(input,INIO);
input=INIO;
FI
略
(C言語)
http://x68000.q-e-d.net/~68user/unix/pickup?sh
略
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
略
IF input>0
THEN Ldup(input,INIO);
input=INIO;
FI
略
(C言語)
829デフォルトの名無しさん
2019/06/29(土) 00:09:28.44ID:Mqz9B8yO >>825
いやいや。POSIX規格の元がshではなくてkshということで、その時点でshは終わってる過去の遺物だろう
言うようなのは sh という別の規格があった方がいいと言っているようなもんだな。POSIXはなぜ作られたのかよーく考えよう
わがままwwてか「何も知らないくせにw」うるせーよっ
いやいや。POSIX規格の元がshではなくてkshということで、その時点でshは終わってる過去の遺物だろう
言うようなのは sh という別の規格があった方がいいと言っているようなもんだな。POSIXはなぜ作られたのかよーく考えよう
わがままwwてか「何も知らないくせにw」うるせーよっ
830デフォルトの名無しさん
2019/06/29(土) 00:10:03.56ID:4wm1mmLB831デフォルトの名無しさん
2019/06/29(土) 00:15:00.86ID:Mqz9B8yO >>827
Bourne さんは Algol68 プログラマであったそうで〜Bourne shell のソース自体も Algol68 風になっており
らしいからまあしょうがないんだろうと思うけど、defineの使い方の説明のサンプルでそういうのを見たことがあるが、まさか実際にというのは、それも有名どころがというはちょっと驚き
Bourne さんは Algol68 プログラマであったそうで〜Bourne shell のソース自体も Algol68 風になっており
らしいからまあしょうがないんだろうと思うけど、defineの使い方の説明のサンプルでそういうのを見たことがあるが、まさか実際にというのは、それも有名どころがというはちょっと驚き
832デフォルトの名無しさん
2019/06/29(土) 00:25:29.35ID:0fRKmc/o POSIX準拠をうたうOSのデフォルトシェルはPOSIX準拠を保証する。
Linuxの場合は/bin/shがこれにあたる。
ディストリによって実体は bash,dashと様々だが、
自身がshの場合はPOSIX互換モードで動作するようになっている。
とはいえ重箱の隅をつつけば、実装が追い付いていない部分はあるがね。
Linuxの場合は/bin/shがこれにあたる。
ディストリによって実体は bash,dashと様々だが、
自身がshの場合はPOSIX互換モードで動作するようになっている。
とはいえ重箱の隅をつつけば、実装が追い付いていない部分はあるがね。
833デフォルトの名無しさん
2019/06/29(土) 00:28:01.49ID:XWmNXWFB 互換と準拠を取り違えてるのか
初期のUNIXだとglobが外部コマンドらしいな
なんで検索機能をこう呼ぶのかよく分かったわ
初期のUNIXだとglobが外部コマンドらしいな
なんで検索機能をこう呼ぶのかよく分かったわ
834デフォルトの名無しさん
2019/06/29(土) 00:53:37.63ID:Mqz9B8yO >>824
>オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
オリジナルのshが機能不足だったり独特だったりで、(cshや)kshやbashやashやzshなどなどが出て乱立する
これはイカんということでPOSIXで規格をkshをベースに作る
ash(dash)は元々オリジナルshの(+ちょっとだけ機能追加した)再実装なので、それにPOSIX準拠という以外の余計なことは(ほとんどあまり)してない
ってとこかな
>オリジナルのshがアレなのでbashとかkshとか出る、kshをベースにPOSIX規格を作る、POSIXの仕様に合わせようと各shellは頑張るが、方言あるやん(確かkshでさえ)なのでash(dash)が出る
オリジナルのshが機能不足だったり独特だったりで、(cshや)kshやbashやashやzshなどなどが出て乱立する
これはイカんということでPOSIXで規格をkshをベースに作る
ash(dash)は元々オリジナルshの(+ちょっとだけ機能追加した)再実装なので、それにPOSIX準拠という以外の余計なことは(ほとんどあまり)してない
ってとこかな
835デフォルトの名無しさん
2019/06/29(土) 02:07:31.33ID:rJpz/Ysh 煮え切らない言い方だな…
そんなことしてるから可搬性なくなるんだよ。
機能不足だろうが独特だろうがそれがsh。
一切追加するな!余計なことするな!
そんなことしてるから可搬性なくなるんだよ。
機能不足だろうが独特だろうがそれがsh。
一切追加するな!余計なことするな!
836デフォルトの名無しさん
2019/06/29(土) 02:49:26.27ID:2GBw6kuy ググってなりもってこいよ、文句言うくらいだったら
文句言う自分では探さないで奇抜な怒りwだけって奇特な人だな
奇抜=あれやこれややる人が多数、そういうのが好まれ使われてるんだから、それを頭から否定する
文句言う自分では探さないで奇抜な怒りwだけって奇特な人だな
奇抜=あれやこれややる人が多数、そういうのが好まれ使われてるんだから、それを頭から否定する
837デフォルトの名無しさん
2019/06/29(土) 02:50:55.42ID:4wm1mmLB だからオリジナルのshだと可搬性がないんだって
838デフォルトの名無しさん
2019/06/29(土) 05:00:31.68ID:tuUcuaq1 「オリジナルのsh」とかいう自分用語で語るのやめてくれない?
839デフォルトの名無しさん
2019/06/29(土) 05:36:56.40ID:4wm1mmLB オリジナルのshという言い方が嫌なら、
最初に作られたshでもいいけど?
最初に作られたshでもいいけど?
840デフォルトの名無しさん
2019/06/29(土) 05:44:09.80ID:4wm1mmLB bash, zsh, ksh, (d)ash, yash, poshのいずれでもないshは可搬性がない
841デフォルトの名無しさん
2019/06/29(土) 06:13:45.36ID:khQF1iKv 文句言うだけが生きがいもしくは言わないと死んじゃうんだろうw
842デフォルトの名無しさん
2019/06/29(土) 07:46:29.87ID:tuUcuaq1 Bourneって「ボーン」って読むの?
843デフォルトの名無しさん
2019/06/29(土) 09:05:01.55ID:e/5j8c1q >>840
独自機能を使ったら可搬性がないのだからbash, zsh, ksh, (d)ash, yash, poshと別れてるのは百害あって一利なし。
bash, zsh, ksh, (d)ash, yash, poshのintersectionを取って新時代のshとし、他は滅ぶべし。
それ以外を使うものは地獄の業火で焼かれるべき。
独自機能を使ったら可搬性がないのだからbash, zsh, ksh, (d)ash, yash, poshと別れてるのは百害あって一利なし。
bash, zsh, ksh, (d)ash, yash, poshのintersectionを取って新時代のshとし、他は滅ぶべし。
それ以外を使うものは地獄の業火で焼かれるべき。
844デフォルトの名無しさん
2019/06/29(土) 09:06:26.66ID:YzN8MsSb bash はどこにでもあるイメージ
845デフォルトの名無しさん
2019/06/29(土) 11:12:01.76ID:XWmNXWFB UNIXでBourne shell誕生
SVR4で軽量版bshのash誕生
Debianで改良版ashのdash誕生
BSDでcsh誕生
cshの便利機能(alias、ジョブ制御)をbashが吸収
改良版cshのtcsh誕生
bshとcshと合わせたksh(ksh88、ksh93)誕生
kshは商用なのでフリー版(pdksh、mksh)誕生
既存シェルをつまみ食いしたbash誕生
改良版bashのzsh誕生
独立系のfish誕生
適当にググったけど種類多くてワロタわ
わざわざashを作った理由やkshが分かれてる理由が分からんが
SVR4で軽量版bshのash誕生
Debianで改良版ashのdash誕生
BSDでcsh誕生
cshの便利機能(alias、ジョブ制御)をbashが吸収
改良版cshのtcsh誕生
bshとcshと合わせたksh(ksh88、ksh93)誕生
kshは商用なのでフリー版(pdksh、mksh)誕生
既存シェルをつまみ食いしたbash誕生
改良版bashのzsh誕生
独立系のfish誕生
適当にググったけど種類多くてワロタわ
わざわざashを作った理由やkshが分かれてる理由が分からんが
846デフォルトの名無しさん
2019/06/29(土) 12:16:50.57ID:L6EEl7gg 可搬性ってそんなに重要か?
そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?
やりすぎると可搬性無くて死ぬだろうけど、各々の身辺環境は異なるのだから
各々が経験に応じて決めればよくね?
echo の引数で -n が使えるか使えないかなんて考えるのやめて10年以上経つわ。
そこ重視すると可読性・メンテナンス性が、ひいては品質が落ちると思うんだがどうよ?
やりすぎると可搬性無くて死ぬだろうけど、各々の身辺環境は異なるのだから
各々が経験に応じて決めればよくね?
echo の引数で -n が使えるか使えないかなんて考えるのやめて10年以上経つわ。
847デフォルトの名無しさん
2019/06/29(土) 14:11:03.73ID:L6EEl7gg848デフォルトの名無しさん
2019/06/29(土) 14:37:45.71ID:m0/FgwM7 どんどん便利な機能が追加されて良いではないか、みんな好きなの選べば?という人種と
何も変えてはいかん、全てを標準に合わせろ!という人種
大抵の人はその中間なんだろうけど。
bash-5.0 で取り入れられた新機能、一応フォローしておくか (そしてすぐ忘れる) と思うけど
それ積極的に使っていこうぜとは思わないもの。
何も変えてはいかん、全てを標準に合わせろ!という人種
大抵の人はその中間なんだろうけど。
bash-5.0 で取り入れられた新機能、一応フォローしておくか (そしてすぐ忘れる) と思うけど
それ積極的に使っていこうぜとは思わないもの。
849デフォルトの名無しさん
2019/06/29(土) 14:49:39.62ID:khQF1iKv 新機能のうちのいくつかもそのうち当たり前に使うようになってるでしょ。便利であれば
このスレでbash特有とかあるように
このスレでbash特有とかあるように
850デフォルトの名無しさん
2019/06/29(土) 15:04:32.87ID:khQF1iKv >>845
>bshとcshと合わせたksh(ksh88、ksh93)誕生
>kshは商用なのでフリー版(pdksh、mksh)誕生
>既存シェルをつまみ食いしたbash誕生
>改良版bashのzsh誕生
kshとcshを合わせたzshが誕生
じゃないかな。で、
bshにcshの便利なヒストリ(など)を取り込んだkshが誕生
ではないかな
時系列的には
https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2019/05/Evolution-of-Linux-Shells-Types-of-Shells-in-Linux-Edureka-528x280.png
らしい。zshはcshの派生になってるけど正しくはkshからも引くべきだろうね、開発時のメッセージでそう明言してる
>bshとcshと合わせたksh(ksh88、ksh93)誕生
>kshは商用なのでフリー版(pdksh、mksh)誕生
>既存シェルをつまみ食いしたbash誕生
>改良版bashのzsh誕生
kshとcshを合わせたzshが誕生
じゃないかな。で、
bshにcshの便利なヒストリ(など)を取り込んだkshが誕生
ではないかな
時系列的には
https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2019/05/Evolution-of-Linux-Shells-Types-of-Shells-in-Linux-Edureka-528x280.png
らしい。zshはcshの派生になってるけど正しくはkshからも引くべきだろうね、開発時のメッセージでそう明言してる
851デフォルトの名無しさん
2019/06/29(土) 16:07:00.45ID:khQF1iKv ああ、cshではなくてtcshだった
This is a shar file containing zsh, a ksh/tcsh-like shell.
This is a shar file containing zsh, a ksh/tcsh-like shell.
852デフォルトの名無しさん
2019/06/29(土) 16:24:24.49ID:0fRKmc/o853デフォルトの名無しさん
2019/06/29(土) 16:43:46.48ID:tuUcuaq1854デフォルトの名無しさん
2019/06/29(土) 16:53:39.78ID:0fRKmc/o >>853
POSIXは可搬性を高めるための規格なので逆だと思います。
POSIXは可搬性を高めるための規格なので逆だと思います。
855デフォルトの名無しさん
2019/06/29(土) 16:59:43.19ID:/BkVpaGH856デフォルトの名無しさん
2019/06/29(土) 17:05:11.99ID:/BkVpaGH■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- 高市「次回選挙争点は台湾有事よ!!」自民立憲公明維新国民「やめろーー!!」これが現実になりそうな件 [469534301]
- 経済保安相「気に入らないことがあれば経済的威圧をする国への依存はリスク」日本さん遂にアメリカと断交へ!!! [472617201]
- 自閉症が「んなっしょい」と連呼するお🏡
- 「世の中、バカが多くて疲れません?」👉1991年日本人大発狂 [543236886]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 来年は卵が1パック400円以上になるらしい
