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

■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

前スレ: シェルスクリプト総合 その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/
2021/05/10(月) 19:56:07.55ID:wjJJgxye
必要ないからだろ
bash必要ならインストール
2021/05/10(月) 19:58:31.16ID:hErX5Z2R
GNU/Linuxだからログインシェル用には必ず入っていそうだが
2021/05/10(月) 20:11:08.73ID:hErX5Z2R
>>523,524 がそもそも何か勘違いしてるだけだな
(>>528も。普段はインタラクティブでdashなんて使ってるのか?)

bashの時でも「ああいう」スクリプトはPOSIX(/bin/sh)準拠で書いてたからな
別に誰も #!/bin/sh でしか書くなとは言ってないだろう。ただなんとなくかそうした方がいい程度だなw
(なんか絶対にとか言う変なのは居るけど)
必要ならbashでもzshでもなんでも好きに書けばよろしい、シバンを適切にしてればいいことだな
2021/05/10(月) 20:19:30.27ID:aEtJHiO8
/bin/shがdashへのリンクになってるだけ
UbuntuでもDebianでもデフォルトのログインシェルはbash
上でも言われてる通りbashなりの拡張機能を使いたいならシバンをちゃんと設定すればいい話でしょ
2021/05/10(月) 20:29:43.61ID:hErX5Z2R
なってるだけが起因なんだがな
というより、bashもなってるだけでもあったろうが、GNUは変なとこで拘るからなあ。素直にPOSIXモードならPOSIX準拠にしていればいいようなもんなのに
なんか他のPOSIXのことでもオレオレの主張は曲げない独自にやるんだというのはあったな

GNU/Linuxはログインシェルはどのディストリでもbashだろうな
変わったディストリはあるかもしれないが
FreeBSDはtcsh、OpenBSDはkshみたいだな。macOSはzshか。BSD系は色々(歴史的に)ありそうだな
2021/05/11(火) 00:12:44.56ID:1enRFFJU
>>531
/bin/shがdashのリンクになってるだけという話じゃなくて
dashのリンクになっていてそれ以外に変更することはないだろうってことよ

>>532
> 素直にPOSIXモードならPOSIX準拠にしていればいいようなもんなのに
bashの場合POSIXモードにしていても非POSIXの機能が使えちゃうからね
/bin/shをbashにしてもPOSIX制限ができない
シバンを/bin/shにちゃんと設定してるのにPOSIXオンリーのシェルじゃないってのが問題
2021/05/11(火) 07:58:52.53ID:FhvqefgH
トレースしてるだけ
2021/05/11(火) 12:39:30.70ID:PU80Jyjy
極論だが古典的なシステムでは /bin/sh は POSIX 準拠でさえないんだから
POSIX 準拠厨はシェバンに #!/bin/dash って書くべき
2021/05/11(火) 12:44:51.27ID:1enRFFJU
>>535
POSIX準拠厨はPOSIXに準拠するなっていってんの?
2021/05/11(火) 13:12:35.75ID:ZJle8Vfo
dash用スクリプトを書くのにbashのデバッグ機能は必須(というほど大したもんでもないが…)
2021/05/11(火) 13:27:42.49ID:rqNaE/tz
>>535
今時の /bin/sh の最低限度がPOSIXなんだよ
POSIX以前の /bin/sh が現役(古いどころではないOSを無理に今でも使ってるではなく、現代的なOSでという意味での)なのはどこにあるの?
2021/05/11(火) 14:27:39.20ID:nf224V10
dashならPOSIX準拠、と信じてしまうのも、経緯的によろしくなさそうやけどなあ。

もうbashでもdashでも、#!に明記したほうがマシやろ。
あとから検索もしやすいし。
2021/05/11(火) 17:39:06.11ID:kzU/MSxe
ただの難癖
そして明記しない意味も無視かよ
541デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:28:01.49ID:w4TAZAbA
>>539
スクリプトはPOSIXに準拠しており
POSIXシェルで動かすことを想定しているのだから
#!/bin/sh でいいだろ

