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

■ このスレッドは過去ログ倉庫に格納されています
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
183デフォルトの名無しさん
垢版 |
2019/08/20(火) 17:15:25.76ID:OyLrpvkx
使えないの挙げたほうが速いのでは?
2019/08/20(火) 17:32:48.20ID:30Dp6unL
使えるほうが多いのか?
2019/08/20(火) 17:47:53.72ID:CuOLtXP9
シェルスクリプトでバイナリを扱いたければ
odを使うしか無いだろう。

zshはNULLを扱えたはずだが、
bashやそれ以外はNULLを扱えない。

例のawkおじさんは、awkスクリプトで頑張ってるようだが
もちろんあれはシェルスクリプトではない
2019/08/20(火) 17:56:41.96ID:/V4ccaND
>>182
扱えるというのはバイナリファイルの編集ができるってことだよね
2019/08/20(火) 17:57:11.37ID:Gkd3xMH4
無知ですまんがAWKおじさんってだれ?
なんか否定的な書き方だけど悪名高いコテハン?
2019/08/20(火) 18:00:14.90ID:CuOLtXP9
>>187
自称シェルスクリプトで色々頑張ってる人。ググればわかる。
悪名高いコテハンではないが、俺的にはあのセンスが受け入れられない。

色々頑張ってるが、コードを見るとawkスクリプトを
シェルスクリプトで生成して、メインの処理はawkで
実行してるのでダサい
2019/08/20(火) 18:01:35.41ID:/V4ccaND
>>187
https://github.com/ShellShoccar-jpn
2019/08/20(火) 18:05:24.00ID:CuOLtXP9
odの他にhexdumpとかでもできるがhexdumpはPOSIXじゃない。
あとbase64もPOSIXじゃない。

あとは出来る可能性があるとすれば uuencode だけど
あれを処理するのは難しいだろうな。
2019/08/20(火) 18:07:02.56ID:CuOLtXP9
>>187
> なんか否定的な書き方だけど
別に否定はしてない。awkもPOSIX準拠だから物自体はいいけど
シェルスクリプトじゃないよねって話
2019/08/20(火) 18:10:40.86ID:Gkd3xMH4
>>189
あぁ、この人のことか。ありがとう。
なんかQiitaかどっかでメチャメチャ喧嘩腰のコメントしてた記憶があるわ。
https://qiita.com/richmikan@github/items/5158eac47467d8a29056
↑ここのコメントとかかな。
言ってることは正しいのかもしれんが、ちょっと品性に欠けるなぁと思った。
2019/08/20(火) 18:15:23.89ID:Gkd3xMH4
>>190
実はBase64はPOSIXの範囲でも(簡単に)実現できる。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/uuencode.html
によればuuencode -m /dev/stdoutこれでほぼbase64コマンドと同じ挙動になる。
ていうか/dev/stdoutってPOSIXで規定されてないのにその肝心の公式が仕様書内で
/dev/stdoutを使っちゃっていいのかねw
2019/08/20(火) 18:19:45.77ID:5hgm7I5A
>>193
base64をしたいんじゃなくて、base64コマンドはPOSIXじゃないって意味なんだけど
その文章の読めなさ、相変わらずやなw
195デフォルトの名無しさん
垢版 |
2019/08/20(火) 18:23:52.47ID:PFkWfbQh
POSIX、POSIXとか言ってるやつも、AWKおじさん並みのKitty。
2019/08/20(火) 18:25:32.24ID:Gkd3xMH4
Base64を実現したくはないのにbase64コマンドが必要な状況ってどんなのだろう…?
2019/08/20(火) 18:27:06.57ID:5hgm7I5A
今シェルスクリプトでバイナリを扱う話してたろうが
そういうとこやで
2019/08/20(火) 18:41:10.24ID:Gkd3xMH4
こりゃダメだ
2019/08/20(火) 18:49:07.29ID:5hgm7I5A
ふぅ。アスペに説明しても理解できないかもしれんが(他の人は理解できるだろうから書くけど)

