- 将来性ないプログラミング言語。Delphi含まれず安心
23 :デフォルトの名無しさん[sage]:2019/08/10(土) 16:25:32.93 ID:L+B8OP2P - > そこに頼らないといけない時点で問題あるわな
どんな問題?
|
- シェルスクリプト総合 その30
842 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:10:57.28 ID:L+B8OP2P - >>838
逆じゃね? 何かをシェルスクリプトで作ったとして 多くの環境で使うなら、多くの環境で動かんとだめでしょw
|
- シェルスクリプト総合 その30
843 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:14:02.55 ID:L+B8OP2P - >>841
例えば組み込み機器でPerlやPythonも入ってない、入れられないときはどうする? シェルスクリプトはかろうじて使える(最初から入ってるから) Goはバイナリがでかいから、空き容量も制限されてる組み込み機器には入れたくない 今はIoT時代ですよ(笑)
|
- シェルスクリプト総合 その30
845 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:35:44.47 ID:L+B8OP2P - >>844
組み込みLinux用に作られたBusyBoxっていうのがあって、 一つのバイナリに様々な外部コマンド(catとかsedとかwcとか)が詰め込まれてる。 そのBusyboxにashも組み込まれてる。 ただし様々な外部コマンドが組み込まれてるといっても、POSIX完全準拠を 目指しているわけじゃなくて、容量節約のためあまり使われないオプションを実装していない。 それでもシェル(ash)はPOSIX準拠になってる。 BSDなどでもそうなんだが外部コマンドはオプションが違うことがある。 オプションの違いでLinuxで動いたものがMacで動かなかったりするが シェルスクリプトで実装していればそういうこともない。
|
- シェルスクリプト総合 その30
846 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:37:10.25 ID:L+B8OP2P - (Busyboxは組み込み用ではあるが、組み込みLinux用とは限らんかw)
|
- シェルスクリプト総合 その30
848 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:53:19.49 ID:L+B8OP2P - そりゃすることもあるだろw
IoTはモノのインターネットの略なんだから インターネットにあるものと連携してるよ。 TSVやCSVだけじゃなくJSONやXMLやYAMLも扱いたい (簡易なことならsedなどで対応できるが)
|
- シェルスクリプト総合 その30
851 :デフォルトの名無しさん[sage]:2019/08/10(土) 18:04:41.45 ID:L+B8OP2P - >>849
POSIX準拠でシェルスクリプトで書けば可能だって言ってんだろw
|
- シェルスクリプト総合 その30
856 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:15:08.08 ID:L+B8OP2P - 例えば、gitはいろんな環境で使うが、35.7%がシェルスクリプトである
https://github.com/git/git
|
- シェルスクリプト総合 その30
859 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:29:59.92 ID:L+B8OP2P - 35.7%っていってるんだから、探すまでもなく他の使ってるってわかるだろw
|
- シェルスクリプト総合 その30
860 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:30:21.32 ID:L+B8OP2P - >>857
gitがPOSIXコマンドだって誰も言ってない
|
- シェルスクリプト総合 その30
863 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:51:14.48 ID:L+B8OP2P - そりゃ具体例があるという話をされると困るやろなw
|
- シェルスクリプト総合 その30
864 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:52:40.23 ID:L+B8OP2P - じゃあ続いての具体例、rbenv。Shellが96.5%
https://github.com/rbenv/rbenv
|
- シェルスクリプト総合 その30
867 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:59:11.41 ID:L+B8OP2P - gitを使うシェルスクリプトってなんのこと?
|
- シェルスクリプト総合 その30
870 :デフォルトの名無しさん[sage]:2019/08/10(土) 20:03:07.19 ID:L+B8OP2P - gitを呼び出すシェルスクリプトの話は誰もしてない
|
- シェルスクリプト総合 その30
871 :デフォルトの名無しさん[sage]:2019/08/10(土) 20:04:38.53 ID:L+B8OP2P - >>869
世界の話をするな。ここにいる人たちだけの話をしろ 俺たちの村の話だ。って言いたいわけ?
|
- シェルスクリプト総合 その30
880 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:19:03.25 ID:L+B8OP2P - >>874
> ピュアシェルスクリプトの nkf 互換コマンドを出せばいいのに、って思う しらんけど、どうせ大部分がawk実装で、 シェルスクリプトで実装してないんだろ?
|
- シェルスクリプト総合 その30
881 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:19:45.62 ID:L+B8OP2P - >>879
> どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの? 話ずれまくりw いろんな環境で動くことが重要って話だろ
|
- シェルスクリプト総合 その30
884 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:33:10.93 ID:L+B8OP2P - >>883
思いつかない人のために、gitやrbenvという具体例をだしました。
|
- シェルスクリプト総合 その30
885 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:35:17.53 ID:L+B8OP2P - >>882
それがどこにあるのかしらんが、iconvがPOSIXなのでどうでもいいかなw nkfなんて所詮日本語にしか対応してないし
|
- シェルスクリプト総合 その30
887 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:39:50.03 ID:L+B8OP2P - >>886
もしかして俺が誰か特定したかったのか?
|
- シェルスクリプト総合 その30
889 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:50:32.32 ID:L+B8OP2P - >>888
> そのいろんな環境で動くなにを書いているんだよ 俺の個人的な便利ツール
|
- シェルスクリプト総合 その30
890 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:52:52.92 ID:L+B8OP2P - 便利ツールは、俺が興味がある環境すべてで使う。
LinuxやBSDやmacOSや組み込み環境 Unixも興味あるがSorarisとMac以外は個人で使うのが難しいので残念
|
- シェルスクリプト総合 その30
892 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:55:49.46 ID:L+B8OP2P - >>891
俺が和洋中すべての料理を食べるって言ったら、 これらの料理を食べるのは、俺だけってことになるんか?
|
- シェルスクリプト総合 その30
896 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:01:46.59 ID:L+B8OP2P - >>895
お前、他の人が「個人的な便利ツール」を持ってないとでも思ってんのか? なんで、俺一人から情報もらったら、 世界全部のことを知ったつもりになるのさw
|
- シェルスクリプト総合 その30
897 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:03:58.32 ID:L+B8OP2P - >>894
あのー?その問いに答えたつもりはないんですが? >>855が「具体性ゼロだな。多くは限られた環境しか使わんし、それで動けばいい」っていうから 具体的に、いろんな環境で動かすツールを出したんですが?
|
- シェルスクリプト総合 その30
899 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:12:33.18 ID:L+B8OP2P - >>898
だから、俺の個人ツールの話を聞いただけで、 POSIX準拠が必要なのは、世界中で俺だけだって判断してるのが 意味不明だって言ってるんだがw
|
- シェルスクリプト総合 その30
901 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:24:37.93 ID:L+B8OP2P - >>900
あのさぁ、俺はすべてのシェルスクリプトがPOSIX準拠するべきだなんて一言も言ってないんだが? お前の思い込みだろ。俺がそう言ってるって。 俺は POSIX準拠であれば、多くの環境で動く(事実) 俺が使ってる個人ツールは、多くの環境で動かしたい(事実) 俺の個人ツール以外でも、gitに含まれてるスクリプトやrbenvなど多くの環境で動かしたいものはある(事実) としか言ってないの
|
- シェルスクリプト総合 その30
902 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:27:45.82 ID:L+B8OP2P - 他にも俺が言ったことには、
外部コマンドはオプションが異なることがあるので、シェルスクリプトで実装すると、 その違いに振り回されなくてすむ というのがあります。
|
- シェルスクリプト総合 その30
907 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:56:44.56 ID:L+B8OP2P - > 最新のOSXだとZshになってるんだな
という話に続いて、他のOSではいろんなシェルが使われてるという話をすることに なんの問題があるのかわからんが? bashをインストールするのが大変な環境もあるんだし POSIX準拠の範囲でできるなら、POSIX準拠でやればいいだろ。対して手間もかからんし。 逆にオプションの違いで動かんことに対応する方が手間なんだよ。 上の方でも出てたけど、sort -Vで動くウェーイってやってたらmacOSで動かんのだろ? (ぐぐって確かに動かんというような記事ばかりだが、最新のmacOSだと対応してる気もするw)
|
- シェルスクリプト総合 その30
909 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:01:39.84 ID:L+B8OP2P - >>904
> だいたいPOSIXに従ってないシェルもあるんだから > POSIXで書いたからといってどこでも動くわけじゃないし。 もっといい案があれば採用するが? 条件後出しするなって言われそうだから条件 組み込み機器など含めてソフトウェアを追加するのが困難なシステムでも動く コンパイルはもとより、クロスコンパイル環境も不要 この条件でできるだけ多くの環境で同じように動く
|
- シェルスクリプト総合 その30
910 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:02:36.58 ID:L+B8OP2P - >>908
どこをどう読めば、お前は命令されてるように感じるんだ?w
|
- シェルスクリプト総合 その30
912 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:04:27.98 ID:L+B8OP2P - 補足
> この条件でできるだけ多くの環境で同じように動く これは多くの"種類"の環境っていみな 世の中Windowsばかりだろという反論は筋違い
|
- シェルスクリプト総合 その30
913 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:05:05.76 ID:L+B8OP2P - >>911
する必要もないのに、bashに依存してる人
|
- シェルスクリプト総合 その30
916 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:06:03.29 ID:L+B8OP2P - >>915
だからそれってなんだよw
|
- シェルスクリプト総合 その30
918 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:06:45.91 ID:L+B8OP2P - ずっと同じこと言ってるだろw
|
- シェルスクリプト総合 その30
920 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:09:10.56 ID:L+B8OP2P - 唐揚げにレモンをかけると美味しくなりますよって言ったら、
「俺にレモンをかけろと命令したな!ムキー」って怒るような 話が通じない人が多いw
|
- シェルスクリプト総合 その30
922 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:11:23.84 ID:L+B8OP2P - >>919
bashに依存してもいいだろ。というと POSIXのすることのメリットは矛盾しないからねw 「bashに依存してもいいだろ」はお前の主観で、 POSIX準拠で作ることのメリットは客観的なもの 客観的事実に、主観で反論しないでください
|
- シェルスクリプト総合 その30
923 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:11:53.50 ID:L+B8OP2P - >>921
そうだと良いね(笑)
|
- シェルスクリプト総合 その30
925 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:13:23.36 ID:L+B8OP2P - >>924
「POSIX好き」は主観 そのPOSIX好きの俺が述べてるPOSIX準拠のメリットは客観
|
- シェルスクリプト総合 その30
926 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:14:17.64 ID:L+B8OP2P - あと11レスで今日一日でこのスレの1/10を俺が占拠したことになる。
お前ら、レス頑張れ!
|
- シェルスクリプト総合 その30
928 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:15:52.78 ID:L+B8OP2P - >>927
POSIX準拠で書けば、メリットがあるので、 POSIX準拠で書く話をしましょう。 ネタがなければ、私が時々問題を出しますよ 興味がない人は見なくていいです。 レスもしなくていいです。
|
- シェルスクリプト総合 その31
1 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:17:50.64 ID:L+B8OP2P - シェルスクリプトに関する総合スレッドです。
全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 ・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。 シェルスクリプト総合 その30 https://mevius.5ch.net/test/read.cgi/tech/1561989867/
|
- シェルスクリプト総合 その31
2 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:19:50.86 ID:L+B8OP2P - お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです) つまりシバンは #!/bin/sh です。 特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。 macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意 自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか? ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。 FreeBSD ユーザーは /bin/sh の実体が ash なので注意。 Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。 macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。 android ユーザーは /bin/sh の実体が mksh なので注意。 csh/tcshでのシェルスクリプトは*まったく推奨しません*。 (参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc) ・POSIX に準拠しましょう 有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています。 最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます) ・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell Heirloom sh: http://heirloom.sourceforge.net/sh.html Dash shell: http://gondor.apana.org.au/~herbert/dash/ ・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります Man ページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。 apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。 ・ワイルドカードは正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな
|
- シェルスクリプト総合 その31
3 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:21:14.80 ID:L+B8OP2P - 初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。 シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたら man(1) を引きましょう。 ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。 回答者への注意事項 ・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。 安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。 ・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。 ・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。
|
- シェルスクリプト総合 その31
4 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:21:34.36 ID:L+B8OP2P - 参考リンク
Bourne shellの種類とか歴史とかシェルの挙動とかいろいろ詳しい https://www.in-ulm.de/~mascheck/
|
- シェルスクリプト総合 その30
931 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:23:45.46 ID:L+B8OP2P - >>929
Javaで書けばいろんなOSで動きます。 と言ったからって、ドライバまでJavaで書けと言ってるんだ! なんて思いますか?
|
- シェルスクリプト総合 その30
933 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:29:21.42 ID:L+B8OP2P - >>905
少なくとも5年前から > □A. お約束 > 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、 > Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。 > bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。 > 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。 https://peace.5ch.net/test/read.cgi/unix/1415634843/
|
- シェルスクリプト総合 その30
934 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:30:20.34 ID:L+B8OP2P - >>932
> ドライバがJavaで書けるなら書く人もいるだろう。 そう思うのが普通ですよね? 「書けと命令したんだ!ムキー」ってなる方がおかしい
|
- シェルスクリプト総合 その30
936 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:32:16.77 ID:L+B8OP2P - >>932
Javaで例えれば冷静になって、 > ドライバがJavaで書けるなら書く人もいるだろう。 っていうわけだよね でも、POSIXで書けばいろんなOSで動きますって言うと、頭に血が上って > すべてのシェルスクリプトがPOSIX準拠するべきだ > と言ってるのね。好きにしろではなくてPOSIXを強く勧める押し付けがましく っていう感想に変わっちゃうんだよねw
|
- シェルスクリプト総合 その30
937 :デフォルトの名無しさん[sage]:2019/08/10(土) 23:33:23.10 ID:L+B8OP2P - 俺が「POSIXで書けばいろんな環境で動きます。」って言ったんだから
「POSIXで書けるなら書く人もいるだろう。」って言えばいいだけなのにw Javaの場合みたいに!
|