実際に動かすシェルのことは知らん。そんなもん使う環境次第だろ。
スクリプトをmacOSにインストールするか、Debianにインストールするか、
その他のUNIXにインストールするか、そんなこと開発者が知ることなんてできない。
スクリプトがPOSIXシェルと言うだけの話。
2021/05/12(水) 00:34:31.14ID:1N3VwigT
>>538
bash じゃなくて dash を使わざるを得ないような極小環境で現役なものはどこにあるの?
正直 bash 拡張使って簡潔に書いたほうがRAMもROM/Storageも少ないんじゃないかと
さえ勘繰ってるわ
543デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:39:55.66ID:w4TAZAbA
>>542
メモリやストレージを気にするならBusyBox一択
必然的に使うシェルはBusyBoxに内蔵されてるash

Alpine Linuxのbusyboxは 805.6KB
この中にシェルだけではなくcpやrmやawkなどの
よく使うコマンドが大量に詰め込まれてる
544デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:44:00.91ID:w4TAZAbA
Alpineのbashは742.3k、dashは106.3kだな
それからdashを使うのは環境が極小だからと言うよりも
bashがPOSIXに準拠してないからだ
545デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:46:26.43ID:w4TAZAbA
極小環境で現役なもの = 組み込み
2021/05/12(水) 00:46:28.75ID:1N3VwigT
>>541
/bin/sh が POSIX 準拠していない bash の環境もあるんだから
POSIX 準拠を期待しているならシェバンは #!/bin/sh と書くべきじゃない

既に /bin/sh が bash 期待のスクリプトも大量に出回っているから
/bin/sh から bash を追い出すのも現実的じゃない

つまりシェバンに #!/bin/sh って書く、イコール bash でも dash でも
動くなんかよくわからない基準でスクリプト書きますよって宣言している
ようなもんなんだから、そんな曖昧な宣言するぐらいならシェバンに
bash だの dash だの書いた方がいいんじゃないか?
547デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:47:51.03ID:w4TAZAbA
>>546
> /bin/sh が POSIX 準拠していない bash の環境もあるんだから
だから、それはシェルスクリプトの問題じゃない
bashを使ってるシステム側の問題
548デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:48:09.14ID:w4TAZAbA
#!/bin/sh はシェルスクリプトに書くものだってわかってる?
549デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:49:26.60ID:w4TAZAbA
POSIXシェルで書いてる人は、dashで動かすなんて想定してないからなw
2021/05/12(水) 00:50:03.00ID:1N3VwigT
>>545
いや、今どき組込システムで bash じゃなくて dash 使わざるを得ない程メモリが
逼迫しているか?って話よ

それに busybox だけ使うならそれでいいんだけどセットで使うアプリのスクリプトが
bash 依存だったりして結局 bash もイメージに組み込まざるをえないとかあり得る
(といういかあった)話なわけで
551デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:53:13.25ID:w4TAZAbA
>>550
だからPOSIXという互換性のほうが重要ということだよ
ほれみろbash依存のスクリプトなんか書くから困ってる
bash以外じゃ動かんだろ
2021/05/12(水) 01:00:08.38ID:1N3VwigT
>>547
でも「今からひっくり返せる戦況にもない」こともわかってるよね?
そこを見て見ぬ振りして POSIX が正義だと旗を掲げても無駄しにするだけだよ
553デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:01:55.36ID:w4TAZAbA
今からひっくり返せる戦況ってなんのこと?
すでに/bin/shがdashまたはashである環境が最多になってしまったから
脱bashの流れは止まらないって話?
2021/05/12(水) 01:04:16.31ID:1N3VwigT
>>551
> bash以外じゃ動かんだろ
スクリプトの動作の互換性という観点ではむしろそこが良いのがわかってない
bash/dash/ash に限定したほうが保守コストは下がるんだよ
555デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:04:53.84ID:w4TAZAbA
bashに限定したらダメでしょ?
dash/ashでは動かないんだから
556デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:06:24.03ID:w4TAZAbA
dash/ash用(つまりPOSIXシェル)で書けばbashでも動くが
bashの非POSIXシェル機能を使ったら、dash/ashで動かないってわかってますか?
2021/05/12(水) 01:08:44.46ID:1N3VwigT
>>553
いや bash 依存の #!/bin/sh なファイルがはびこっていてそれを駆逐できないって話なんだが
558デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:09:59.32ID:OO1NJlSc
本当すぐPOSIXの話題になるよな
559デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:10:52.06ID:w4TAZAbA
>>557
それはbash依存が問題なのではなくそのファイルが
メンテされてないっていうのが問題なだけ
そのファイルをメンテすればいい

