シェルスクリプト総合 その8
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2007/02/15(木) 14:28:44スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
前スレ
シェルスクリプト総合 その7
http://pc10.2ch.net/test/read.cgi/unix/1157601611/
0002名無しさん@お腹いっぱい。
2007/02/15(木) 14:32:25シェルスクリプト総合 その7
http://pc10.2ch.net/test/read.cgi/unix/1157601611/
シェルスクリプト総合 その6
http://pc10.2ch.net/test/read.cgi/unix/1143302182/
シェルスクリプト総合 その5
http://pc10.2ch.net/test/read.cgi/unix/1137801629/
シェルスクリプト総合 その4
http://pc10.2ch.net/test/read.cgi/unix/1131026501/
シェルスクリプト総合 その3
http://pc10.2ch.net/test/read.cgi/unix/1124889646/
シェルスクリプト総合 その2
http://pc10.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
http://pc10.2ch.net/test/read.cgi/unix/1101820646/
□関連スレ:
sed
http://pc10.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc10.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc10.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc10.2ch.net/test/read.cgi/unix/1102921590/
0003名無しさん@お腹いっぱい。
2007/02/15(木) 14:34:55「誰にでも」シリーズ
ttp://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/dareUni/
/bin/shプログラミング入門
ttp://freebooks.info.nara-k.ac.jp/archive/ShellProgramming/
シェルを使おう - 導入からプログラミングまで -
ttp://www.netfort.gr.jp/~tomokuni/lms/shell/text/
□入門者向け書籍:
プロフェショナルシェルプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756116329/
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
http://www.amazon.co.jp/exec/obidos/ASIN/4797321946/
UNIXシェルプログラミング徹底解説
http://www.amazon.co.jp/exec/obidos/ASIN/4822280489/
入門Kornシェル
http://www.amazon.co.jp/exec/obidos/ASIN/4873110149/
入門bash
http://www.amazon.co.jp/exec/obidos/ASIN/4900900788/
□参考リンク:
UNIXの部屋 (沢山のコマンドの簡単な紹介など)
http://x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
http://www.opengroup.org/onlinepubs/009695399/utilities/contents.html
0004名無しさん@お腹いっぱい。
2007/02/15(木) 14:35:28(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
http://amazon.co.jp/o/ASIN/4797326522/
(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
http://amazon.co.jp/o/ASIN/4798008842/
(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
http://amazon.co.jp/o/ASIN/4822282090/
(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/
(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
http://amazon.co.jp/o/ASIN/4774122610/
(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特別 (著)
http://amazon.co.jp/o/ASIN/4872802349/
(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
http://amazon.co.jp/o/ASIN/4797330635/
(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
http://amazon.co.jp/o/ASIN/4774123625/
0005名無しさん@お腹いっぱい。
2007/02/15(木) 14:38:51(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
http://amazon.co.jp/o/ASIN/4797326522/
(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
http://amazon.co.jp/o/ASIN/4798008842/
(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
http://amazon.co.jp/o/ASIN/4822282090/
(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/
(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
http://amazon.co.jp/o/ASIN/4774122610/
(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特別 (著)
http://amazon.co.jp/o/ASIN/4872802349/
(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
http://amazon.co.jp/o/ASIN/4797330635/
(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
http://amazon.co.jp/o/ASIN/4774123625/
0006名無しさん@お腹いっぱい。
2007/02/15(木) 14:42:04FreeBSD Hypertext Man Pages
http://www.freebsd.org/cgi/man.cgi
Linux JF (Japanese FAQ) Project.
http://www.linux.or.jp/JF/
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
UNIXプログラミング環境
http://www.amazon.co.jp/exec/obidos/ASIN/4871483517/
□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
使い方の質問などはスレ違いなので無用に願います。
□シェルスクリプトでよく使うコマンド:
制御・条件判定系: [,test,expr,true,false,yes,getopts
テキスト処理系: cat,awk,sed,tr,sort,uniq,grep,wc,head,tail,cut,paste,comm,join
ファイル検索系: find,xargs
(スペースなどを含むファイル名を正しく処理するため、
findは -print0、xargsは -0オプションを常に付けることを推奨
ただし、Solarisでは未対応。どうするんだろ?)
ディレクトリ系: basename,dirname
出力系: echo,printf
対話コマンド制御系: expect
http/ftpの処理自動化: wget,curl
0007名無しさん@お腹いっぱい。
2007/02/15(木) 15:50:29乙
0008名無しさん@お腹いっぱい。
2007/02/15(木) 16:34:150009名無しさん@お腹いっぱい。
2007/02/15(木) 16:35:58sleep 3
0010名無しさん@お腹いっぱい。
2007/02/15(木) 16:36:490011名無しさん@お腹いっぱい。
2007/02/15(木) 16:41:000013名無しさん@お腹いっぱい。
2007/02/15(木) 19:50:580014名無しさん@お腹いっぱい。
2007/02/15(木) 21:08:02乙
> □最近のシェルスクリプト本(1)
なんかダブってるけど、これの(2)ってのはあるの?
0015名無しさん@お腹いっぱい。
2007/02/15(木) 21:29:48!
ダブリは1のミス
(2)は(まだ)ない
0016名無しさん@お腹いっぱい。
2007/02/15(木) 22:41:49,r'´:.:.:.:.:.:.:.:`.、
,r'/:.:.:.:.:.:.:.:.、ヽ;,:.ヽ
l:.i:.:.i:Mヽヽl:.:i:ヽ;,;,;l
!:l:i.:トl レレVレ!:.:!-、!
ヽトl:f_! '´i_,トl:.:.!_,ノ シエルスクリプトって
l.ヽ '__, l.:.:!/ なんですか?
l:.:| `iー‐'´l:.;!`!
/!;!´ヽ,! -l;!´`ヽ、
,r'´! 人 ,r''ヽ
!::;;l /:::;ヽ ,r';;;r':::ヽ
l:;;/´:::::::::::::;ヽ,r';;/;;:::::::::ヽ
.l;;i:::::::::::::::::::::::::;;;;;;ヽ;::::::::::ヽ
0017名無しさん@お腹いっぱい。
2007/02/15(木) 22:47:320018名無しさん@お腹いっぱい。
2007/02/15(木) 22:54:41私のマシンにはシェルがインストールされていないようです
(メニューにそれらしいものがない)
シェルを追加インストールするには、どこをクイックすればいいですか?
OSはKDE3.5です。
0019名無しさん@お腹いっぱい。
2007/02/15(木) 23:02:42ttp://www.netmeister.org/misc/useless_use.pdf
0020名無しさん@お腹いっぱい。
2007/02/15(木) 23:08:35面白いから順に見たけどこれ長いよ!
0021名無しさん@お腹いっぱい。
2007/02/15(木) 23:09:380022名無しさん@お腹いっぱい。
2007/02/15(木) 23:11:51一応意図した動作をしているのですが、仕様を知らずに使っているため不安です。
この方法の仕様が説明されているサイト等を教えて頂けませんか?man で sh と ftp を見ましたが、該当の記述はありませんでした。
よろしくお願いします。
0023名無しさん@お腹いっぱい。
2007/02/15(木) 23:49:48シェルがないと起動プロセスがまともに進行しないので、
ないってことはあり得ない。
また、KDEはOSではなくて、デスクトップ環境の一種。
あなたが必要なのはKonsoleというKDEのアプリケーションと、
エディタ。
0024名無しさん@お腹いっぱい。
2007/02/15(木) 23:52:190025名無しさん@お腹いっぱい。
2007/02/16(金) 00:42:360026名無しさん@お腹いっぱい。
2007/02/16(金) 00:52:100027名無しさん@お腹いっぱい。
2007/02/16(金) 02:00:22ftp<<EOF
コマンド
EOF
じゃダメなの?
0028名無しさん@お腹いっぱい。
2007/02/16(金) 02:55:270029名無しさん@お腹いっぱい。
2007/02/16(金) 03:56:04catの無駄遣いも可愛いからいいじゃないか。
0030名無しさん@お腹いっぱい。
2007/02/16(金) 07:22:48sh$ set `ls`
sh$ echo "$1"
sh$ echo "$2"
:
bash$ hairetsu=(`ls`)
bash$ echo ${hairetsu[0]}
bash$ echo ${hairetsu[1]}
:
0031名無しさん@お腹いっぱい。
2007/02/16(金) 13:31:320032名無しさん@お腹いっぱい。
2007/02/16(金) 15:03:09cutもたまには使ってあげようと思った
0033名無しさん@お腹いっぱい。
2007/02/16(金) 15:58:550034名無しさん@お腹いっぱい。
2007/02/16(金) 17:25:280035名無しさん@お腹いっぱい。
2007/02/16(金) 20:24:12手っとり早いお勧めの方法は何ですか?
はっきり言って、理論的なことはどうでもいいです。
最小限の努力で、最大限、見ためだけ高スキルに見えればいいです。
よろしくお願いします。
0036名無しさん@お腹いっぱい。
2007/02/16(金) 20:24:38出来ますか?
0037名無しさん@お腹いっぱい。
2007/02/16(金) 20:26:07Yes.
0038名無しさん@お腹いっぱい。
2007/02/16(金) 20:43:20スクリプトは一日にして成らず、だ
だがあなたの要求だけを見ると高スキルのスクリプトを真似て作ればいいと思われ
問題は努力もしないで中身が理解できれば・・・だが
0039名無しさん@お腹いっぱい。
2007/02/16(金) 20:48:590040名無しさん@お腹いっぱい。
2007/02/16(金) 20:50:49英語でのコミニュケーション能力と、pythonとperlはいいのかい?
0041名無しさん@お腹いっぱい。
2007/02/16(金) 20:51:33つくればいいじゃん
0042名無しさん@お腹いっぱい。
2007/02/16(金) 20:52:54はい。そっちの方は無問題です。
0043名無しさん@お腹いっぱい。
2007/02/16(金) 20:53:380044名無しさん@お腹いっぱい。
2007/02/16(金) 21:01:02探せばあるかも。
0045名無しさん@お腹いっぱい。
2007/02/16(金) 21:07:28Looking For A Japanese Girlfriend
http://www.thinkgeek.com/tshirts/japanese/74a3/
で、
Go away or I will replace you with a very small shell script
http://www.thinkgeek.com/tshirts/frustrations/374d/
0046名無しさん@お腹いっぱい。
2007/02/17(土) 00:40:46鬼畜米英じゃなく鬼畜米兵になっとるw
http://www.thinkgeek.com/tshirts/japanese/74b1/
0047名無しさん@お腹いっぱい。
2007/02/17(土) 01:05:58複数の grep が一つにまとまるのがいい感じだな。
0048名無しさん@お腹いっぱい。
2007/02/17(土) 01:34:50if [ i = y ]
then
echo aaa
fi
とかあるのだが、実際やってもErrorがでて・・・
if [[ i = y ]]
then
echo aaa
fi
みたいに2重括弧にしないといけないのはなぜなんでしょうか?
0049名無しさん@お腹いっぱい。
2007/02/17(土) 01:35:53ksh で 文字コードで grep するエレガントな方法が分かりません。
bash なら、
grep $'\011' hoge.txt
で可能だということは分かっています。
ksh だと、
grep "`echo '\011\c'`" hoge.txt
で同じことが可能だということは分かっていますが、bash ほど簡潔ではありません。
(いずれも Linux 上で確認)
昔、Solaris 8 上の ksh スクリプトで bash での記述例くらいに簡潔に書かれたコードを見た記憶があるのですが…。
分かる方がいらっしゃったらご教授ください。お願いします。
できれば ksh88 でお願いします。
0050名無しさん@お腹いっぱい。
2007/02/17(土) 02:51:41[ はコマンドで、[[ は bash の構文の一つ。
/bin/sh で書くなら [[ は使えない。
あと、比較演算子の書き方やその解釈がちょっと違う。
[ 1 -gt 0 ] と [[ 1 > 0 ]] とか
[ "1+1" -ge 2 ] と [[ "1+1" >= 2 ]] とか
詳細は man bash ね。
0051名無しさん@お腹いっぱい。
2007/02/17(土) 10:33:59if [ i = y ]
then
echo aaa
fi
↑でエラー出ないよ。
もしエラーが出たんなら、[ や ] や = の前後のスペースを忘れたとか、
そういう問題だと思う。([ ]か [[ ]]かの問題とは違う)
[[ ]] は Bourneでは使えないので、できる限り [ ] で書くのがお勧め。
0052名無しさん@お腹いっぱい。
2007/02/17(土) 10:58:27名前にスペースの入ったファイル名のリストを for とか foreach に渡すときは
どうしたらいいでしょうか。
for f in `find なんたらこうたら`; do ほげ "$f"; done; みたいなことをしたいのですが
find の結果のファイル名にスペースがある場合、スペースのとこで割られるようです。
■ このスレッドは過去ログ倉庫に格納されています