シェルスクリプト質問スレ
227login:Penguin
2026/01/29(木) 05:25:59.51ID:osGa1Y0N 今は何でもLLMに質問できるからな……
2026/07/21(火) 20:09:32.07ID:jNQYpuZQ
今日、初めて、zshの**(再帰検索)を知った。
めっちゃ便利やん。
find使わんでもfindを使ったような一括処理ができる
find . -type f -name "*.webp" -exec bash -c 'for f; do magick mogrify -format jpg "$f" && rm "$f"; done' _ {} +
と今まで書いていたのが
for f in **/*.webp; do magick mogrify -format jpg "$f" && rm "$f"; done
で済む
めっちゃ便利やん。
find使わんでもfindを使ったような一括処理ができる
find . -type f -name "*.webp" -exec bash -c 'for f; do magick mogrify -format jpg "$f" && rm "$f"; done' _ {} +
と今まで書いていたのが
for f in **/*.webp; do magick mogrify -format jpg "$f" && rm "$f"; done
で済む
2026/07/22(水) 05:19:06.57ID:XaMozcjW
便利だね
ちなみにAIによると、bashでもver4.0以降なら
shopt -s globstar nullglob # ←これ必要
for f in **/*.webp; do magick mogrify -format jpg "$f" && rm -- "$f"; done
が出来るんじゃないかな
ちなみにAIによると、bashでもver4.0以降なら
shopt -s globstar nullglob # ←これ必要
for f in **/*.webp; do magick mogrify -format jpg "$f" && rm -- "$f"; done
が出来るんじゃないかな
230login:Penguin
2026/07/22(水) 17:45:20.24ID:2vbXf8Gh bash でも shopt -s globstar 実行したら ** が使えるらしい
ドット開始のファイル/フォルダ名も処理対象にしたいなら shopt -s dotglob も追加
ドット開始のファイル/フォルダ名も処理対象にしたいなら shopt -s dotglob も追加
231login:Penguin
2026/07/23(木) 05:36:43.65ID:Nwxr/JU4 ほー、
今までディレクトリ以下のファイル内にgrepするとき
grep keyword *.py
grep keyword */*.py
grep keyword */*/*.py
ってやってたけど
grep keyword **/*.py
で出来るんだ
今までディレクトリ以下のファイル内にgrepするとき
grep keyword *.py
grep keyword */*.py
grep keyword */*/*.py
ってやってたけど
grep keyword **/*.py
で出来るんだ
2026/07/23(木) 06:52:10.68ID:S8xk3zuY
一つ一つmogrifyするんじゃなくて
見つけた.webを以下のように一気に並列処理するとどうだろうか
(magick mogrify -format jpg "01.web" && rm -- "01.web") &
(magick mogrify -format jpg "02.web" && rm -- "02.web") &
…
(magick mogrify -format jpg "98.web" && rm -- "98.web") &
(magick mogrify -format jpg "99.web" && rm -- "99.web") &
wait
.webpが多いとハングアップ状態になると思うので
数個単位で分割とかCPU負荷に応じて並列実行数を可変にするとか
見つけた.webを以下のように一気に並列処理するとどうだろうか
(magick mogrify -format jpg "01.web" && rm -- "01.web") &
(magick mogrify -format jpg "02.web" && rm -- "02.web") &
…
(magick mogrify -format jpg "98.web" && rm -- "98.web") &
(magick mogrify -format jpg "99.web" && rm -- "99.web") &
wait
.webpが多いとハングアップ状態になると思うので
数個単位で分割とかCPU負荷に応じて並列実行数を可変にするとか
2026/07/23(木) 06:53:17.80ID:S8xk3zuY
> (magick mogrify -format jpg "01.web" && rm -- "01.web") &
↓
(magick mogrify -format jpg "01.webp" && rm -- "01.webp") &
拡張子間違ったw
↓
(magick mogrify -format jpg "01.webp" && rm -- "01.webp") &
拡張子間違ったw
234login:Penguin
2026/07/23(木) 11:30:46.05ID:H7rg7K1S 繰り返しは for 文か xargs 使おうぜ。
xargs で4並列実行の例:
printf "%s\n" {01..99}.webp | xargs -d $'\n' -n 1 -P 4 bash -c 'magick mogrify -format jpg "$1" && rm -- "$1"' --
# 通常は printf じゃなくて find . -name '*.webp' に差し替えで
xargs で4並列実行の例:
printf "%s\n" {01..99}.webp | xargs -d $'\n' -n 1 -P 4 bash -c 'magick mogrify -format jpg "$1" && rm -- "$1"' --
# 通常は printf じゃなくて find . -name '*.webp' に差し替えで
235login:Penguin
2026/07/23(木) 11:32:13.65ID:vtHrtAQx >>231
grep なら伝統的に -r オプションがあるだろ。
と筆が走ったはいいが、自分でほぼ使ったことがないので調べると、4行目のようにするらしい。
1 $ mkdir -p a/b/c/d
2 $ echo 'keyword' | tee a/b/c/d/keyword.py > a/b/c/d/keyword.txt
3 $ cd a
4 $ grep -r --include='*.py' 'keyword'
5 b/c/d/keyword.py:keyword
6 $
grep なら伝統的に -r オプションがあるだろ。
と筆が走ったはいいが、自分でほぼ使ったことがないので調べると、4行目のようにするらしい。
1 $ mkdir -p a/b/c/d
2 $ echo 'keyword' | tee a/b/c/d/keyword.py > a/b/c/d/keyword.txt
3 $ cd a
4 $ grep -r --include='*.py' 'keyword'
5 b/c/d/keyword.py:keyword
6 $
2026/07/23(木) 13:15:08.74ID:S8xk3zuY
237login:Penguin
2026/07/30(木) 19:19:43.23ID:3tgLljX9 シェルスクリプトは可読性も大事
238login:Penguin
2026/08/10(月) 21:35:37.59ID:un2GkJsF いやーやっぱshellって凄いな。感謝しかないわ。
何なのこの効率のよさ。何処までも俺のガラクタ脳みその能力を最大限引き出してくれる感じ。覚えたbad knowhowを無駄なんかないぜって活かしてくれる駄目な俺の守護神。
何日もこなさないといけない事柄を考え抜いて、これ書くのまた何日かかるんだろ、これは簡単じゃないし、AIに聞いても助けにならない難易度のやつ、苦労するなと思ってたらshellで動きを確かめたら、あれ?これひょっとしてと思ったら、そのまま一時間ぐらいで書ききれてしまった。
浮いた時間は...精進する為に使えって事なんだね。攻めるぜ!
何なのこの効率のよさ。何処までも俺のガラクタ脳みその能力を最大限引き出してくれる感じ。覚えたbad knowhowを無駄なんかないぜって活かしてくれる駄目な俺の守護神。
何日もこなさないといけない事柄を考え抜いて、これ書くのまた何日かかるんだろ、これは簡単じゃないし、AIに聞いても助けにならない難易度のやつ、苦労するなと思ってたらshellで動きを確かめたら、あれ?これひょっとしてと思ったら、そのまま一時間ぐらいで書ききれてしまった。
浮いた時間は...精進する為に使えって事なんだね。攻めるぜ!
239login:Penguin
2026/08/10(月) 21:39:33.29ID:ad6JJENu240login:Penguin
2026/08/10(月) 21:40:24.18ID:ad6JJENu >>238
書き込む前にAIで校正してもらったほうがいい。
書き込む前にAIで校正してもらったほうがいい。
241login:Penguin
2026/08/10(月) 22:58:42.30ID:WggsIsjK shellcheckとshfmtすごいな
2026/08/11(火) 22:35:10.72ID:q9yeERdD
シェルスクリプトをshellと略すのはやめた方が良いようです
VS Code + Bash Debug
でbashシェルスクリプトをIDEでステップ実行・デバッグできるらしい
ということを知ったので時間ある時実験してみたい
VS Code + Bash Debug
でbashシェルスクリプトをIDEでステップ実行・デバッグできるらしい
ということを知ったので時間ある時実験してみたい
243login:Penguin
2026/08/13(木) 13:34:10.43ID:UohDn0mz 俺はどうにもvscodeで動かないので端末からbashdbでやってる
このbashdbもmainブランチだと最新bashに対応してないので別ブランチを持ってこないと駄目だとか色々大変でした
このbashdbもmainブランチだと最新bashに対応してないので別ブランチを持ってこないと駄目だとか色々大変でした
244login:Penguin
2026/08/13(木) 13:35:45.11ID:O9dtbIvv >>242
AIに任せたら全部正しくしてくれるから、デバックなんて作業しなくなった。
AIに任せたら全部正しくしてくれるから、デバックなんて作業しなくなった。
245login:Penguin
2026/08/13(木) 14:11:42.69ID:UohDn0mz デバッグ作業が楽しいのにねえ
246login:Penguin
2026/08/13(木) 14:13:29.73ID:O9dtbIvv >>245
AIに一度任せてみたら?いかに無駄な作業かわかるから。
AIに一度任せてみたら?いかに無駄な作業かわかるから。
2026/08/13(木) 14:22:58.62ID:bZYVXLxM
その作業をすることで得られる知見も有るから一概に無駄と片付けるのもどうかと
248login:Penguin
2026/08/13(木) 14:24:08.34ID:O9dtbIvv >>247
そういう時代もあったけど、その知見も必要なくなっているのが今。
そういう時代もあったけど、その知見も必要なくなっているのが今。
249login:Penguin
2026/08/13(木) 17:57:16.89ID:UohDn0mz ちゃんとAIも併用してるから安心して
そう鼻息荒く説かなくて良いよw
そう鼻息荒く説かなくて良いよw
250login:Penguin
2026/08/13(木) 18:41:43.71ID:O9dtbIvv >>249
時代遅れ。
時代遅れ。
2026/08/13(木) 22:45:57.46ID:JohXWfgJ
AIが書いたコードを読まずに動かすのは怖いな
bashスクリプトをよく書いてもらってるけど
・空白混じりのファイル名を扱うところでバグる
・ファイルが存在しないのに実行するとバグる
・まるで勘違いのシステム操作
などといった超凡ミス・クリティカルミスがたびたびある
バグってシステム壊れたりお宝ファイルが消滅するリスクがある
人間が作ったコードはテストされていてそんなミスは少ないと思う
AIが書いたコードはレビューもテスターも自分が第一号
bashスクリプトをよく書いてもらってるけど
・空白混じりのファイル名を扱うところでバグる
・ファイルが存在しないのに実行するとバグる
・まるで勘違いのシステム操作
などといった超凡ミス・クリティカルミスがたびたびある
バグってシステム壊れたりお宝ファイルが消滅するリスクがある
人間が作ったコードはテストされていてそんなミスは少ないと思う
AIが書いたコードはレビューもテスターも自分が第一号
252login:Penguin
2026/08/13(木) 23:59:59.96ID:SfHC8Sm4 変数をダブルクォーテーションで括らない(=空白混じりの文字列を
複数引数としてパーズしてしまう)癖があるのは確かに気になる
コンパイル言語で括らないほうを好むように学習してしまってるんだろうな
ただ逆に自分より賢い/よりノウハウが詰め込まれた汎用性の高いコードを
返してくることもあるので侮れない
複数引数としてパーズしてしまう)癖があるのは確かに気になる
コンパイル言語で括らないほうを好むように学習してしまってるんだろうな
ただ逆に自分より賢い/よりノウハウが詰め込まれた汎用性の高いコードを
返してくることもあるので侮れない
2026/08/14(金) 00:07:12.97ID:WBiwKfs4
定番なのに今まで自分は知らなかった手法を書いてくれた時は感動する
何やってるか分からないところは分かるまでAIに質問攻めしたり調べたりして
全て理解してからじゃないと実行しない
何やってるか分からないところは分かるまでAIに質問攻めしたり調べたりして
全て理解してからじゃないと実行しない
2026/08/14(金) 06:42:03.11ID:VWod7kn+
ChatGPTな登場してスクリプトの理解度が上がった
わからない行は丁寧に教えてくれるし、
知らなかった文法や、アルゴリズムも新しい知識として得られる
Linuxと生成AIって相性が本当によい
わからない行は丁寧に教えてくれるし、
知らなかった文法や、アルゴリズムも新しい知識として得られる
Linuxと生成AIって相性が本当によい
255login:Penguin
2026/08/14(金) 07:59:50.72ID:KOm0o+8U もっともらしい嘘をつくのもAIなんだが
256login:Penguin
2026/08/14(金) 11:18:45.81ID:bVU+G+he Google でコマンド調べてるとたまに存在しないコマンドラインオプション提示してくるよね...
2026/08/14(金) 16:17:13.99ID:y2KVGNtr
レスを投稿する
ニュース
- 【速報】 高市首相 「円安ホクホク」発言に、米国が「What the fuck 」と日本に通知したことが判明 [お断り★]
- 外務省がアメリカ側に強く抗議したと発表 沖縄・那覇市の強盗殺人事件で海兵隊の男逮捕 [少考さん★]
- 「運動音痴にとって、体育の授業は『公開処刑』」 運動嫌いを生みだす日本の教育の問題点 [征夷大将軍★]
- 【速報】高市首相の「寝てない」にSNS賛否「命がけで頑張っている」「アピールはもうけっこう」 海外メディアも注目 (共同通信) [少考さん★]
- 【沖縄】米海兵隊の20歳男を強盗殺人容疑で逮捕 那覇市のホテルで女性殺害し財布など奪った疑い 「私は知りません」容疑否認 [ぐれ★]
- 【アジア大会】大村秀章知事が会見 「アジア版五輪」の成功を強調「やり切ることができた」 [首都圏の虎★]
- 【実況】博衣こよりのえちえち空の軌跡the2nd🧪★1★2
- タバコ吸い始めるキッカケて
- 【悲報】日本人、気づき始める「あれ?俺たちなんか貧しくなってね?」wwwwwwwwwwwwwwwwwwwwwwww [379664288]
- 



ハズレのお🏡




- 【朗報】公明党代表、在日韓国人3世であることを表明wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [339035499]
- 【高市悲報】まだアブラゼミが鳴いてる🥺 [616817505]