メンテされてるなら
#!/bin/sh を #!/bin/bashに変更するだけ
560デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:11:51.40ID:w4TAZAbA
>>558
シェルスクリプトから移植性を取ったら何も残らない
それはもう別の言語で書けばいい
2021/05/12(水) 01:26:23.80ID:1N3VwigT
>>556
君は(坊主憎けりゃ袈裟まで憎い的な) bashism 死すべしが強すぎて話がそれ過ぎるきらいがあるな

bash 依存のシェバンは #!/bin/bash って書くのは当然
#!/bin/sh は何に向けてるかわからんから #!/bin/dash って明示しようぜって話だぞ?
562デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:27:46.42ID:w4TAZAbA
> #!/bin/sh は何に向けてるかわからんから
何に向けてるってPOSIXシェル全てだろ。何を言ってるんだ?
互換性がないならそれはそのシェルのバグであって
スクリプトの問題じゃない
563デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:28:10.36ID:w4TAZAbA
#!/bin/dashだったらdash限定になるじゃん
アホなのかな?
2021/05/12(水) 01:36:50.63ID:1N3VwigT
>>563
ash で動作するけど ash の劣化実装の dash では動作しないスクリプトを排除できるという意味で安全だ

下手に確認取れてない環境で間違った動作されるくらいなら動かない方がマシ
2021/05/12(水) 01:40:11.91ID:1N3VwigT
>>562
> 何に向けてるってPOSIXシェル全てだろ。何を言ってるんだ?
だからそこに bash 拡張必須な困ったちゃんが混在してて排除しきれない
から POSIX シェルとは言い切れないってさっきから説明してんだろ
566デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:40:52.17ID:w4TAZAbA
>>564
dashがashの劣化実装と言うなら、dashで動作テストすればOKじゃん
何を言ってるんだかw
567デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:42:05.81ID:w4TAZAbA
>>565
だから何が問題だっていってんの?

bashコードで書く人?
それは書く人の問題だよね

コードの問題になってないよね
568デフォルトの名無しさん
垢版 |
2021/05/12(水) 01:46:16.80ID:w4TAZAbA
私はこのスクリプトをPOSIXシェル用のコードで書いた
ちゃんと他のシェルで動くこともテストした
だから全てのPOSIXシェルで動作する
なので#!/bin/shにするのである

しかし私の中のもう一人の自分がdashでしか動かないかもしれないから
#!/bin/dashにしろというのである

なんて言う話だったら、頭がおかしいとしか思えないw
569デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:04:49.76ID:w4TAZAbA
つーかashとdashってほぼ同じでしょ?ashで動作してdashで動作しないことなんてあるの?
あるならdashで動作確認しろってところは変わらんがな
2021/05/12(水) 02:05:08.70ID:VEm96Egx
理想主義者 vs 現実主義者
完全主義者 vs 悲観主義者
POSIX主義者 vs こだわらない派

落としどころはないな。。。
571デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:10:51.35ID:w4TAZAbA
POSIXに準拠したコードであれば/bin/shで動くんだから
#!/bin/shにすればいいってだけなんだがな
572デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:11:51.69ID:w4TAZAbA
もちろんそれがdashでしか動かないって言うなら#!/bin/dashにするべきだがな
どのPOSIXシェルでも動くなら#!/bin/shでいい
2021/05/12(水) 02:28:43.75ID:qBxmR+eO
ID:1N3VwigT
DebianやUbuntuで書いてあることを読んで出直せ
何もわかってないで自分が思うでしか言ってないだろう
2021/05/12(水) 02:30:20.07ID:qBxmR+eO
>>570
DebianやUbuntuで書いてることはそんな対立を生まない至極もっともなことを書いてあるんだがな
575デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:58:36.12ID:w4TAZAbA
>>573
読んで出直したが何も変わらない。

お前がやってるその行為は
「DebianやUbuntuで書いてることを読んだら俺が正しいことが証明された。はい論破」
と言ってるのと何も変わらない

論破合戦がしたいなら、お前が書いてることを引用して
お前が言いたいことを主張しろ
576デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:59:27.57ID:w4TAZAbA
>>574
DebianやUbuntuには#!/bin/shを#!/bin/dashにしろとは書かれていない
577デフォルトの名無しさん
垢版 |
2021/05/12(水) 03:00:17.09ID:w4TAZAbA
あ、俺に言われてるのと勘違いしたwww