1. シェルスクリプトはテキストを扱えない。という話が発端 (>>180
2. バイナリを扱うにはどうするか?→バイナリをテキストに変換するコマンドを使えば良い
3. POSIXの範囲ではodが最適。hexdumpやbase64コマンドはPOSIXではない

ここまではまともな流れ。

なぜかBase64を実現したいことだと勘違いする>>193

(バイナリ→テキストを実現するための)base64 "コマンド" の話だというと

なぜかBase64を実現したくないのにとか、斜め上のことを言い出す>>196
2019/08/20(火) 18:52:24.07ID:/V4ccaND
はい解散
2019/08/20(火) 20:00:45.18ID:Gkd3xMH4
自分の主張をマトモだとか言っちゃう男の人って…
2019/08/20(火) 20:02:58.01ID:ar+OimNr
こいつ素でやってるのか?w

会話の流れがまともだって言ったら、
今度は主張がまともと言ってるんだと読み間違えやがったw

まあ確かにそのとおりではあるが、
文章はそう読めるはずがないよな
2019/08/20(火) 20:15:26.86ID:/fB0Ptq3
>>201
そんでsortの何が安定なのかは分かったの?
2019/08/20(火) 21:24:50.14ID:Gkd3xMH4
sortの話はもう終わったでしょ、お爺ちゃん。
2019/08/20(火) 21:27:12.41ID:ar+OimNr
>>204
あんた最後になにもレスしてないよね?
お前が間違っていましたってことで終わったの?w
2019/08/20(火) 21:28:59.99ID:ar+OimNr
176 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:24:06.78 ID:Gkd3xMH4 [2/10]
POSIX sortだと-s(=stable sortのs)オプションが提供されてないので
どう足掻いても安定にはならんな。

「たまたま」順番が変化しない場合もあるやもしれんが。

177 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 08:37:08.94 ID:JOMXhFk+ [2/2]
なんで重複しない行番号の順にソートして並びが入れ替わるんだよw

178 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/20(火) 12:54:26.88 ID:/fB0Ptq3 [1/2]
>>176
「安定」の意味分かって書いてる?

179 名前:デフォルトの名無しさん[] 投稿日:2019/08/20(火) 13:41:04.53 ID:tzbk8R3g
安定の書き込みクオリティ
2019/08/20(火) 21:30:41.86ID:ar+OimNr
ここで、終わったって自分で言ってるから、
ここで\(^o^)/オワタなんだろうなw
2019/08/20(火) 22:46:08.19ID:Gkd3xMH4
お爺ちゃん怒りの3連レス。そんなに熱くならなくてもいいのに。冷房がもったいないw
2019/08/20(火) 23:02:20.69ID:55BxDwsc
みっともないな>>204
2019/08/20(火) 23:39:15.24ID:I7f/WloD
自称「神様」には何を言ってもムダ
2019/08/21(水) 00:33:27.35ID:XuzWeGbv
自分が常に正しいと思ってる奴にロクな奴はいない
2019/08/21(水) 02:24:45.15ID:GZen3C6t
>>208
あはは。二代目神様襲名おめでとうw
2019/08/21(水) 11:27:36.55ID:eilohrgH
思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?
bashだけにある機能の事なら知ってる
2019/08/21(水) 11:41:07.46ID:g3Au7XoK
ぐぐったら出てくるから
2019/08/21(水) 11:42:23.31ID:CWF24/8E
別に使いたいわけじゃなくて、ぐぐったらそれがbashスクリプトだったってこと?
じゃあそのbashスクリプトを書いた人はなんでって話になるけど
2019/08/21(水) 11:43:24.61ID:CWF24/8E
訂正

× そのbashスクリプトを書いた人はなんでって話になるけど
○ そのbashスクリプトを書いた人はなんの機能を使いたくてbashを使っているの?
2019/08/21(水) 12:37:03.95ID:+hDHTeft
bashしか使わない人がbash依存して何か問題あるのかね

シェルに限らずLinuxしか使わない人が「Windowsでも動く」プログラムを書く必要はないし

(シェアの低い変なコンピュータ使ってる人はその人だけ苦労すればいい)
2019/08/21(水) 12:38:05.34ID:tOxptV2F
> bashしか使わない人がbash依存して何か問題あるのかね

問題ないよ。なにを目的にbash依存してるのか聞いてるだけ
2019/08/21(水) 12:58:08.94ID:23vMmTO3
>>218
>>217って言ってるだろう
bashを使い他を使うこともないから、わざわざ他を意識する調べることがないってことだろ
2019/08/21(水) 13:00:19.86ID:tOxptV2F
>>219
bashのなにかの機能を使いたくてbashにしているわけじゃないってこと?
配列とかbashにしかないなにかの機能を使いたいからbashを使ってるんじゃないの?
2019/08/21(水) 13:02:07.60ID:23vMmTO3
大多数はそんなこと気にしてないだろう
配列使うにしてもシェルスクリプトで配列使えるか調べ、現在使ってるシェル(大多数がbashだろう)で使えればそう使ってるだけだろう
2019/08/21(水) 13:05:16.74ID:tOxptV2F
なんかそれだとbashにする理由はないのに
bash依存してるって言ってるように見えるなw
2019/08/21(水) 13:07:38.33ID:23vMmTO3
逆でもあるだろうに。それで問題ないなら問題ないだろに
てか、>>217って言ってるのをを未だに理解できないの?理解したくないの?
2019/08/21(水) 13:09:19.14ID:ttxmDenw
結果的にbash依存になっているが当人はそんな事を意識していない、って感じ
2019/08/21(水) 13:09:33.13ID:tOxptV2F
>>223
君が質問に答えないからだよ

質問
> 思ったんだけどbash依存するのってなんの機能を使いたくてbash使うの?

結論
特になにかの機能が使いたいわけではないが、動いてしまったからbash依存になっただけ
2019/08/21(水) 13:11:10.44ID:23vMmTO3
そう>>217が言っているんだがな。なにか文を変えたいだけか?それもいやらしく
いつのもやつか、やっぱり
2019/08/21(水) 13:11:19.76ID:tOxptV2F
>>224
そうそう。そういう感じの答えが欲しかった。

(便利だから)特定の○○の機能が使いたい
or 理由はない

そういう答えを期待していた。
2019/08/21(水) 13:12:38.86ID:tOxptV2F
bashの機能のうち、これは絶対欲しいっていう機能は
あまりないってことなのかな?
2019/08/21(水) 13:18:24.42ID:8muhIeVb
最初から「bashの便利な機能」を聞いてるのに、
思いつかないなら無いって言わないから話がこじれるんだろう。
2019/08/21(水) 13:26:22.43ID:23vMmTO3
bashの便利な機能ってのが何を聞いてるのか曖昧だからな
kash,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんななの曖昧
シェルスクリプトに限らずスクリプトに限らずマルチプラットフォームを意識するかどうかの話にならざるを得ないだろう
2019/08/21(水) 13:28:58.51ID:rB/3mk9e
という話をして欲しいんじゃなくて
(あんたが思う)bashの便利な機能を聞いてるんだよ
2019/08/21(水) 13:30:51.65ID:KOXkIKEx
思いつかないなら、無いって素直に言えばいいじゃん。言い訳ばっかり
2019/08/21(水) 13:30:58.28ID:23vMmTO3
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なのかなんなのか曖昧

bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう。もちろんそんなに便利でもないのもあるだろうけど
2019/08/21(水) 13:31:56.80ID:23vMmTO3
>>231,232
ksh,zshなどでも同じくあるのではないあくまもでbash独自の機能なの?
2019/08/21(水) 13:32:58.59ID:oH2mxJhX
>>233
POSIXにはなくて、bashにしかない機能。
kshやzshの話は聞いてないので無視して良い

これで質問に答えられるよね?
2019/08/21(水) 13:35:01.88ID:23vMmTO3
配列w
readのオプション
他にもあるけど、すぐに思いつかない、便利と意識して使ってるわけではないからな。空気と同じだよ
2019/08/21(水) 13:35:54.29ID:ttxmDenw
あまり便利だとは思わないけどよく使ってるのは "&>" と連想配列(declare -A)
2019/08/21(水) 13:39:22.38ID:dVKYqL0H
ほんと質問に答えさせるのに何レス消費させるのかw

配列、連想配列、readのオプション、"&>"
これぐらいか?
2019/08/21(水) 13:40:56.88ID:ttxmDenw
自称「神様」のきまぐれなお遊びに付き合ってやってるんだ
ありがたく思いやがって下さい
2019/08/21(水) 13:41:29.73ID:dVKYqL0H
あぁ昨日のsortが安定の神様かw
2019/08/21(水) 13:41:30.49ID:23vMmTO3
>>235といい質問に「答えさせる」といい、なんか見えすぎなんだけどな
どしたの?
あんたの意図がわからんからだよ。何をしたいの?いつもの負けん気だけか?

bashの便利な機能もどっちにしろそれが使えないとわかった時に気がつくものだろう
って言ってるんだけど。だから空気と同じと言っているんだがなあ
2019/08/21(水) 13:44:31.57ID:dVKYqL0H
という話をなんでするんだろう?w
2019/08/21(水) 13:44:58.76ID:dVKYqL0H
ほんと、質問の関係ない言い訳ばかりするよなw
2019/08/21(水) 13:45:07.40ID:23vMmTO3
>>240
俺のことなら違う。俺は>>204だったりするんだがなw
2019/08/21(水) 13:46:22.58ID:dVKYqL0H
>>244
やっぱりsortのおじちゃんじゃんw
安定の意味わかったの?

どうして行番号順にsortしてるのに、
並び順が変わると思ったの?

まだその答え聞いてないよ
2019/08/21(水) 13:46:59.44ID:23vMmTO3
>244
おお...違う違うwなんて間違いを
俺は>>209だったりするね

>>242
あんたの意図がわからんからだよw
2019/08/21(水) 13:47:41.90ID:cs49NQcU
意図がわからないなら、意図がわからないから教えてといえば良い
2019/08/21(水) 13:47:49.79ID:23vMmTO3
>>245
ノリでそのレスしたのか、嬉々としてそのレスしたのか、嬉々としてならすまんかったw
2019/08/21(水) 13:48:55.17ID:l+gTzvUp
んでsortの話はどうなったの?
安定がどうとか
2019/08/21(水) 13:50:29.02ID:23vMmTO3
>>247
そこに噛み付いている意味がわからない
会話として楽しんでいるんだからいいんじゃないの?みなさん(?)は
とか言ってみるw
2019/08/21(水) 13:55:16.57ID:+thc3RuF
bashのプロセス置換は便利だなー(棒
2019/08/21(水) 13:55:38.38ID:Z+yguh+d
働けよクソニート
2019/08/21(水) 14:00:20.39ID:+thc3RuF
ブレース展開も便利だなー
2019/08/21(水) 14:21:13.28ID:+thc3RuF
可搬性を求めるならPOSIXで書く。
テキストこねくり回す程度のものなら書ける。

可搬性要らないor自分の環境で動けば良いなら好きに書けば良い。
bash,zsh依存でOK。ちゃんとシバン書いてな
255デフォルトの名無しさん
垢版 |
2019/08/21(水) 15:27:51.40ID:zqKd/4GT
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね。
2019/08/21(水) 16:35:44.19ID:MMv7CGOe
初めて触れたRH8も、Cygwinもbashだったから、
今でもふつうにbash使ってるな。

それにしても、bashはなんでこんなに嫌われてるんだ?w
2019/08/21(水) 16:44:32.20ID:MKRUgKM/
ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな
2019/08/21(水) 17:14:23.54ID:M+fZiddG
いつかカーソルキーのないキーボードを使うかも知れないから常にHJKL使えってvimスレの仙人が言ってた
2019/08/21(水) 17:36:09.70ID:+thc3RuF
>>258
Emacs使いはHJKL使わないってじっちゃんが言ってた
2019/08/21(水) 19:28:59.77ID:/hAWXHxO
>>257
Webサイト向けだが、UbuntuとDebianをあわせて59.7%がbash拡張の無いdashだからね
https://news.mynavi.jp/article/20190701-851849/
2019/08/21(水) 19:32:04.69ID:CEaWdSia
>>256
bashがデファクトスタンダード的なもんだからな。採用の多さから
ksh,zshなどと置き換えても同じことだったりしてるからな、単なる象徴的な名称としてだけだろう
あとは/bin/shがbashな場合にイマイチな仕様だったりするとこか
2019/08/21(水) 19:33:05.60ID:/hAWXHxO
あとmacがbashをやめてzshになるらしいので、それなりどころか
過半数以上がbashを使わなくなりそう。

まあmac版のzshはbashと互換性があるように
デフォルトオプションを変更してそうな気がするけど
shwordsplitとか

>>258
bash以外を使うことがないって言いたいんだろうけど、その例えは的外れかな
現に多くの人がbash以外を使ってるわけだから
2019/08/21(水) 19:34:57.26ID:/hAWXHxO
あ、そういやWSLもUbuntuだっけか。他のディストリも使えるけど
そう考えるとdash使ってる人、かなりいるな。
2019/08/21(水) 19:35:53.33ID:CEaWdSia
>>261,256
訂正。bashを嫌ってる人はいるみたいだった。理解できんw
2019/08/21(水) 19:45:33.15ID:/hAWXHxO
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?

Ubuntu/Debianでdashが採用されたのは
パフォーマンスがいいかららしい。

https://wiki.archlinux.jp/index.php/Dash
> 実行速度が速い。Bash などのシェルに比べて 4倍高速 に動作します。

その際にbash依存しているのに#!/bin/shを使われていたから
変更するのに手間がかかったって言われてるね。

あとセキュリティもbashよりもdashのほうが高そうだし。bashは今も機能加えてるから新たに脆弱性が生まれてくる可能性も高い。

https://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B7%E3%83%A7%E3%83%83%E3%82%AF%E8%84%86%E5%BC%B1%E6%80%A7
> 2014年9月に公表されたBashについての一群の脆弱性(CVE-2014-6271 [1] 等)の発見は、
> 俗にシェルショック(Shellshock)、バッシュドア(bashdoor)と呼ばれている。
> 関連して6つの脆弱性が登録された。
2019/08/21(水) 19:51:13.28ID:CEaWdSia
なんかいきなりdash推ししているのがいるが>>257のいうデフォルトシェルがソレを指しているのって疑問
>>256なんぞからはデフォルトシェルはログインシェルのことを言っているのかと思ったけど

ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。引っかからなかったなにかがあるかもだが、引っかかったのがpasswd関連んとこだけというのもあり
2019/08/21(水) 19:53:39.23ID:/hAWXHxO
>>266
ログインシェルがbashでも
(UbuntuやDebianでは)#!/bin/shはdashだから
2019/08/21(水) 19:55:50.58ID:CEaWdSia
話が通じてないなw
2019/08/21(水) 20:02:35.45ID:MMv7CGOe
>>263
Ubuntu on WSL だと、デフォルトシェルはbashになる。
chshしない限り、WSLではbashのままの人が多いだろうな。
2019/08/21(水) 20:02:40.75ID:/hAWXHxO
>>268
ここでデフォルトシェルの定義がどうこう言っても無意味だっていう話

https://wiki.ubuntu.com/DashAsBinSh
> Why was this change made?
> The major reason to switch the default shell was efficiency.

デフォルトシステムシェルのことを
デフォルトシェルと呼んでる例なんていくらでもあるんだから
2019/08/21(水) 20:04:25.00ID:/hAWXHxO
>>269
> Ubuntu on WSL だと、デフォルトシェルはbashになる。
話通じてないなw

その人が書くシェルスクリプトの一行目には、どうせ #!/bin/sh って書くでしょ?
デフォルトログインシェルがなんであろうが、
デフォルトシステムシェルは dash になるんだよ。
2019/08/21(水) 20:08:56.78ID:MMv7CGOe
>>271
ああ、そいういうことね。

$ ll /bin/sh
lrwxrwxrwx 1 root root 4 7月 26 2018 /bin/sh -> dash*
2019/08/21(水) 20:09:40.60ID:CEaWdSia
誰かがデフォルトシェルと言えばそのデフォルトシステムシェルのことだと言っていたからなあ
流れ的に同じこと言っているなと。そんな話はしてないんじゃねえのってとことだな
2019/08/21(水) 20:12:54.47ID:/hAWXHxO
>>266
> ちなみに大好きなPOSIXでググってみたが、デフォルトシェル=ログインシェルだなあ。

POSIXが/bin/shについて語ることはあっても、
/bin/bashについて語ることはないと思う

POSIXの世界のシェルには/bin/shしかないのでは?
2019/08/21(水) 20:17:07.13ID:CEaWdSia
"default shell" というのはあるんだよ。そしてそれを指しているのはログインシェルっていう
なにか問題でも?ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもないってことだな、POSIXでの文章でそうなんだから
そして、ログインシェルの話をしていたって>>269で明らかになりましたってとこで俺は満足してますがw
2019/08/21(水) 20:19:20.00ID:MMv7CGOe
>>274
> POSIXの世界のシェルには/bin/shしかないのでは?
そうなの?
20年くらい前のbashの解説書 "bash Manual & Reference" には、
Bourn Shell(sh/bsh)をPOSIXに準拠させるために書き直したのが
Bourn Again Shell(bash)というふうに書かれていて、
そういうもんだと思ってたわ。
2019/08/21(水) 20:20:46.30ID:/hAWXHxO
>>275
うん、だからそこでデフォルトログインシェルの話をしたって意味がないでしょう?と言ってるわけ。

重要なのは /bin/sh の話だよ。
#!/bin/bash と書いてbashスクリプトを書くのはいいけど
#!/bin/shと書いていながらbashスクリプトになってるから嫌われているわけで
2019/08/21(水) 20:25:13.92ID:CEaWdSia
ふーん
食いつき&その後レスからそうとは思えないけど、まあそういうことでいいよw
2019/08/21(水) 20:26:05.08ID:/hAWXHxO
>>276
POSIXの世界にbashが出てくることはない。の反証として
bashの世界にPOSIXが登場したと言っても、それは反証になってないよw
2019/08/21(水) 20:28:27.61ID:LqLocPLj
bash bash bash
fish and bash
2019/08/21(水) 20:29:21.72ID:/hAWXHxO
>>278
なんでそう、本当は納得してないけど
納得してあげました風の言い方をするかな?w


最初から書いてるんだけど↓

265 自分:デフォルトの名無しさん[sage] 投稿日:2019/08/21(水) 19:45:33.15 ID:/hAWXHxO [4/10]
>>264
bashコードなのに#!/bin/shを名乗るなってことでしょ?
2019/08/21(水) 20:33:57.11ID:CEaWdSia
>>281
ああ、いつものだなってとこだなw
ログインシェルをデフォルトシェルと言っても何も差し支えがなく間違いでもない
というのがわかった|わかっているようなので、まあいいよってとこだよ
まさしく、その最初からも読み違いとしか思えないけど、まあそれもw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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