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

■ このスレッドは過去ログ倉庫に格納されています
2020/08/21(金) 15:17:55.64ID:mArnj/tT
シェルスクリプトに関する総合スレッドです。

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

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
2020/09/12(土) 13:09:48.29ID:65NtGZ7l
仕事でシェルスクリプトを触りはじめたけどすぐに地雷を踏む
2020/09/12(土) 13:23:20.82ID:6ll5lvdV
macのローカルで作ったシェルをLinuxで動かしたら悲しいことになった
2020/09/12(土) 14:00:32.63ID:Py28fth2
>>132
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?

現実的にありえない話をしても意味がない
2020/09/12(土) 14:01:12.85ID:Py28fth2
>>133
まあ初心者さんは何でもそうだよね

>>134
だからPOSIX準拠しろって話だ
137デフォルトの名無しさん
垢版 |
2020/09/12(土) 14:34:38.84ID:tj7slUn6
>>133
例えば?
2020/09/12(土) 14:58:47.65ID:cIbo/3Vm
>>133
ワナだらけだからね。
しかたないね。
本当に。。。
2020/09/12(土) 15:02:55.76ID:WICsaeqa
自分が無知なのをごまかすためにわなと言ってる
2020/09/12(土) 15:05:52.91ID:cIbo/3Vm
>>135
じゃあPOSIXなんか無視すりゃいいんだよ。
自分で好きなのをインストールすれば。

poshが普及したりはしないかな?w
2020/09/12(土) 15:52:04.79ID:WICsaeqa
自分は良くても他人のイメージを使うときに困るだろ

posh?好きなら自分でイントールしてろw
2020/09/12(土) 15:58:40.31ID:WICsaeqa
>>140
そのposhとかいうのをmacにインストールしたんだが

$ cd /
posh: cd: too many arguments

で動かないんだがwww

こんなバグソフト普及するわけねーだろwww
2020/09/12(土) 16:01:00.14ID:WICsaeqa
poshを終了しようとして

$ exit
posh: exit: bad number

www
2020/09/12(土) 17:12:01.89ID:cIbo/3Vm
>>141
POSIX互換ならなんでもすべて同じ、ではないから、そんな配慮はムダ。

>>142
ツンデレだな?w
まあがんばれ。
145デフォルトの名無しさん
垢版 |
2020/09/12(土) 17:14:06.13ID:l+/2U9kY
https://hoge1http://hoge2https://hoge3

https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです

どうやればできますか?
2020/09/12(土) 17:37:28.98ID:lYGfHMY4
>>144
全て同じではないから/bin/shはdashかbashしかありえない
2020/09/12(土) 17:39:17.54ID:bxqUAjH/
PS > "https://hoge1http://hoge2https://hoge3"; -split "http"| %{if($_ -ne ""){"http" + $_}}
https://hoge1
http://hoge2
https://hoge3
2020/09/12(土) 18:48:43.31ID:T2sfpjbr
>>145
echo 'https://hoge1http://hoge2https://hoge3' |
sed -e 's/https\{0,1\}:\/\//\
&/g'

いけるけど?
149デフォルトの名無しさん
垢版 |
2020/09/12(土) 22:08:36.54ID:wMTnI8uy
>>135
シェルスクリプトで全部やるなんて言われたら、バークレー校出身者もびっくりだわw
2020/09/12(土) 23:06:50.77ID:T2sfpjbr
https://mrsh.sh/
A minimal POSIX shell
2020/09/13(日) 01:46:19.84ID:adiCUzyX
>>150
This project is a work in progress.

はい撤収w
2020/09/13(日) 01:47:10.49ID:adiCUzyX
>>149
今話をしてるのはシェルスクリプトでやることの話だろ
153デフォルトの名無しさん
垢版 |
2020/09/13(日) 01:59:03.48ID:Z+zAoG6v
よくわからないのが、シェル関数や外部プログラムを作って、呼び出せばいいんじゃないの。

シェルスクリプトの見た目がどうこうという話は不毛だよ。
2020/09/13(日) 02:53:31.51ID:adiCUzyX
シェルスクリプト(の文法)に不満がある
→別のスクリプト使えばいい。あちこちに頼んで入れてもらえ