ID:1N3VwigTに言ってるのか
2021/05/12(水) 03:01:24.77ID:QztuhdBY
お前に言ってねーよ
読めないいつものお前だろ?流石だな
わざと絡まないようにしてたのにwほんとお前はただただめんどくせえやつだな
2021/05/12(水) 03:02:31.85ID:QztuhdBY
トンチンカンなことを並べてるしwww俺はそんなこと言ってねえのに
つくづくお前ってやつはただただただただめんどくさいだけのやつだなあ
2021/05/12(水) 03:14:44.73ID:QztuhdBY
アホはほっておいて、まためんどくさいから最初と最後のへ

>>542
>dash を使わざるを得ないような極小環境
イミフ
/bin/sh が dash なLinuxディストリは普通にあるし。なんでそんな環境をと言い出すのかイミフすぎ

>>565
/bin/sh が POSIX shell であることが期待されているのは昔からだろう。どのくらい昔かは知らんがw
fileで #!/bin/sh なファイルがなんて出るか見てみ。fileのデータベースは公衆でメンテされていてのでソレなんだから大多数がそれを期待しているのは間違いないだろう
bashismなのが逸脱してるのとは別の話。bashismな #!/bin/sh は #!/bin/sh とするのは間違いだから #!/bin/bash に正しなさいというのが現在

あとdashにもなんかトンチンカンな難癖付けてるようだが、bashismと問題にしてるDebianがPOSIXから逸脱不足してるものを作るわけがないというのは常識的にわかるだろうにという

まあ、DebianやUbuntuで書いてあることを読んで出直せw
2021/05/12(水) 03:18:24.36ID:rVJ0Zld2
> bashismな #!/bin/sh は #!/bin/sh とするのは間違いだから #!/bin/bash に正しなさいというのが現在

その理屈だと dashism な#!/bin/shは#!/bin/dashにしなさいってことになるだろw
2021/05/12(水) 03:20:25.42ID:QztuhdBY
>>581
アホなレスすんなよwわざとだろ?w
2021/05/12(水) 03:22:04.92ID:rVJ0Zld2
はぁ?localとかPOSIXにないんだからdashismだろwww
2021/05/12(水) 03:38:40.82ID:QztuhdBY
バグじゃなのw ashのが残ってるとか
そういうのはdashismだからもちろん #!/bin/dash にすべきだろうな
そんなの使わないのが多いから見過ごされていても不思議ではないかな
他にもあるんだったらDebianに持って行った方がいいぞ。自ら ism を否定してるとこなんだから
2021/05/12(水) 03:54:18.34ID:QztuhdBY
いや、Debianの明確な仕様だな。どこぞのスクリプトでも使ってるのほぼ見たことないから>>584って言ったけど、すまん

Debianがシェルスクリプト仕様として、POSIXから拡張した数少ない(5つ)うちの一つだな
その5つをあえて使うなら #!/bin/dash の方がいいかもね。Debianではその5つを使うなら #!/bin/sh でもいいとは言ってるけど(他のシェルでも対応してるからとかかな??)
2021/05/12(水) 08:14:16.52ID:rVJ0Zld2
dashismは5つもあるのかよw
じゃあだめだな。#!/bin/dashにしないといかんなwww
2021/05/12(水) 09:46:38.57ID:1N3VwigT
>>580
> イミフ
> /bin/sh が dash なLinuxディストリは普通にあるし。なんでそんな環境をと言い出すのかイミフすぎ

その返しならイミフだろうなぁ
bash さえも入れたくない/Busyboxだけで極力少ないRAM/ROMで動作させる環境であって
PCやサーバではないよ

RAM が限られている環境だと1つでも bash スクリプトがあると dash と bash 両方で RAM を食って
しまうから、それならば /bin/sh を bash にしてしまった方がまだ軽いってなってしまう

そうなってくると「bash で書きたい人はシェバンに #!/bin/bash って書けば良いじゃん」で済まないわけ
で全部 dash 互換で書く必要がでてくる

シェバンに #!/bin/sh って書いてある他人が書いたスクリプトが bash 互換なのか dash 互換なのか
明示されていない以上、#!/bin/sh=dash 環境に移植する場合は書き直すか動作検証する必要がある

