シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
前スレ シェルスクリプト総合 その26
https://mevius.5ch.net/test/read.cgi/unix/1489979246/
探検
シェルスクリプト総合 その27
レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/05/03(木) 17:54:23.25
2018/07/09(月) 19:00:09.14
compgenによる補完候補の絞り込みですが
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます
2018/07/09(月) 22:19:36.10
>>878
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。
2018/07/10(火) 08:36:39.48
2018/07/15(日) 05:45:07.54
シェルスクリプトでwebpackみたいに結合して1ファイルにしてくれるものとか
babelみたいにトランスパイルすることで言語を拡張するものって無いかな
babelみたいにトランスパイルすることで言語を拡張するものって無いかな
2018/07/15(日) 13:28:22.06
>>882
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。
2018/07/16(月) 09:08:44.64
2018/07/16(月) 11:20:08.69
>>884
それがshar
それがshar
886名無しさん@お腹いっぱい。
2018/07/17(火) 14:15:20.692018/07/17(火) 14:17:28.78
shar知らない人のために説明しておくと、
これは単なる自己解凍形式の圧縮ファイル形式に過ぎない
これは単なる自己解凍形式の圧縮ファイル形式に過ぎない
2018/07/17(火) 14:31:39.62
それよりwebpackとやらについて説明しておくべきだったろ
聞き方が悪い
聞き方が悪い
2018/07/17(火) 14:59:08.62
名前出てるんだから調べればいいだけだろ
2018/07/17(火) 15:01:52.39
なんで聞く側が偉そうなんだよって話だろ
2018/07/17(火) 16:41:05.27
どう使いたいかとかわからんのにな
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
2018/07/17(火) 18:43:00.23
webpackはCのプリプロセッサのincludeみたいなやつだよ
2018/07/17(火) 19:48:43.74
バンドルじゃないの。macOSのバンドルのようなのを単一ファイルでの
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね
2018/07/18(水) 07:15:49.95
webpackとかbabelとか覚えたてのキーワード並べてみたかったんでしょ
そんなのが必要になる状況がクソなんだがなw
そんなのが必要になる状況がクソなんだがなw
2018/07/18(水) 10:45:31.69
2018/07/18(水) 10:47:00.38
>>894
単一のファイルで何千行も書きたいの?
単一のファイルで何千行も書きたいの?
2018/07/18(水) 10:48:08.70
ちなみにsharの問題は展開しないと使えないって所
ルータのような書き込み回数に制限があるシステムでは致命的
ルータのような書き込み回数に制限があるシステムでは致命的
2018/07/18(水) 10:48:51.53
あと展開のためのコマンドが入ってない可能性もあるしな
ファイル結合するだけなら、外部のコマンドにも依存しない
ファイル結合するだけなら、外部のコマンドにも依存しない
2018/07/18(水) 12:29:11.73
シェルスクリプトは実行可能なままファイル結合する必要性があんまりないってこと
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?
2018/07/18(水) 14:24:18.43
てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。
2018/07/18(水) 19:30:47.19
ディレクトリ A の中のファイルを全部
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします
2018/07/18(水) 19:32:58.08
diff -r A B
でいいのでは?
でいいのでは?
2018/07/18(水) 20:29:52.99
少しはggるとかしてからここに恋や
2018/07/18(水) 21:00:07.83
その前にmanすれ
2018/07/18(水) 21:33:29.76
システムのスクリプトにも参考になるものがたくさんあるよね。zgrepとかzdiffとか
linuxだけどlddがシェルスクリプトだったのには驚いた
linuxだけどlddがシェルスクリプトだったのには驚いた
2018/07/18(水) 21:51:54.45
bashのHISTTIMEFORMATを設定した環境だと
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん?
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん?
2018/07/18(水) 22:33:43.46
設定してなくてもsshログアウトしてもbgプロセス消えないけど、うちでは
他の設定じゃね
他の設定じゃね
2018/07/18(水) 23:31:51.58
うーむ
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか
2018/07/19(木) 00:16:48.11
https://serverfault.com/questions/117152/do-background-processes-get-a-sighup-when-logging-off
だって。ちょい昔からデフォで子プロセスにHUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど
huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ
だって。ちょい昔からデフォで子プロセスにHUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど
huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ
2018/07/19(木) 09:21:29.33
case文で,Bash特有の高速化オプションとかありませんかね。
2018/07/19(木) 10:02:38.02
2018/07/19(木) 10:34:16.62
>>902
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました
2018/07/19(木) 11:14:05.74
お題としてはちょっと楽しめると思うけど、諦めちゃうのか
2018/07/19(木) 11:19:41.98
find A -type fして、それぞれbasenameとって、find B -name filename -exec hogeってかんじかな。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。
2018/07/19(木) 12:11:39.09
diffの話ついでに
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。
2018/07/19(木) 12:28:48.82
LANG=Cで^Onlyにマッチさせてはじく
2018/07/19(木) 12:35:37.30
diffの出力って行頭の文字が重要なのに、
これを無視した日本語ロケール作者は反省するべき。
これを無視した日本語ロケール作者は反省するべき。
2018/07/19(木) 12:53:00.49
結果に対してsedで…ってのはさすがに無駄だな
2018/07/19(木) 12:57:00.83
2018/07/19(木) 15:19:36.24
詳しい解説サンクス
2018/07/19(木) 20:13:49.97
2018/07/20(金) 01:50:52.37
>>900
> てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
行数で使う言語を決めるなや
シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語
シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる
なぜ非効率な言語を使うのか?
> てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
行数で使う言語を決めるなや
シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語
シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる
なぜ非効率な言語を使うのか?
2018/07/20(金) 02:03:28.48
はいはい
2018/07/20(金) 06:54:58.07
この引用符…あっ(察し
2018/07/20(金) 07:21:43.92
引用符?
2018/07/20(金) 12:12:45.33
>>922
まさにシェルスクリプトがプログラム間連携のための言語だからだよ。
1000行以上にも及ぶ複雑なプログラム間連携処理を
シェルスクリプトで書く状況ってのは
モジュール分割に失敗してる可能性がきわめて高い。
100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。
シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を
欠いていて大規模プログラミングに向かないことは常に意識するべき。
まさにシェルスクリプトがプログラム間連携のための言語だからだよ。
1000行以上にも及ぶ複雑なプログラム間連携処理を
シェルスクリプトで書く状況ってのは
モジュール分割に失敗してる可能性がきわめて高い。
100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。
シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を
欠いていて大規模プログラミングに向かないことは常に意識するべき。
2018/07/20(金) 16:50:00.03
仕事でならな。個人的なのでもそういう学習習得意欲がないんだったら馬の耳に念仏かと
2018/07/20(金) 20:11:37.10
ケンカはやめて(><)
2018/07/21(土) 02:15:31.20
二人をとめて \(^o^)/
2018/07/21(土) 02:44:08.71
私だ
2018/07/21(土) 09:20:03.54
あえて不向きなことをやるのは好きだよ
2018/07/21(土) 13:29:23.62
>>926
> 1000行以上にも及ぶ複雑なプログラム間連携処理を
> シェルスクリプトで書く状況ってのは
> モジュール分割に失敗してる可能性がきわめて高い。
だからシェルスクリプトでモジュール分割するんでしょ?
> 1000行以上にも及ぶ複雑なプログラム間連携処理を
> シェルスクリプトで書く状況ってのは
> モジュール分割に失敗してる可能性がきわめて高い。
だからシェルスクリプトでモジュール分割するんでしょ?
2018/07/21(土) 13:30:12.48
2018/07/21(土) 15:15:10.19
2018/07/21(土) 15:36:08.22
>>932
できてるならそんな話題になってないな
できてるならそんな話題になってないな
2018/07/21(土) 16:05:41.70
>>935
普通に . (source)を使用するだけだけど?
普通に . (source)を使用するだけだけど?
2018/07/21(土) 16:08:19.12
>>934
内部コマンドだけで処理できるなら
普通の言語のほうが良いよ
外部コマンドの連携に強いシェルスクリプトは
外部コマンドを呼び出すために使うもの
逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。
内部コマンドだけで処理できるなら
普通の言語のほうが良いよ
外部コマンドの連携に強いシェルスクリプトは
外部コマンドを呼び出すために使うもの
逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。
2018/07/21(土) 16:16:33.64
そろそろ板違い
2018/07/21(土) 16:30:52.91
2018/07/22(日) 19:37:39.33
>>934
includeやimportも禁止な
includeやimportも禁止な
941名無しさん@お腹いっぱい。
2018/07/22(日) 22:44:37.34 やっぱ次のスレからワッチョイ付きにしようね
2018/07/22(日) 23:49:40.49
>>939
だからモジュール分割は . で出来てるから話題になってないってことでしょ?
だからモジュール分割は . で出来てるから話題になってないってことでしょ?
2018/07/23(月) 01:44:04.51
この掲示板ってワッチョイないのでは…
というかidもなかった
というかidもなかった
2018/07/23(月) 01:57:54.18
使えないのかもしかして
2018/07/23(月) 02:50:48.89
掲示板ごとの設定だからね
2018/07/23(月) 03:47:58.52
じゃあもうこの板捨てるか?
Linux板にでも移動すりゃいいでしょ
Linux板にでも移動すりゃいいでしょ
2018/07/23(月) 04:20:40.19
ワンチャンある
最近精神年齢キッズが多すぎるしな
最近精神年齢キッズが多すぎるしな
2018/07/23(月) 11:29:23.13
test
2018/07/23(月) 11:56:50.52
false
2018/07/23(月) 20:31:02.18
>>946
OSの話じゃないから向こうでやってもいいかもね
OSの話じゃないから向こうでやってもいいかもね
2018/07/23(月) 20:36:06.85
あっ、でも向こうだと動かすOSがLInux前提になってしまうのか
2018/07/23(月) 21:56:56.76
プログラム板にすれば?
2018/07/23(月) 22:23:40.05
するならそっちだな
2018/07/23(月) 22:28:36.47
ム板に賛成する
2018/07/23(月) 22:46:21.28
ム板にしましょう
2018/07/23(月) 22:48:33.03
バッチ、パワシェのスレがム板にあるから不自然じゃないよね
2018/07/24(火) 01:25:43.39
賛成だ
しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな
しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな
2018/07/24(火) 01:37:47.14
俺も賛成だわ
2018/07/24(火) 01:43:21.92
まあUnixもそれだけ多くの人に知られてきたってことじゃない?
もちろんキチガイは不要だけども。
もちろんキチガイは不要だけども。
2018/07/24(火) 06:02:37.30
テンプレは同じでいいな
もし嫌ならそいつが新しいの考えろ
もし嫌ならそいつが新しいの考えろ
2018/07/24(火) 11:06:17.93
とりあえず立てました。
テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。
https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50
テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。
https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50
2018/07/24(火) 11:25:29.69
IDだけか?
ワッチョイいれるんじゃないのか
ワッチョイいれるんじゃないのか
963961
2018/07/24(火) 11:43:21.78 >>962
実はワッチョイを提案したのは俺なんだけど
あんまり賛同者がいないようだし
勝手にやるのもどうかなと思ったんだわ。
今はID板でやって
それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる
実はワッチョイを提案したのは俺なんだけど
あんまり賛同者がいないようだし
勝手にやるのもどうかなと思ったんだわ。
今はID板でやって
それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる
2018/07/24(火) 11:51:50.17
>>963
俺はワッチョイも含めて賛成してたけど、まぁそれでいいか
ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん、どうなんだろ
俺はワッチョイも含めて賛成してたけど、まぁそれでいいか
ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん、どうなんだろ
2018/07/24(火) 11:53:47.82
ヘタレすぐる
2018/07/24(火) 12:31:44.59
プログラム板移動とか計画通りすぎるwww
2018/07/24(火) 12:32:21.76
どうせならIPアドレス表示まですればいいのに
攻撃してやんよ
攻撃してやんよ
2018/07/24(火) 12:41:26.67
プログラム板という修羅の国に移動か
969961
2018/07/24(火) 12:54:08.96 プログラム板ってここと違って保守しなきゃいけないよね
誰かどのくらいで落ちるか分かる人います?
誰かどのくらいで落ちるか分かる人います?
2018/07/24(火) 12:54:54.13
20
2018/07/24(火) 12:55:43.39
あぁ時間か
どうだったっけな、さすがに覚えてない
20レスすれば当面落ちないとだけしか
どうだったっけな、さすがに覚えてない
20レスすれば当面落ちないとだけしか
2018/07/24(火) 13:29:33.13
先日lispスレ立てたけど、4レスのまま全然落ちる気配ないよ。
2018/07/24(火) 20:36:12.16
2018/07/25(水) 04:22:56.20
UNIX板伝統のシェルスクスレもム板行きかあ
UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな
UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな
2018/07/25(水) 15:06:43.63
シェルスクリプトはもはやUNIXだけのものじゃなくなったからなぁ。
クロスプラットフォームが当たり前になって、
OS別のマターというのもだいぶ限られてきたね。
クロスプラットフォームが当たり前になって、
OS別のマターというのもだいぶ限られてきたね。
2018/07/25(水) 16:55:26.81
UNIX板の中でシェルスクリプト総合スレが一番、というか唯一勢いがあるんだが、
これなくなると凄まじい限界集落になるな…
Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`)
これなくなると凄まじい限界集落になるな…
Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`)
2018/07/25(水) 18:05:53.09
せめてIDが出る板だったらよかったのにね…
2018/07/25(水) 18:31:00.38
まぁ言っても仕方ない
変わらない環境なんざないさ
変わらない環境なんざないさ
2018/07/25(水) 20:33:48.37
WindowsではWSLでシェルスクリプトが動く
だけどWSL環境なんだよなぁ
Windows標準でbusyboxとか採用してくれればいいのに
バッチファイルの代わりとして使えるんだが
だけどWSL環境なんだよなぁ
Windows標準でbusyboxとか採用してくれればいいのに
バッチファイルの代わりとして使えるんだが
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 事実上の減反政策を法定化へ 農水省方針 「需要に応じた生産」推進 [蚤の市★]
- 【独占直撃】「国分太一と縁は切れない」電動ママチャリで疾走する元TOKIOリーダー城島茂、ついに明かした31年間と沈黙の「本音」 [Ailuropoda melanoleuca★]
- フジテレビ F1地上波放送11年ぶり復活へ 26年シーズンから最大5戦 [征夷大将軍★]
- 【高知】小学校の教員採用、合格者の約6割が辞退 高知県教委、追加選考へ [七波羅探題★]
- 「超富裕層」への追加課税の対象拡大、現行の所得30億円の引き下げで調整 -1億円の壁」是正狙い [蚤の市★]
- 訪日外国人の医療費不払い 「1万円以上」で再入国拒否も 不公平感解消へ引き下げ [蚤の市★]
- 32歳で係長って優秀?
- 面倒くさくてぶち切れる
- 【高市悲報】 コメの増産表明から一転、減反に。小泉元農相wwwwww [566475398]
- 何で戦艦大和なんか作っちゃったの?
- 告白
- 仕事って退屈だよな