馬鹿なの?
どこにシェルスクリプト以外のスクリプト言語が
予めインストールされている世界があるというのか
現実を見たほうがいい
2020/09/13(日) 04:07:42.04ID:yf/OpS3O
>>154
「予め」とか言ってるのが馬鹿。
自分でインストールしようと思えばする。
でなければしない。
それだけ。
2020/09/13(日) 06:59:54.51ID:adiCUzyX
だから他人が作ったイメージでは無理だろ
なんでもroot持ってると思うな
157デフォルトの名無しさん
垢版 |
2020/09/13(日) 08:18:10.16ID:Z+zAoG6v
>>154
そのOSの基本シェルがインストールされていないわけがない。

そもそもシェルがなんなのかわかっているのか?
2020/09/13(日) 08:30:33.36ID:723dk/Fa
>>154
だからシェルスクリプト以外を使えないだろって話をしてる
2020/09/13(日) 08:30:53.63ID:723dk/Fa
間違え

>>157
だからシェルスクリプト以外を使えないだろって話をしてる
160デフォルトの名無しさん
垢版 |
2020/09/13(日) 10:56:17.02ID:lPS2EOvv
>>147,148
ありがとう

>>147
PS???は初見だったんで調べてみます

>>147
先頭のhttpを除外しようと、頭が固くなってた
2020/09/13(日) 11:12:17.07ID:gk+8XYjA
>>160
PSはPowerShell、Windowsのやつなので関係ない
調べるだけ時間の無駄
2020/09/13(日) 11:14:43.75ID:lvPQUdaN
>>151
え,開発途中だったら興味ないの?
2020/09/13(日) 11:16:03.05ID:gk+8XYjA
開発断念には興味ないよw
164デフォルトの名無しさん
垢版 |
2020/09/13(日) 13:04:46.28ID:lPS2EOvv
>>161
助かりました
2020/09/13(日) 14:46:18.01ID:fPwxPBWU
>>164
いえいえ
166デフォルトの名無しさん
垢版 |
2020/09/13(日) 17:11:10.48ID:yiIqPN8F
お前じゃない
2020/09/13(日) 18:32:41.62ID:lvPQUdaN
>>163
This project is a work in progress
2020/09/13(日) 18:38:01.19ID:8aNWh6BR
>>167
コミット見てみ。もう飽きてる。
2020/09/13(日) 20:15:09.89ID:lvPQUdaN
>>168
そんなことわかるなんてすごいね。
170デフォルトの名無しさん
垢版 |
2020/09/13(日) 20:50:53.96ID:Z+zAoG6v
>>159
そもそもおまえはUNIX、Linuxをインストールしたことがあるのか?

かなり不思議なことを言っているぞ?

sedやawkは何か説明できる?
171デフォルトの名無しさん
垢版 |
2020/09/13(日) 20:53:16.41ID:qg7N5frC
Ubuntuのインストールを学ぶべき。
172デフォルトの名無しさん
垢版 |
2020/09/13(日) 21:07:19.31ID:Z+zAoG6v
Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。

そもそもシェルの概念がわかってないと、シェルスクリプトがシェルのスクリプトだとおそらく理解できない。
173デフォルトの名無しさん
垢版 |
2020/09/13(日) 21:18:59.72ID:Z+zAoG6v
別にシェルからすれば、シェルスクリプトではなく、実行ファイル形式を橋渡ししてマシン語でやり取りしてもらってもかまわない。

ただし、UNIXは既存のものの組み合わせでできるのであれば作らないという思想なので、C言語でゴリゴリ作るやつは批難される。
2020/09/13(日) 22:50:04.20ID:yf/OpS3O
>>172
デフォルトって何?w
Perlはインストールされなくてもおかしくないやろ。
2020/09/13(日) 22:53:06.96ID:yf/OpS3O
>>173
ゴリゴリつくるヤツがいたから、Gitが存在するんやで!w

Linux業界に「思想」なんかない。
あっても、何かの拍子にコロッと変わる。
あんまり真に受けないほうが。
2020/09/13(日) 23:54:22.32ID:w3Y31Eld
Windows10, WSL, Ubuntu 18.04 では、最初から、Python3 も入っている。
anyenv, asdf などで、Ruby, Node.js などの好きなバージョンも入れられる

file `which python`
/usr/bin/python: symbolic link to python2.7

file `which python2`
/usr/bin/python2: symbolic link to python2.7

file `which python3`
/usr/bin/python3: symbolic link to python3.6
2020/09/14(月) 00:00:43.38ID:8/TQSAVT
>>175
>>173はUnixの話をしているのに,
Linuxの話にすり替えるべきじゃないな。