動作検証が終わったら #!/bin/dash って書きかえないと、そのファイルを引き継いだ人がまた
同じ作業を繰り返すことになるって考えよ
2021/05/12(水) 11:42:09.27ID:UQubkL4X
>>586
何がもわからんくせに調べもしないくせに
ismの何が問題かもわからんくせに
自分が納得できないだけかよ、能書き小僧煩い
まあお前が納得できなくてそうするんだったら勝手にしてもいいぞ、その程度のことなんだろし
2021/05/12(水) 11:49:29.28ID:UQubkL4X
>>587
ん?
>極論だが古典的なシステムでは /bin/sh は POSIX 準拠でさえないんだから
に対して、
>今時の /bin/sh の最低限度がPOSIXなんだよ
に対して、
>bash じゃなくて dash を使わざるを得ないような極小環境で現役なものはどこにあるの?
だよ?流れからイミフだな
で、今度は
>bash さえも入れたくない/Busyboxだけで極力少ないRAM/ROMで動作させる環境であって
と言い出すの?イミフのイミフだぞ(その後の延々としたのもw)

現在は、/bin/sh は POSIX shell というのが大勢、dash はそれになり得るというのが大勢
違うとお前ら個々が思うのは勝手にどうぞだが、それを理解しろと他人に求めるのは筋違いだな
そんなに自説に自信があるならDebianやfileのメーリングリストで問題提起してみ?w
2021/05/12(水) 12:38:28.94ID:1N3VwigT
>>589
お前は「/bin/sh = dash が正義」って言いたいだけで
碌に文章も読まずに喧嘩さえ売れればOKな返しをしてるだけ

もっとちゃんと読め
話にならん
2021/05/12(水) 13:04:20.69ID:UQubkL4X
>>590
何を言い出してるんだか
現在最も近い=最適なのがdashというだけだぞ。開発元がそういう姿勢なんだからそういう方向になるようにはするだろうという当たり前に読めそうなもんだが

喧嘩とかお前にそのまま返すわ。お前が何言いたいのかわからんぞ?
>>589でなんでそう返すのかさっぱだわ。喧嘩wに負けたくないだけか?w

しっかし、柔軟性が無いな。その「単なる自説」の拘りぶりは。なんとか原理主義者に通じるものがあるな
同類か?
2021/05/12(水) 13:15:48.40ID:1N3VwigT
>>591
そもそも 587 の内容は /bin/sh = ash/dash で頑張ってたけど
途中で /bin/sh = bash で行かざるを得ない/組込でも bash
入れざるを得ないなってなった事を説明しているわけで
589 の指摘を言われる所以は無い

君は同じスレのなかの時系列さえ読み解けない程読解力が低いんだよ
ちゃんと読めぐらいいわせろ
2021/05/12(水) 13:17:56.91ID:UQubkL4X
>>692
そんな急に知識自慢wされても、は?となるだけだよ
そんな自分の頭だけの流れを読めというのは無理があるでしょ
で?何を言いたいの?
2021/05/12(水) 13:18:56.70ID:UQubkL4X
>>593
>>692
>>592
すまん
2021/05/12(水) 13:23:30.78ID:1N3VwigT
>>593
いや、だから君は読解力がない/坊主憎けりゃ袈裟まで憎いで会話にならない、と
2021/05/12(水) 13:26:48.40ID:UQubkL4X
>>593
そのレスから明らかにお前が自分の頭で思ったことが他人にもわかると思ってるな
>坊主憎けりゃ袈裟まで憎い
イミフwまた何を言っているんだか
だからお前は何を言いたいの?そんなイミフなこと言わずに書いてよ

自称読解力があるらしいのになんで俺に言っていること理解できないの?
(自称のそれは多分それは読解力ではなくて妄想力だと思われるけど)
2021/05/12(水) 13:29:39.37ID:UQubkL4X
>>596
なんで間違えるかなあw
>>593
>>595
誤 >なんで俺に言っていること理解できないの
正 >なんで俺の言っていること理解できないの
なんかとてもすまん
2021/05/12(水) 13:43:37.39ID:1N3VwigT
>>597
>なんで俺の言っていること理解できないの
君は相手をディスる単語は使うが、なぜディスってるのかは説明しないんだから
理解してもらえないのは当然でしょ

「自分で調べろ」「バカと会話するだけ無駄」というレスのは解の一つではあるが
それを使うのであれば書き込んだ後はとっととスレ/板から去れよ
2021/05/12(水) 13:50:05.62ID:UQubkL4X
/bin/sh が POSIX shell で汎用性があるスクリプトを書きたいというニーズはある
主に/大きなのはディストリかな
Debianは結構前からbashismを問題にしてる、/bin/sh が bash の頃から(でも、bashからdashに代えたのはUbuntuが先っぽいけど)

