14/11/11 00:54:03.43
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
URLリンク(src.opensolaris.org)
URLリンク(heirloom.sourceforge.net)
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その23
スレリンク(unix板)
2:名無しさん@お腹いっぱい。
14/11/11 01:00:47.57
乙です
3:テンプレ ◆01VkPKFOHeoR
14/11/11 03:40:09.81
ああ、次スレをいつ立てようかとタイミングを見ていたが
次スレ立ったか...
一応前スレでテンプレ書いた手前、書き込んでおきます
4:テンプレ ◆01VkPKFOHeoR
14/11/11 03:41:35.86
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
□A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
控えましょう。
□B. お約束の補足
1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
ls -l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
( 下記 F.3 参照 )
5:テンプレ ◆01VkPKFOHeoR
14/11/11 03:42:31.91
□C. 初心者へのアドバイス
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
URLリンク(www.speech-lab.org)
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
URLリンク(www.in-ulm.de)
□D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
find は -exec command {} + を推奨。
他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl
6:テンプレ ◆01VkPKFOHeoR
14/11/11 03:43:24.34
□E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
URLリンク(lagendra.s.kanazawa-u.ac.jp)
URLリンク(ayapin.film.s.dendai.ac.jp)
2. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
URLリンク(www.netfort.gr.jp)
3. UNIX FAQ LIST
URLリンク(www.nurs.or.jp)
□F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
URLリンク(www.gnu.org)
URLリンク(www.geocities.jp)
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
URLリンク(wiki.bash-hackers.org)
c. How to make bash scripts work in dash 英文
URLリンク(mywiki.wooledge.org)
d. DashAsBinSh 英文
URLリンク(wiki.ubuntu.com)
e. Portable Shell Programming 英文
URLリンク(www.in-ulm.de)
7:テンプレ ◆01VkPKFOHeoR
14/11/11 03:44:12.46
2. POSIX
The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
URLリンク(pubs.opengroup.org)
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
URLリンク(www.in-ulm.de)
b. BourneShell / Where does the Bourne shell live? 英文
URLリンク(mywiki.wooledge.org)
c. The Heirloom Bourne Shell 英文
URLリンク(heirloom.sourceforge.net)
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
URLリンク(pubs.opengroup.org)
b. FreeBSD 日本語マニュアル検索
URLリンク(www.jp.freebsd.org)
c. JM Project (Japanese)
URLリンク(linuxjm.sourceforge.jp)
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
URLリンク(x68000.q-e-d.net)
b. Linux JF (Japanese FAQ) Project
URLリンク(linuxjf.sourceforge.jp)
c. Advanced Bash-Scripting Guide 英文
URLリンク(www.tldp.org)
d. Unix Programming FAQ 日本語訳 ( 2000年 )
URLリンク(www.race.u-tokyo.ac.jp)
8:名無しさん@お腹いっぱい。
14/11/11 03:45:49.28
6. ツール
a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
URLリンク(www.shellcheck.net)
b. vim 用 syntastic
URLリンク(github.com)
c. checkbashisms も使用してチェック duggan/shlint GitHub
URLリンク(github.com)
□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
スレリンク(unix板)
2. 便利なシェルスクリプト見せろ
スレリンク(unix板)
3. シェルスクリプト総合 その1
スレリンク(unix板)
中略。検索して下さい
4. シェルスクリプト総合 その23
スレリンク(unix板)
9:テンプレ ◆01VkPKFOHeoR
14/11/11 03:46:48.40
□H. 関連スレ
1. sed
スレリンク(unix板)
2. 正規表現
スレリンク(unix板)
3. Regular Expression(正規表現) Part13
スレリンク(tech板)
4. Perlについての質問箱 63箱目
スレリンク(tech板)
5. ECMAScript デス 4
スレリンク(tech板)
6. Rubyについて Part49
スレリンク(tech板)
7. Pythonのお勉強 Part50
スレリンク(tech板)
8. 【node.js】サーバサイドjavascript 2【Rhino】
スレリンク(tech板)
□I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
10:テンプレ ◆01VkPKFOHeoR
14/11/11 03:47:27.08
□J. テンプレートの変更案や、おすすめの本、リンク等が有りましたら続けてどうぞ!
1. 検索しやすい様に、先頭に "コメント複数行\n指示\n□X" を付けて指定して下さい。
追加や、削除、挿入、移動、分割等と適切に書いて下さい。
900 レスまでに別の方の反論が無ければ、次にスレッドを立てる人が適当に判断して
取り込むはずです。
2. レス例
スクリプトスレを列挙するのは不要に感じる
削除
□H. 関連スレ
H.5から8 ECMAScript, Rubyについて, Pythonのお勉強, サーバサイドjavascript
3. レス例
これは、聖なる本
追加
□E. 学習用テキスト
4.お勧め図書
a 伝承シェルプログラミング ( 199X年 )
URLリンク(www.example.net)
| テンプレートの変更案や、お勧めのリンク、本等が有りましたら、
V あ、張り切って~、どうぞ~! 案じゃ無くてつぶやきでも、どうぞ~!
11:名無しさん@お腹いっぱい。
14/11/12 04:59:38.71
シャナスクリプトはまだですか?
12:名無しさん@お腹いっぱい。
14/11/12 07:18:57.54
シャロスクリプトもまだです
13:名無しさん@お腹いっぱい。
14/11/12 13:25:09.66
そういえば
コート脱いだらハワイのミポリソ萌えスクリプトが
サーバのどっかに転がってたかもなぁw
14:名無しさん@お腹いっぱい。
14/11/12 23:08:52.17
前スレで長テンプレを提案してた人スレ立ったらテンプレそのままでざまぁwww
とか思ってたらしっかり記載していたでござる
なんか文面の雰囲気変わったな、もっと堅い感じだった気がするが
15:名無しさん@お腹いっぱい。
14/11/13 07:09:24.77
>>14
変えてないけどなあ
意見聞く際になるべく中立、丁寧語で書いたから、そういう印象なのかな?
意見を聞いて了承を得てからという作業は面倒臭かったが
たとえ、その23 以前の短い1レスだけのテンプレのままを、立てる人がコピペするにしても
少なくとも Perl の矛盾した記述だけはなんとかしたい
シェルスクリプト総合 その1 からずっと最近までは
「(Rubyや)awkまたはperlの方が適した処理にはそちらを使いましょう。」だけだった
16:名無しさん@お腹いっぱい。
14/11/16 22:28:48.41
お勧めの shell を教えて下さい。
ずっと(22年ぐらい) 自宅や学校の FreeBSD上で tcsh を login shell として使ってきましたが、
このスレを読んで、 csh 系スクリプトはお勧めでないことを知りました。
root で作業するときには、 sh も必要なので使いますし、スクリプトも書くのですが
tcsh から sh系に移行できないでいます。
最近は仕事で数値計算をするときのプラットフォームが cygwin になってしまったため、
これを機に 自宅の FreeBSD でも、sh 系を login shell にするように切り替えようかとも思っています。
お勧めを教えて頂けませんでしょうか。
どうぞ宜しくお願い致します。
17:名無しさん@お腹いっぱい。
14/11/16 22:34:23.69
>>16 自己フォローです。
すみません。他に適切と思われるスレを見つけたので、移動します。
おまえら! shell は何を使っているんですか?
スレリンク(unix板)
お邪魔して申し訳ありませんでした。
18:名無しさん@お腹いっぱい。
14/11/17 00:19:12.19
お、おう
19:名無しさん@お腹いっぱい。
14/11/17 06:46:29.31
ログインシェルとスクリプトのシェルを一致させる必要は別にないのになぁ…
20:名無しさん@お腹いっぱい。
14/11/17 08:15:15.50
ログインシェルはzshでスクリプト書くときはbashかな
21:名無しさん@お腹いっぱい。
14/11/17 08:20:16.99
ログインシェルもスクリプトもashだ
22:名無しさん@お腹いっぱい。
14/11/17 08:52:41.49
Bシェル系同士なら一致させなくても良い
23:名無しさん@お腹いっぱい。
14/11/17 14:56:35.93
スクリプトは ash か dash
24:名無しさん@お腹いっぱい。
14/11/17 22:07:53.32
z750sh3
25:名無しさん@お腹いっぱい。
14/11/18 13:45:16.57
shで無駄にがんばる
いやなんとなく続けてるだけか
26:名無しさん@お腹いっぱい。
14/11/18 17:45:34.74
/bin/sh でがんばっているよ
実体が ash だったり
dash へのリンクだったりするだけでw
27:名無しさん@お腹いっぱい。
14/11/18 17:50:06.98
がんばるってほどのことかな
スクリプト書く労力は他のシェルでもあんま変わらんでしょ?
28:名無しさん@お腹いっぱい。
14/11/18 18:04:52.35
ん? ログインシェルを/bin/shで頑張るって話でしょ?
補完なし、ヒストリーなし、aliasなしで。
29:名無しさん@お腹いっぱい。
14/11/18 18:09:15.90
スクリプトスレだからスクリプト動かす話だよ
30:名無しさん@お腹いっぱい。
14/11/18 18:24:14.49
>>19 の、ログインシェルとスクリプトのシェルを一致させる必要があるかどうか
という話から来てるから、
ログインシェルの話だろ
31:名無しさん@お腹いっぱい。
14/11/19 20:36:46.43
emacsキーバインドのtcshでログインして、viでashスクリプト書いてるわ。