「Linuxの思想はない」かも知れないが,
>>173が言っているのはUnix哲学だ。
178デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:39:00.87ID:LBeWsbwt
>>174
おまえは画面まっくらで、いくらキーを打っても何もできない状態で使うのか?

組み込みならわかるんだか。
179デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:43:01.28ID:LBeWsbwt
>>177
あのさ、LinuxはUNIXをPCアーキテクチャのハード用に、初めは個人が作ったものなんだよ。

UNIXの仕様が完全にはわからなくて、Linuxは少し異なるものになってしまった。

だから、LinuxはUNIXでないと説明される。しかし、UNIXの定義はPOSIX程度しかないため、UNIXから見ればLinuxもUNIXに含めてもいいかなあレベルになる。
180デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:46:08.13ID:LBeWsbwt
>>175
あのね、Linuxはレッドハット社がほぼ標準を決めていて、基本的なところが大きく変わることはない。

あなたの言っている部分は枝葉の部分。
2020/09/14(月) 01:28:26.98ID:arqUoPz9
実際に存在するLinuxの話をしましょうよw

$ docker run -it alpine
/ # perl
/bin/sh: perl: not found
/ # python
/bin/sh: python: not found
/ # pyton3
/bin/sh: pyton3: not found
/ # ruby
/bin/sh: ruby: not found
2020/09/14(月) 01:51:11.45ID:Cxw6q39C
>>177
であれば、ほとんど死んだようなOSの哲学を語ることに現実の意味はない。
考古学者以外は。w
2020/09/14(月) 01:58:31.80ID:8w1wBNml
Alpine は、5MB しかない。
何も入っていない

それに、Ruby on Rails, Node.js などを入れて使うもの
2020/09/14(月) 02:31:04.77ID:Cxw6q39C
>>178
サーバー用最小ならおかしくない。

まさかデフォルトって、GUIデスクトップ用のことを言ってないよなあ?
185デフォルトの名無しさん
垢版 |
2020/09/14(月) 02:41:43.07ID:LBeWsbwt
>>184
おまえさ、CUIの画面があるのがあたりまえだと思っているだろ?

CUIそのものがシェルなんだよ。
186デフォルトの名無しさん
垢版 |
2020/09/14(月) 02:43:36.81ID:LBeWsbwt
コンピューターの仕組みを理解していないのにいちいち見当違いのことを書くんじゃない。
2020/09/14(月) 09:57:03.60ID:Cxw6q39C
>>185
だから何?

>>186
自己紹介乙。w
2020/09/14(月) 10:40:45.77ID:S/jhW9z+
Perlが入ってないLinuxがあるってこともしらんのか
2020/09/14(月) 10:41:04.73ID:S/jhW9z+
しかも有名でよく使われてるディストリ
190デフォルトの名無しさん
垢版 |
2020/09/14(月) 17:25:24.86ID:LBeWsbwt
揚げ足取りは久しぶりに
2020/09/14(月) 17:37:46.13ID:dr1ZmQsx
>>178
どうしてperlかなかったら画面真っ暗で文字が打てないわけ?
192デフォルトの名無しさん
垢版 |
2020/09/15(火) 01:42:38.92ID:Yms7aROo
シェルがなかったらと書いてあるだろ。
しつこいけどシェルは人間とのユーザーインタフェースだよ。
シェルがなければ人間は何もできない。
193デフォルトの名無しさん
垢版 |
2020/09/15(火) 01:43:33.60ID:Yms7aROo
コンピューターは必ずCUIの画面があると思ってしまうのだろうか?
2020/09/15(火) 03:10:33.47ID:0TDTec2Q
言葉遊びには意味がない。
2020/09/15(火) 05:57:39.18ID:+pcRVQQ5
シェルはLinuxに必ずインストールされているが
Perlはインストールされてないものが実際に存在し使われている

話はこれだけだろ
2020/09/15(火) 08:21:54.14ID:QH5y4eUt
>>192
お前コミュ力なさすぎ…
perlがインストールされてなくてもおかしくないってレスに対して、
なんでシェルがなかったら画面真っ暗なんて回答になるんだよ
2020/09/15(火) 11:38:13.21ID:Ru6NgLud
このスレの人ってどうでもいい事になんでこんなすぐ必死になるの?
2020/09/15(火) 13:03:13.91ID:DboEcGlM
>>197
そしてなぜ黙ってればいいのに
こんなことを書き込んでしまうの?
2020/09/15(火) 13:59:53.23ID:y5g42ZKf
真面目で、相手の誤りを修正してあげたいから。
バカで、自分の誤りを認識できないから。