そういうある意味良き未来へw先導してるのがDebianなんだろし、そこで開発されてるdashにそれに沿った方向性を見るのは普通だと思うんだがな

全体的にwそういう方向性だろうし、俺はそれでいい、別に異論は無い、納得できるってだけなんだがな

ざっと見だけどなんかやたらbashという語が多いようだけど、bash好きなのかな?dashがPOSIXに近い、bashは/bin/shに合わないとか言う俺がbash嫌いだとでも思ってるのか?
>坊主憎けりゃ袈裟まで憎い
って。と妄想するけど?wまたいきなり何を言っているのかでいまだにわからんけど
2021/05/12(水) 13:51:57.48ID:UQubkL4X
>>598
お前が何を言いたいのかわからんのだもの
なんか説明してくれたけど、全然レスになってないんだもん(>>593)

じゃ、元に戻って>>589の流れのイミフ&イミフなところをちゃんと説明して
2021/05/12(水) 14:44:21.97ID:1N3VwigT
>>599
> /bin/sh が POSIX shell で汎用性があるスクリプトを書きたいというニーズはある

だからこそ #!/bin/sh じゃなくて #!/bin/dash って書こうよ

/bin/sh が /bin/bash なディストリが残ってる以上シェバンが #!/bin/sh のままじゃ
いつまでたっても bashism の問題は消えないんだ

コマンドがちょっと打てるだけでOSやシェル、その歴史なんて詳しくも無ければ
興味もない連中でさえシェルスクリプトはかけちゃうからとめられないんだ

>>600
その前段で既に話がかみ合ってないしこれは終わりにしよう
かみ合ってないのに話を終わらせなかった俺が悪かった
すまん
2021/05/12(水) 14:56:03.65ID:LtxTQo1N
>>601
>だからこそ #!/bin/sh じゃなくて #!/bin/dash って書こうよ
イミフ。何もわかってないじゃん。読解力あるんでしょ?w
>汎用性があるスクリプト
汎用性がわからんのか?可搬性と言えばいいのか?
だーかーらー、bashはbashismがあるから /bin/bash にしろって別の話だろうが。誰もそれに合わせたシェルを作らない/作れないんだから

お前のような迂闊さんのための話じゃないよ、#!/bin/sh なら POSIX shell で、それに近いのはdashっていう(何度繰り返したらわかるんだかw)
勉強不足でなんか困ったことがあってもそれは自責だな。お前でさえbashismって知っているのにw

>その前段で既に話がかみ合ってない
噛み合ってないもなんも、上のでさえお前は全然俺の言ってること理解してないじゃん
>>589ぐらいのイミフを噛み合うくらい簡単に説明できるだろうにw
まあ、いいよw(ナゾ)
2021/05/12(水) 15:01:42.47ID:VEm96Egx
理想主義者は、互換シェルとかであきらめてないで、真shをつくればいいのに。
そうでなきゃ、いずれまた「dashism」が問題になるやろ。w
2021/05/12(水) 15:04:52.73ID:LtxTQo1N
理想主義者でもないぞ現実主義だろうに
現実的に拡張可能な範囲での拡張なんだろう

POSIXと出されるとなんか変なこと思ってるのとちゃうか?
毒されすぎだろうここに居た/居るPOSIXなやつとかなんとか原理主義者にw
2021/05/12(水) 15:06:17.30ID:1N3VwigT
>>602
> イミフ。何もわかってないじゃん。読解力あるんでしょ?w
だからディスる(イミフと読解力あるんでしょで煽る)だけで終わらすんじゃなくて
どこが意味不明なのかちゃんと説明してよ

あとシェバンに #!/bin/sh と書いておきながらbash拡張で書く連中に対応する
方法については何度説明しても回答しないね
都合が悪い質問には一切回答しないでディスるだけとかいい加減飽きたぞ
2021/05/12(水) 15:11:48.53ID:LtxTQo1N
>>605
続いて書いてるだろ。読解力あるんでしょ?w

>あとシェバンに #!/bin/sh と書いておきながらbash拡張で書く連中に対応する
お前でさえbashismって知ってるのに何を言ってるの?お前はここでしか見ないのか?
警告的なのはWebにゴロゴロ転がってるだろうに