とか、人それぞれに理由があるやろ。
まあ、最大の理由はヒマだから。w
おまえもな。
200デフォルトの名無しさん
垢版 |
2020/09/15(火) 15:48:33.27ID:Yms7aROo
>>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。PerlはLinuxの大半のインストーラが標準設定でインストールしてしまう。
2020/09/15(火) 16:02:10.84ID:0TDTec2Q
>>200
もとの話とつながってないぞ!w
やりなおし!
2020/09/15(火) 17:23:49.50ID:SdJ7XIqb
>>200
bashがインストールされてない環境はあるし実際によく使われている
2020/09/15(火) 18:41:25.99ID:DboEcGlM
これ何の話だっけ。
「シェルが存在せずにPerlなどが存在する環境」

「シェルは存在するがPerlは存在しない環境」
の比較?
いや,違うのかもしれないが,
だとするとPerlがどうとかいう話がどこから出てきたのか分からんw
2020/09/15(火) 18:52:17.80ID:SdJ7XIqb
これだろ?

172 名前:デフォルトの名無しさん[] 投稿日:2020/09/13(日) 21:07:19.31 ID:Z+zAoG6v [4/5]
Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。

200 名前:デフォルトの名無しさん[] 投稿日:2020/09/15(火) 15:48:33.27 ID:Yms7aROo [3/3]
>>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。


perlもbashも入ってない環境が実際にあってよく使われている
2020/09/15(火) 19:01:42.43ID:1jncYIE/
極論が好きな人が居るねぇ
root権限でのパッケージ導入を依頼するでもOS/ディストリビューションの選定提案をするでもVMを生やすでもコンテナを建てるでも何でも使える手は使って、自分の手段と環境の中で一番楽な地獄を使うのがいい
手を尽くしてもシェルスクリプト以外使えないか、手を尽くすのがダルいならそりゃそのままシェルスクリプトを使うしかないのはそれはそう
ただ現代においてシェルスクリプトしかスクリプト言語を使えない上に新規導入もできない案件が多数派だし普通だよって言われると本当?って思うしその立場に同情するまである
2020/09/15(火) 19:14:03.32ID:0TDTec2Q
最近はコンテナ系がはやって、ガチガチの最小構成も現実的やろ。
昔なら、とりあえずあれこれ入ってるし入れるのがふつうだったが。
2020/09/15(火) 20:21:38.62ID:DboEcGlM
>>206
これ
2020/09/15(火) 20:36:21.55ID:Bkm+Im76
>>197
1つの道具しか使えない人や1つの道具への依存度の高い人は
その道具の必要性を下げる話や短所を指摘されると
無意識に自分の存在意義を否定された(攻撃された)と感じるので必死になる

特定の道具への精神的依存度の高い人たちが集まってる所ではよくあること
2020/09/15(火) 20:40:12.28ID:d9JYg3Jf
>>206
そういう時はGoで書いてもいいよね?
2020/09/15(火) 20:49:49.54ID:st0X4sID
コンテナ向け最小構成ならそれこそコンテナ生やせばいいじゃん…
2020/09/15(火) 21:05:24.21ID:0TDTec2Q
>>210
PerlコンテナとかPythonコンテナとかつくるの?
粗なの?密なの?w
2020/09/15(火) 21:06:37.35ID:0TDTec2Q
>>209
C++23で書こう!w

しかし、今さら使いやすそうになってきたな。。。
2020/09/15(火) 21:22:33.55ID:bVn8kGX2
>>209
ほんの数行で作れるシェルスクリプトの代わりに
goを使うのは手間がかかりすぎる
2020/09/15(火) 21:23:36.57ID:bVn8kGX2
なんでもPython、なんでもPerl、なんでもGoっていうのは
単に勉強したくないだけなんだろうなって思ってる
2020/09/15(火) 21:49:15.52ID:DboEcGlM
Goがやろうとしてる「どこでも動く!,依存性最小!」って
それまさにPOSIXシェルが数十年前から実践してることなんだけどねw
2020/09/15(火) 22:09:41.62ID:5uVwOM3u
YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる

この2つ以外は、出てこない

GUI 系は、画面の手直しなどで、工数がかさむ。
C#, dot.net などのWindows 系は、いらない。
Java などの土方系も、いらない。
Elixir, Rust は、普及へのchasm・溝を超えられなかった