ディスるディスるって言ってるけど、お前は何を読んでるんだかな。お前が応えられないからと妄想するぞw

なんだマジで>>589だけの話を終わらせるつもりの>>601なのか?w
(>>589の最後を言っておいて自分から「飽きた」とか。まあわからないでもないけどw(ナゾ))
2021/05/12(水) 15:17:35.31ID:LtxTQo1N
しっかし、自分から俺に「読解力」とか言い出しておいて、自分に返されたらディスる「だけ」とか。続いて書いてるのも読めないで

自己中も大概にしろと言いたい。もしくはよほど自分に効く言葉なのかな?そうだから俺に対して言い出したのかな?w
「読解力」なんてこれから相手に使わない方がいいよwイミフはイミフだから仕方がない自分から>>598すら説明できないそうだからw

と、余談も余談wだけど
2021/05/12(水) 15:23:26.30ID:LtxTQo1N
>>607
まあ...なんちゅうか
>>598すら説明できない
>>589すら説明できない
いや...なんちゅうか...いやすまん
2021/05/12(水) 15:27:53.73ID:1N3VwigT
>>607
読解力ないがだいぶ効いていますなぁ
今後も君だと気づいたらガンガン使っていくよ
2021/05/12(水) 15:30:14.88ID:LtxTQo1N
頭悪そうなレス
それだけは言いたかったのね。なんでだろうねえw
2021/05/12(水) 18:55:25.47ID:ZTB501LY
まーたやってんのか
2021/05/12(水) 20:05:28.08ID:zdSe0i8P
俺がいなくても同じことになるんやなw
2021/05/13(木) 22:57:36.49ID:RCwmD/gq
bash --posixが機能しない
614デフォルトの名無しさん
垢版 |
2021/05/16(日) 18:43:25.65ID:ijO7GKET
>>472-473
#!/bin/sh
# POSIX準拠のシェルスクリプトはPythonスクリプトよりも寿命が長そうだからいいね
# Chrome拡張のLanguage Learning with Youtube BETA(提供元: Dioco)をインストール
# 字幕対応の動画ページを開いてキーボードのCキーを押す
# Fキーを押して全画面表示
# 画面下、動画の再生時間の横にOFFと表示されているアイコンをクリック
# 英語の字幕ではなくローマ字が表示される場合は、画面下の歯車アイコンをクリックして字幕設定を「英語>>日本語(自動生成)」から「英語(自動生成)」に変更
# 字幕の読み込み終了後、画面右上にある右矢印アイコン(エクスポート)をクリック
# Excelを選択してエクスポートをクリック
# 字幕ファイルのダウンロードが終わったらシェルスクリプトを実行
# pip install pandas openpyxl
python3 -c 'import glob, os, pandas; \
get_filename = glob.glob(os.getenv("HOME") + "/Downloads/*.xlsx"); \
read_xlsx = pandas.read_excel(get_filename[0], engine="openpyxl"); \
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True)'
# cut: 2列目を抽出 | sed: 改行文字を空白スペースに変換
cat "$HOME/Downloads/time_en_jp.csv" | cut --delimiter="," --fields="2" | sed -z "s/\n/ /g" > "$HOME/Documents/en.txt"
cat "$HOME/Downloads/time_en_jp.csv" | cut -d "," -f 1,2 >> "$HOME/Documents/en.txt"
cat "$HOME/Downloads/time_en_jp.csv" | cut -d "," -f 1,3 >> "$HOME/Documents/en.txt"
mv $HOME/Downloads/*.xlsx ~/.local/share/Trash/files
google-chrome "$HOME/Documents/en.txt" \
$(echo "231c177a35b47c080030/smeti/4444nasam/moc.atiiq//:sptth" | rev) \
$(echo "/1873001261/piv4swen/igc.daer/tset/ten.hc5.ibeh//:sptth" | rev)
2021/05/16(日) 22:22:55.41ID:ZJ9kaJzK
CSV 形式に対して、cut は機能するのか?

データ中に、カンマを含んでいても、正常に抜き出せるのか?
2021/05/16(日) 22:34:03.36ID:vtPLFS21
>>615
含んでないことを前提にできるならええがな。
2021/05/17(月) 00:20:52.65ID:HtlvZdi5
https://twitter.com/col_richie/status/1393925115386101766

> 「POSIX原理主義とはPOSIX文書に従うこと」と思われがちだが、
> 我々の定義は少し違う。「POSIX文書が言わんとすることを読み取り、実践する」だ
>
> 例えば、日本国憲法24条の「婚姻は両性の同意のみに基づいて」を、
> 同性婚時代にどう解釈すべきかのようなもの。元の文章に捕らわれ思考停止してはいけない

ほんと、こいつって適当なことばかり言ってるよな

とうとうPOSIX原理主義はPOSIXとは関係ない。POSIXが書いてないことを
独自解釈して自分の都合のいいように言い換えてるって認めちゃってる。
その「我々の定義」は「POSIX原理主義」のどこにも書いてないと言うね

そしていつものように、全く関係ないものにたとえて
虎の威を借る狐作戦

一貫性がない、思いつきだけで発言してる
https://twitter.com/5chan_nel (5ch newer account)
2021/05/17(月) 03:39:44.44ID:j+9HqG9Y
見落としてた
Language Learning with Youtube BETAが出力する字幕にカンマが表示されることがないから
cutコマンドを使ってCSVファイルのn列目フィールドを抽出できてる

sepオプションで区切り文字に'~'を指定してcomma-separated values (csv)ならぬpython-separated value(psv)ファイル
にすれば英文データ中にカンマを含んでいても正常に抽出できるよ
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
2021/05/19(水) 10:30:30.70ID:nuPY3Cay
>>618
python使うくらいなら、CSVの処理にはq(-text-as-data)を使った方がいいかな
まFYIということで。
2021/05/19(水) 11:52:01.66ID:ZyjXFBY0
csvはほんとギルティ、特にクオートしてるやつ…
(["'])[^"']*\1やその,版をベースに個別にチューンしてなんとかならん事もないけど
普通に高級ライブラリ(pwshのパーサとか)呼んで見つけ次第tsvに浄化、常にtsvを扱うのがベストプラクティス
タブが嫌ならascii c0 separator svでも何でもcsvよりはマシ
2021/05/19(水) 12:10:40.76ID:/qVnw8Ux
テキストにタブが含まれてたら同じやろ。
結局、ダメなときはダメ。
しゃあない。
2021/05/19(水) 12:15:24.52ID:nuPY3Cay
>>620
つか、CSVに限らず、シェルスクリプトで扱うなら、とにかくTSVでしょう。
だから、他のデータはとにかくまずTSVにしてしまう。
それさえ出来てしまえば、逆に後はどうにでもなるw

またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。
まずよっぽどでない限り、フィールドの内容には出てこないから。
2021/05/19(水) 12:28:25.62ID:ZROa3PFa
>まずよっぽどでない限り、フィールドの内容には出てこないから
一番使われたであろうソースコード記述でもタブを嫌いスペースが主流だったりするしな
2021/05/19(水) 12:40:24.36ID:ZyjXFBY0
sed s/^I/taaab/gとかエスケープしとけばいいんでない?(^Iは本当のタブ文字)
sedはc風のエスケープも認識した気がする、クオートしないとshに食われるが
s/'\t'/taaab/gでも多分大丈夫かな
2021/05/19(水) 12:45:00.65ID:nuPY3Cay
>>624
sedでやるなら普通に\tでいいよ。
ただし、grepでは通らない罠
あと複数文字に変換するなら普通に<TAB>とかにしようよw
2021/05/19(水) 12:45:04.60ID:ZROa3PFa
そんな話してないよ
2021/05/19(水) 12:46:44.79ID:ZROa3PFa
フィールドの内容に出てくるのを想定した場合の話か
ごめんちゃい
2021/05/19(水) 12:51:26.96ID:ZyjXFBY0
値内のタブは代わりの文字に置き換えて、tsvのデリミタにホントのタブ使うってことね
catやらで書き出してもちゃんとテーブルに見える利点は大きい(適宜タブ幅整えれば)

ascii C0のセパレータは認識しないアプリ多いし、vimで開くとかcat -vteしないと正体不明なので筋が悪いか
自分が何使ったか忘れて頭を捻ることになる
taaabでも何でも良いが、タブであることが一目で分かれば便利
その用途に文字列"\t"が標準的な大体記法だからといって、これに置き換えるのは避けたほうがいいかも
どこかで勝手に解釈されかねない

C0のセパレータがまさにdsvの為の文字なんだけれどもなあ…
扱いづらい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況