言語よりも、Docker, Kubernetes, AWS などの、サーバー構築・新規案件を重視する。
上流工程・新規案件の方が、価格交渉力が強いから
2020/09/15(火) 22:27:04.19ID:5aHfCmvT
>>208
なるほどね〜

コンプレックスの裏返しみたいなものか
2020/09/15(火) 23:33:10.49ID:Tmf/kgmE
「シェルスクリプトで書いていたもの」を他の言語に
置き換えることで楽になることなんてないと思っている

※最初からシェルスクリプトで書いてないものの話ではない
2020/09/16(水) 00:01:35.11ID:MNPDZagX
>>211
単芝生やしてるけどそれこそDockerHubにPythonのOfficial Image普通にあるよ
正直お互い想定してる状況が違い過ぎてるような気もするが
2020/09/16(水) 00:07:40.59ID:NJW1Qx1P
1. PythonやPerlが入ってない環境がある
2. シェルスクリプトで実現できる
3. PythonやPerl入れればいいじゃん!
4. PythonやPerlで書き直す
5. コードがシェルスクリプトよりも面倒になってる

ほとんどがこれ
シェルスクリプトで実現できることを
他の言語で書いたら余計面倒になる

面倒になるのに他の言語で書こうとするやつは
単に(効率的な)シェルスクリプトを勉強したくないだけ
2020/09/16(水) 00:18:53.14ID:fQIibdhg
はしゃいでるところに水を差して悪いけどシェルスクリプトに必要な心得ってなんですかね?
素人ながらとりあえず動く物は作れたけどifだらけのクッソ汚いコードなんで修正したい
オプションもgetopts知らずにifと[[でなんとかしてる
bashの基本は押さえたけどLinuxの常識までは網羅できてないんで
2020/09/16(水) 00:26:37.24ID:NJW1Qx1P
ifだらけだからクソ汚いってことにはならない

もしキレイなコードとやらを知ってるのであれば
それをシェルスクリプトでやればいいだけ
2020/09/16(水) 00:40:05.89ID:BkyZoSl2
>>219
そりゃああるやろ。w
あるからなんなの?
コンテナのまま実運用で使うの?
2020/09/16(水) 00:41:31.46ID:67D9s6fy
ほんとに必死だね
よほどコンプレックスが強いんだろうな

シェルスクリプトに固執しないとダメな状況ってそうそうないだろうに
2020/09/16(水) 00:49:16.66ID:NJW1Qx1P
シェルスクリプトに固執っていうか、シェルスクリプトが最善な場合に
シェルスクリプトを使うってだけだよね
2020/09/16(水) 01:41:09.00ID:BkyZoSl2
>>224
スレタイが読めないの?w
どっちが固執してるんだか。。。
227デフォルトの名無しさん
垢版 |
2020/09/16(水) 02:44:08.53ID:0ZaEBr0v
>>221
入門UNIXシェルプログラミングという名著を読めばよい。
228デフォルトの名無しさん
垢版 |
2020/09/16(水) 02:45:36.69ID:0ZaEBr0v
>>226
シェルスクリプトと、コマンド、外部プログラムの呼び出しはシェルスクリプトではないからな?
229デフォルトの名無しさん
垢版 |
2020/09/16(水) 02:48:58.69ID:0ZaEBr0v
シェルのスクリプトだから、シェルスクリプトの構文だけの話をすると、このスレは過疎化すると思うぞ。
2020/09/16(水) 06:01:38.56ID:NJW1Qx1P
だからといって外部コマンドのオプションやら文法の話をしたって意味ない
そういうのはmanページ見ろで終わる話
2020/09/16(水) 10:12:38.47ID:+0jueX8G
シェルスクリプトにこだわることの是非はともかく,
このスレに住み着くのは理があるわけだけど,
一方でPythonやRubyに固執している人が
このスレに居座りつづける理由が不明。

このスレはシェルスクリプトのことを話すスレなんだから,
Perl,Python,Ruby,Goなんかにこだわってても
ストレス溜まるだけだと思うんだけど……。
しかも不毛だしw
2020/09/16(水) 10:14:49.79ID:+0jueX8G
>>229
過疎化してなにか問題あるか?
シェルスクリプトの構文で質問がある場合は
ageればいいだけだし,
技術系のスレは勢いがなくても一定数の閲覧があるんだから
それで全く問題ない。

もしかしてなんJとかその辺りと同じような考えで
「過疎化する」=「悪」みたいに捉えちゃってる?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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