シェルスクリプト総合 その5
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。
2006/01/21(土) 09:00:29スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。
□お約束
・特記なき場合はbourne shがデフォルトです。
bash/csh/tcsh/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashなので特に注意。
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0002名無しさん@お腹いっぱい。
2006/01/21(土) 09:01:45シェルスクリプト総合 その4
http://pc8.2ch.net/test/read.cgi/unix/1131026501/
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646/
シェルスクリプト総合 その2
http://pc8.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
http://pc8.2ch.net/test/read.cgi/unix/1101820646/
☆シェルスクリプトを勉強するにあたって☆
http://pc8.2ch.net/test/read.cgi/unix/989659936/
便利なシェルスクリプト見せろ
http://pc8.2ch.net/test/read.cgi/unix/996949546/
【貝】第1回シェル講座【殻】
http://fun.kz/test/read.cgi/unix/1016372780/
□関連スレ:
sed
http://pc8.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc8.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc8.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc8.2ch.net/test/read.cgi/unix/1102921590/
□他板の関連スレ:
【sed】シェルスクリプト総合@LINUX【awk】
http://pc8.2ch.net/test/read.cgi/linux/1121994321
【Shell】どのシェル使ってる?【Script】
http://pc8.2ch.net/test/read.cgi/linux/1067330754/
0003名無しさん@お腹いっぱい。
2006/01/21(土) 09:02:20「誰にでも」シリーズ
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/
0004名無しさん@お腹いっぱい。
2006/01/21(土) 09:03:03UNIXの部屋 (沢山のコマンドの簡単な紹介など)
http://x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
http://www.opengroup.org/onlinepubs/009695399/utilities/contents.html
□関連書籍と関連リンク:
FreeBSD 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/
□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
使い方の質問などはスレ違いなので無用に願います。
0005名無しさん@お腹いっぱい。
2006/01/21(土) 09:03:34制御・条件判定系:
[,test,expr,true,false,yes,getopts
テキスト処理系:
cat,awk,sed,tr,sort,uniq,grep,wc,head,tail,cut,paste,comm,join
ファイル名・ディレクトリ系:
find,xargs,basename,dirname
出力系:
echo,printf
対話コマンド制御系:
expect
http/ftpの処理自動化:
wget,curl
0006名無しさん@お腹いっぱい。
2006/01/21(土) 09:04:11Linux 推薦図書/必読書/推薦雑誌/推薦HP
http://pc8.2ch.net/test/read.cgi/linux/1065059126/545
よりコピペ
(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/
(2005/07) UNIX シェルスクリプト辞典 川井 義治 (著)
http://amazon.co.jp/o/ASIN/4798109231/
0007名無しさん@お腹いっぱい。
2006/01/21(土) 13:59:240008名無しさん@お腹いっぱい。
2006/01/21(土) 14:11:10糞スレ立てんなや
0009名無しさん@お腹いっぱい。
2006/01/21(土) 14:40:35糞スレにいちいち反応する
あんさんのほうが遥かに糞
0010名無しさん@お腹いっぱい。
2006/01/21(土) 14:56:45http://pc8.2ch.net/test/read.cgi/unix/1131026501/994
>sh -c は引数を1つしか取らないので"$@"は使えませんよ。使うなら"$*"
"$*" じゃ空白を含む引数がそのまま渡せません。問題を取り違えています。
前スレ 995
http://pc8.2ch.net/test/read.cgi/unix/1131026501/995
>sh -c 'foo "$@"' なんて日常茶飯事ですよ。
↑あなたも問題を取り違えています。
それでは "$@"には何も渡りません。
set ' hoge boke ' ' arya korya '
のように空白を含む引数がセットされていて、
これを "$@" で参照しつつ、
sh -c の形式で渡すのが非常に困難という話です。
0011994
2006/01/21(土) 15:01:06"$*"が使えないことは分かってる。
http://pc8.2ch.net/test/read.cgi/unix/1131026501/990
0012名無しさん@お腹いっぱい。
2006/01/21(土) 20:01:49つまりお前が一番糞ってこと?
0013名無しさん@お腹いっぱい。
2006/01/21(土) 22:07:49ねえぼく、レスとスレの区別は付けようね〜。
0014名無しさん@お腹いっぱい。
2006/01/21(土) 22:29:32ばっちり渡す方法は見つかったのか?
$ cat z
#!/bin/sh
echo 1:"$1"
$ ./z hello world
1:hello
$ ./z "hello world"
1:hello world
$ sh -c './z "hello world"'
1:hello world
$ set "hello world"
$ sh -c './z "$@"'
1:
$ sh -c "./z \"\$@\""
1:
なんつーか前スレの馬鹿は凄いね。
試してから投稿するって基本も出来ないアレ。
やってもないのに日常茶飯事とかいってさ。もうね。
001514
2006/01/21(土) 22:30:02$ sh -c "./z '""$@""'"
1:hello world
なんてやると出来たような気がするが、、、
実はこれだと$2以降がわたらない。
はっきりいって、渡す方法を見つけたら、
チューリング賞物じゃないかな?え?無理?
思い返すとperlの黎明期には、perlなら長年shでは不可能だった
これができるって宣伝を見た覚えがあるし、shじゃ無理ちゃうかな。
0016名無しさん@お腹いっぱい。
2006/01/21(土) 22:33:23無理ですね。
001715
2006/01/21(土) 22:43:30そんなに簡単に気って捨てるなよw
$ arg=""; while [ $# -gt 0 ]; do arg="$arg '$1'"; shift; done; sh -c "./z $arg"
で大丈夫ですよとかって帰ってくるの期待してたのに。
まあ、正直な意見としては面倒だからperlでいいじゃん。
0018名無しさん@お腹いっぱい。
2006/01/21(土) 22:45:28この場合はsh -c "..."を使わなければよい。
0019名無しさん@お腹いっぱい。
2006/01/21(土) 22:51:19惜しいが、それだと引数の中に
普通の文字としてシングルクォートがある場合にうまくいかない。
set " hoge isn't hage " " No, I don't. "
みたいな場合ね。
0020名無しさん@お腹いっぱい。
2006/01/21(土) 22:58:41とか。
0021名無しさん@お腹いっぱい。
2006/01/21(土) 22:59:51今思い付いたが、引数の"とか'とか怪しい文字を全部エスケープし
てしまえばいいのか。
0022名無しさん@お腹いっぱい。
2006/01/21(土) 23:03:43切り返したつもりなんだろうが、一番分かってないのはお前のようだぞw
#このスレは幼稚なやつがいぱ〜いだね。
0023名無しさん@お腹いっぱい。
2006/01/22(日) 02:55:30/home/user2/sample2.txtがオーナーroot、グループroot
このとき一発でsample1.txtのオーナー・グループを user1に、
sample2.txtのオーナー・グループをuser2にするシェル記述法を教えてもらえないでしょうか?
宜しくお願いしますm(_ _)m
0024名無しさん@お腹いっぱい。
2006/01/22(日) 03:18:47chown $id:$id $file # chown $id.$id $file
0026名無しさん@お腹いっぱい。
2006/01/22(日) 03:38:100027名無しさん@お腹いっぱい。
2006/01/22(日) 07:50:220028名無しさん@お腹いっぱい。
2006/01/22(日) 07:54:00コメント記号で本文からはずしてコメント化するってこと?
あるいはコメントしてあるところのコメントを除去して非コメント化すること?
0029名無しさん@お腹いっぱい。
2006/01/22(日) 09:01:110030名無しさん@お腹いっぱい。
2006/01/22(日) 12:49:30ときどき勘違いしている人がいるよね。
0031名無しさん@お腹いっぱい。
2006/01/22(日) 13:01:47一語で表す表現ってあったっけ? 餡こめんと?
0032名無しさん@お腹いっぱい。
2006/01/22(日) 13:02:300033名無しさん@お腹いっぱい。
2006/01/22(日) 13:11:03「行頭の # を削除」とか言った方がいい。
0034名無しさん@お腹いっぱい。
2006/01/22(日) 13:27:140036名無しさん@お腹いっぱい。
2006/01/22(日) 16:32:53日本だとセクシャルハラスメント
0037名無しさん@お腹いっぱい。
2006/01/22(日) 18:35:460038名無しさん@お腹いっぱい。
2006/01/24(火) 00:15:54どうやったらいいんでしょうか?
find . -mtime +7 -print | xargs rm
これだと、指定したフォルダの配下のフォルダも削除対象になっていまうので
指定したフォルダだけ検索するようにしたいのですがよい方法はありませんでしょうか?
0039名無しさん@お腹いっぱい。
2006/01/24(火) 00:17:360040名無しさん@お腹いっぱい。
2006/01/24(火) 00:22:43シェルスクリプトについて、もう少しルシェルシェ (recherche) しましょう
0041名無しさん@お腹いっぱい。
2006/01/24(火) 00:35:19ls > ls.out でそのフォルダのファイル一覧を出力して
エクセルで編集してコピペ実行。
0042名無しさん@お腹いっぱい。
2006/01/24(火) 01:33:23findに「-type f」を入れれ。
0043名無しさん@お腹いっぱい。
2006/01/24(火) 01:34:350044名無しさん@お腹いっぱい。
2006/01/24(火) 01:52:430045名無しさん@お腹いっぱい。
2006/01/24(火) 03:45:430046名無しさん@お腹いっぱい。
2006/01/24(火) 07:07:39突っ込みどころなのか?
昔のシステムに乗ってる find は -print 書かないと
何も出力しないんだが...
0047名無しさん@お腹いっぱい。
2006/01/24(火) 07:35:50いや勉強になりますな
0048名無しさん@お腹いっぱい。
2006/01/24(火) 07:42:41シェルってゆうな、クズ。
0049名無しさん@お腹いっぱい。
2006/01/24(火) 08:16:470050名無しさん@お腹いっぱい。
2006/01/24(火) 08:34:39The '#!'-magic, some details about the shebang mechanism on various Unix flavours
ttp://www.in-ulm.de/~mascheck/various/shebang/
0051名無しさん@お腹いっぱい。
2006/01/24(火) 09:07:30危険だから xragsは使うな。
意図しないファイルが削除されたりするぞ。
0052名無しさん@お腹いっぱい。
2006/01/24(火) 09:51:070053名無しさん@お腹いっぱい。
2006/01/24(火) 13:34:27xargsで意図しないファイルが消されるのって、ファイル名の問題以外は、
-execでも同様な気がするんだけど、違うの?
0054名無しさん@お腹いっぱい。
2006/01/24(火) 14:19:13>ファイル名の問題以外は、
重要な問題を「以外」で片付けるなよ。
0055名無しさん@お腹いっぱい。
2006/01/24(火) 14:43:170056名無しさん@お腹いっぱい。
2006/01/24(火) 15:11:38というか、意図しないファイルが削除されたりしない!
0057名無しさん@お腹いっぱい。
2006/01/24(火) 15:33:14xargsには、スペース、シングルクォート、ダブルクォート、改行などを含む
ファイル名を正しく処理できないという仕様バグがあります。
(例: 「I'm a girl.mp3」などというファイル名はイマドキ結構ある)
これを回避する唯一の方法は、findの -print0オプションと xragsの-0オプションを
組み合わせて使用することです。しかし、Solarisのfind/xargsには
これらのオプションがないため、移植性重視のシェルスクリプトでは結局、
xargsを使用しないのが懸命です。
0058名無しさん@お腹いっぱい。
2006/01/24(火) 16:28:43+ これらは GNU coreutils の拡張オプションであるため、
じゃね?GNU 以外で -print0, -0 のある実装ってあるの?
0059名無しさん@お腹いっぱい。
2006/01/24(火) 16:34:22必死だなw
0060名無しさん@お腹いっぱい。
2006/01/24(火) 16:36:45HPUXに -0 ってついてますか?
0061名無しさん@お腹いっぱい。
2006/01/24(火) 17:51:25それが唯一の方法は言い過ぎだろう。
-execを使うという手もある。xargsの出番はなくなるけど。
0062名無しさん@お腹いっぱい。
2006/01/24(火) 18:06:21GNU coreutilsじゃなくて GNU findutils。
あと、FreeBSDの find xargsは GNUではないけど -print0 -0 が使える。
0063名無しさん@お腹いっぱい。
2006/01/24(火) 18:39:18それがなければxargs使わないけど。
0064名無しさん@お腹いっぱい。
2006/01/24(火) 18:44:59検索結果のリストを編集汁る。
0065名無しさん@お腹いっぱい。
2006/01/24(火) 19:32:28> Solarisのfind/xargsにはこれらのオプションがないため、
あります。
0066名無しさん@お腹いっぱい。
2006/01/24(火) 19:37:27テンプレ?
0067名無しさん@お腹いっぱい。
2006/01/24(火) 21:12:37それいつから?
すくなくとも, 現場で稼働してる
% uname -a
SunOS ns11 5.9 Generic_112233-06 sun4u sparc SUNW,UltraAX-i2
な, マシンでは使えないんだが...
0068名無しさん@お腹いっぱい。
2006/01/24(火) 21:41:24なんてオプション?
0069名無しさん@お腹いっぱい。
2006/01/24(火) 21:58:07Solaris 10でも無いよ。嘘はイカンよ。
0070名無しさん@お腹いっぱい。
2006/01/25(水) 02:40:570071名無しさん@お腹いっぱい。
2006/01/25(水) 12:27:16tar Ozxf hoge.tgz | grep arekore
とかやってもどのファイルにあったか分からないんで困ってます。
そりゃファイルを展開すればいいけど、また削除するのが面倒です。
tarのオプション`O'はファイルを作らないでSTDINに出してくれるので
これとシェルスクリプトの何か使ってファイル名と行数を出してくれる
ようなことできないでしょうか。
0072名無しさん@お腹いっぱい。
2006/01/25(水) 12:34:200073名無しさん@お腹いっぱい。
2006/01/25(水) 12:42:53tar Ozxvf hoge.tgz 2>&1 |
だと、ファイル名も出てくるから、何とか加工できるかもしれんが、
はげしくtarの実装に依存しそう
0074名無しさん@お腹いっぱい。
2006/01/25(水) 12:44:37tar Ovzxf hoge.tgz 2>&1 | egrep '^hoge-1.0/|arekore'
くらいで我慢して貰えないか?
perlならArchive::Tar使ってなんとでもなるけども。
0075名無しさん@お腹いっぱい。
2006/01/25(水) 23:00:20ご返答ありがとうございます。今、帰りますた。
で、実はcygwinでやってまして、まず、以下の環境で>>74さんの
でやってみたのですが、何にも出てこなかったっす。
~$ tar --version
tar (GNU tar) 1.15.1
~$ egrep --version
egrep (GNU grep) 2.5.1
でもって>>72さんのでやればいいことに気づきました。ってか、
それは気づいていたんですけどやりたくなかったんですが…
0076名無しさん@お腹いっぱい。
2006/01/27(金) 00:49:240077名無しさん@お腹いっぱい。
2006/01/27(金) 19:29:46と書いた場合の挙動ってどのシェルも同じ?
0078名無しさん@お腹いっぱい。
2006/01/27(金) 19:53:020079名無しさん@お腹いっぱい。
2006/01/27(金) 20:11:06どのシェルも同じ。
>>78
すべて実行されるわけないだろ。
0080名無しさん@お腹いっぱい。
2006/01/27(金) 21:24:44command2 が偽を返したらすべて実行されるんじゃないか?
>>77
どのシェルも同じかどうかはシェルを特定しないと答えようがないな
変な仕様の独自シェルだってありえるし
0081名無しさん@お腹いっぱい。
2006/01/27(金) 21:34:04□お約束
・特記なき場合はbourne shがデフォルトです。
「無条件ですべて実行される」わけないだろ。
0082名無しさん@お腹いっぱい。
2006/01/27(金) 21:50:02という質問にそれはないだろ。
0083名無しさん@お腹いっぱい。
2006/01/27(金) 22:16:00を見るのか、command2 の結果を見るのか、っていうのがシェルごとに違うか?
っていう質問ならば「違わない」。
0084名無しさん@お腹いっぱい。
2006/01/27(金) 22:42:33|| がcommand1の結果を見るのは実験してわかったのですが、manual を読んで
もきちんと書かれていないように見えます。私の読みかたが甘いのでしょう
か?
0085名無しさん@お腹いっぱい。
2006/01/27(金) 22:44:290086名無しさん@お腹いっぱい。
2006/01/27(金) 22:48:25右項を評価するかどうかは、左項の値による。
Cとおんなじ。
0087名無しさん@お腹いっぱい。
2006/01/27(金) 22:51:330088名無しさん@お腹いっぱい。
2006/01/27(金) 23:07:32$ ./success.sh && ./success.sh || echo failure
$ ./success.sh && ./failure.sh || echo failure
failure
$ ./failure.sh && ./success.sh || echo failure
failure
>84
論理演算って知ってる?0 && 1も1 && 0も0だろ。
command1が失敗したらcommand2なんか実行しないんだよ。
0089名無しさん@お腹いっぱい。
2006/01/27(金) 23:09:55いや、command2 が実行されないのは不思議ではないです。
command3 が command1 の $? を見るのがどこに書かれているのかなぁと。。
0090名無しさん@お腹いっぱい。
2006/01/27(金) 23:23:07> command1 && command2 || command3
は、
(command1 && command2) || command3
と同じ。man shの"優先順位"も見れ!
0091名無しさん@お腹いっぱい。
2006/01/27(金) 23:24:13そしたらcommand1の結果を見るしかないじゃんw
88の例でも、success && success || echo failureなら何もでてないわけで、
command1とcommand2の両方の結果をちゃんと見てるジャン。
実行されないのは不思議ではないとか口ではいっときながら理解してないYo!
0092名無しさん@お腹いっぱい。
2006/01/27(金) 23:36:28(゚Д゚)ハァ?哲哉してて頭おかしかったようです。。
0093名無しさん@お腹いっぱい。
2006/01/27(金) 23:45:30>command1が失敗したらcommand2なんか実行しないんだよ。
x が偽ならば y に関係なく x && y が偽なのは事実だが、
y を評価せずに済ませるかどうかは論理演算とはまったく何の関係もない。
sh を含めほとんどの言語がそう実装されているだけ。
0094名無しさん@お腹いっぱい。
2006/01/27(金) 23:54:16違います。仕様です。
A && Bは、
if A; then B; fiと同じです。
0095名無しさん@お腹いっぱい。
2006/01/27(金) 23:58:120096名無しさん@お腹いっぱい。
2006/01/27(金) 23:59:320097名無しさん@お腹いっぱい。
2006/01/28(土) 00:00:55(だからshでは最適化してて)command1が失敗したらcommand2なんか実行しないんだよ。
だったらいいんじゃね?重箱の隅つまんね。
0098名無しさん@お腹いっぱい。
2006/01/28(土) 00:05:18>(だからshでは最適化してて)command1が失敗したらcommand2なんか実行しないんだよ。
このカッコの中を省略するのを指摘するのが重箱の隅だというのは
無理がありすぎるだろ。
0099名無しさん@お腹いっぱい。
2006/01/28(土) 00:07:000100名無しさん@お腹いっぱい。
2006/01/28(土) 00:09:080101名無しさん@お腹いっぱい。
2006/01/28(土) 00:12:280102名無しさん@お腹いっぱい。
2006/01/28(土) 00:31:51http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=sh&dir=jpman-5.4.0%2Fman§=0 の
短絡リスト演算子 (Short-Circuit List Operators) を読んでくるように。
0103名無しさん@お腹いっぱい。
2006/01/28(土) 01:16:46そういうお前にはサイエンス社版クヌース4冊の演習問題を宿題として与える
0104名無しさん@お腹いっぱい。
2006/01/28(土) 01:38:110105名無しさん@お腹いっぱい。
2006/01/28(土) 02:12:250106名無しさん@お腹いっぱい。
2006/01/28(土) 12:30:10だと、余分なサブシェルが起動されるから無駄。
command1や2でシェル変数を操作してたら反映されないというバグを生じるし。
{ command1 && command2; } || command3
と、グルーピングにするべき。
もちろん、&&の方が優先順位が高いから、
command1 && command2 || command3
と書いても同じことだけど。
0107名無しさん@お腹いっぱい。
2006/01/28(土) 12:35:310108名無しさん@お腹いっぱい。
2006/01/28(土) 12:38:08> もちろん、&&の方が優先順位が高いから、
そういう問題なん?
0109名無しさん@お腹いっぱい。
2006/01/28(土) 12:48:330110名無しさん@お腹いっぱい。
2006/01/28(土) 13:23:52同じ優先順位だから左側の演算子(&&)の方が優先順位が高いという意味だろ。
あげ足ばっかだな。
0111名無しさん@お腹いっぱい。
2006/01/28(土) 13:32:29それは優先順位が高いと言わない。
「左に結合する」などが適切な表現。
優先順位は別の概念。
0112名無しさん@お腹いっぱい。
2006/01/28(土) 13:38:560113名無しさん@お腹いっぱい。
2006/01/28(土) 14:08:440114名無しさん@お腹いっぱい。
2006/01/28(土) 15:27:48ノシ
0115名無しさん@お腹いっぱい。
2006/01/28(土) 15:57:44shellでも、commandじゃなくて算術式の中なら、
&& の方が || より優先順位が高い。
例: (( 1 || 3 && 0 )) の結果は真になる。
0116名無しさん@お腹いっぱい。
2006/01/28(土) 17:27:50その例だと. 同一優先順/左結合でも,
1 が真で 3 && 0 を評価しないので
やはり真になるんだが...
0117名無しさん@お腹いっぱい。
2006/01/28(土) 17:31:48$ echo $(( (1 || 3) && 0 ))
0
でしょ。
$ echo $(( 1 || (3 && 0) ))
1
$ echo $(( 1 || 3 && 0 ))
1
0118名無しさん@お腹いっぱい。
2006/01/28(土) 17:32:51違います。
仮に同一優先順位左から結合だとすると、
((1 || 3)) が真で、そのあと((1 && 0))が評価されるから偽になる。
0119名無しさん@お腹いっぱい。
2006/01/28(土) 17:33:180120名無しさん@お腹いっぱい。
2006/01/28(土) 17:35:10>>116 は間違い。
>>117 >>118 が正解。
0121名無しさん@お腹いっぱい。
2006/01/28(土) 17:36:55算術式の場合は 0が偽になるというのも混乱の元だなぁ。
0122名無しさん@お腹いっぱい。
2006/01/28(土) 17:53:510といえば0だけど、シェルの if や while が見るのは終了コードなので
一緒にするのはよくないかと。
確かに紛らわしいんだけど
0123名無しさん@お腹いっぱい。
2006/01/28(土) 19:30:50「終了値が0かそれ以外か」とは考えなくて、
「コマンドが成功するか失敗するか」と考えるから混乱することはない。
status=$? して後で利用する時くらいか。
0124名無しさん@お腹いっぱい。
2006/01/28(土) 19:55:200125名無しさん@お腹いっぱい。
2006/01/28(土) 20:04:21言われて気づいたが、不思議なことに全然混乱していない。
0126名無しさん@お腹いっぱい。
2006/01/28(土) 20:50:03「シェル関数」とわざわざ断っているのはどうして?
exitじゃなくてreturnの間違い?
$ function f () { return 0; }
$ if f; then echo yes; fi
yes
だからね。
それともサブ・シェルでのexitのこと?
0127名無しさん@お腹いっぱい。
2006/01/28(土) 21:04:500128名無しさん@お腹いっぱい。
2006/01/29(日) 02:17:330129名無しさん@お腹いっぱい。
2006/01/30(月) 15:03:320130名無しさん@お腹いっぱい。
2006/01/30(月) 23:03:48for((i=0.1;i<1;i=i+0.1)){
echo $i
}
のような感じです。
0131名無しさん@お腹いっぱい。
2006/01/30(月) 23:07:490132名無しさん@お腹いっぱい。
2006/01/30(月) 23:07:59for文で小数使うな
0133名無しさん@お腹いっぱい。
2006/01/30(月) 23:13:14□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
0134名無しさん@お腹いっぱい。
2006/01/30(月) 23:16:050135名無しさん@お腹いっぱい。
2006/01/30(月) 23:18:050136名無しさん@お腹いっぱい。
2006/01/30(月) 23:18:40場合によっては bc 使う
$ for i in $(seq 10); do echo "$i/10.0" | bc -l; done
0137名無しさん@お腹いっぱい。
2006/01/31(火) 00:02:15seqは小数点使える奴が多いんじゃまいか
$ seq 0.1 0.1 1
0.1
(ry
0.8
0.9
それから、seq 9な。
0138名無しさん@お腹いっぱい。
2006/01/31(火) 00:02:59そう言うときは「漢」という字を使え
0139名無しさん@お腹いっぱい。
2006/02/01(水) 02:29:09シェルで良いんじゃないか?
0140名無しさん@お腹いっぱい。
2006/02/01(水) 02:50:13sedやawkも使わず、変数の展開だけでがんばれるようになったらな。
0141名無しさん@お腹いっぱい。
2006/02/01(水) 03:50:40>>130 はシェルスクリプトのつもりで言ってるかも試練が
この場合はむしろシェルの方が正しいだろ
0142名無しさん@お腹いっぱい。
2006/02/01(水) 06:08:560143名無しさん@お腹いっぱい。
2006/02/01(水) 08:05:31○ シェルスクリプトで〜〜する
× シェルを書く
○ シェルスクリプトを書く
0144名無しさん@お腹いっぱい。
2006/02/01(水) 08:24:37× 〜というシェルが動かない
0145名無しさん@お腹いっぱい。
2006/02/01(水) 11:37:12> × シェルを書く
だからぁ...
% vi lex.l
% vi parse.y
% vi main.c
...
% vi Makefile
% make
てな作業の事なので無問題
>>144
> × 〜というシェルが動かない
"〜" が sh とか bash とか csh とか tcsh とか zsh とか scsh とか...
だったら無問題
0146名無しさん@お腹いっぱい。
2006/02/01(水) 11:44:17そんなんできるやつには○とか×とか言わんよ。
0147名無しさん@お腹いっぱい。
2006/02/01(水) 12:07:190148名無しさん@お腹いっぱい。
2006/02/01(水) 12:43:26まあ、プロンプト % で書く香具師は、何言っても説得力が無いわな。
0149名無しさん@お腹いっぱい。
2006/02/01(水) 22:48:40プロンプトが常に # の奴もちょっと嫌だな。w
0150名無しさん@お腹いっぱい。
2006/02/01(水) 23:15:190151名無しさん@お腹いっぱい。
2006/02/01(水) 23:30:140152名無しさん@お腹いっぱい。
2006/02/01(水) 23:36:250153名無しさん@お腹いっぱい。
2006/02/02(木) 00:27:250154名無しさん@お腹いっぱい。
2006/02/02(木) 01:09:25# はコメントみたいだし、$ は変数と紛らわしい
0155名無しさん@お腹いっぱい。
2006/02/02(木) 04:09:380156名無しさん@お腹いっぱい。
2006/02/02(木) 04:43:510157名無しさん@お腹いっぱい。
2006/02/02(木) 06:00:560158名無しさん@お腹いっぱい。
2006/02/02(木) 09:01:45スーパーハッカーが集うスレッドはここですか?
0159名無しさん@お腹いっぱい。
2006/02/02(木) 09:59:110160名無しさん@お腹いっぱい。
2006/02/02(木) 10:05:140161名無しさん@お腹いっぱい。
2006/02/02(木) 11:29:17シェルを書くには結構な腕が必要なんじゃないか?
おれは、シェルスクリプトは書けてもシェルは書けん。
0162名無しさん@お腹いっぱい。
2006/02/02(木) 11:56:11システムプログラムの初歩なんで、
やればできるレベルだと思われ。
動かすだけなら結構簡単なので、
大学での演習レベル。
0163名無しさん@お腹いっぱい。
2006/02/02(木) 12:00:110164名無しさん@お腹いっぱい。
2006/02/02(木) 12:14:17パイプとか、サブシェルとか、ジョブコンとか、環境変数とか、
基本的とはいえかなりのシステムコールの利用経験と、パーザの知識がいるかと。
0165名無しさん@お腹いっぱい。
2006/02/02(木) 12:19:32これは簡単だろ。
> ジョブコンとか、
とCtrl-Cでシグナル喰った時のシェルの挙動辺りは
ちゃんとPOSIX規格その他を読んでないと難しいものがある。
少なくともマルチプラットーフォームは無理。
0166名無しさん@お腹いっぱい。
2006/02/02(木) 12:28:52Posix 互換でなきゃいけないのか?
scsh とか, ぜんぜん Posix 互換じゃないし interactive shell として使おうと
言う気すら起きないが, それでも shell だ.
0167名無しさん@お腹いっぱい。
2006/02/02(木) 18:26:02165はジョブコンを(ポータブルに)きちんと実装するのに知識が必要だって
ことなんでは。
0168名無しさん@お腹いっぱい。
2006/02/02(木) 18:32:17元祖B-shにはないし、今時のシェルであっても
非対話モード(シェルスクリプト)で起動されれば
ジョブコンはdisableされるのが普通。
0169名無しさん@お腹いっぱい。
2006/02/02(木) 18:46:35ジョブコンゆうなぁ...
いまだに ジョブコン -> JCL とリダクションされる.
0170名無しさん@お腹いっぱい。
2006/02/02(木) 19:03:41csh, tcshって今でも非対話モードでもジョブコンenblaeされたままなのかな?
大昔、子プロセスにSIGSTOP送ったら、(もちろんkill(1)→killpg(2))
プロセスグループが別で、シェルに制御が戻って、
子プロセス異常終了で、スクリプトが止まったのはビビッた。
>>167
setsid()周辺は古いUNIXも含めると大変だよね。
Emacsにはその辺のレガシーなコードがまだ残っているが。
0171名無しさん@お腹いっぱい。
2006/02/02(木) 19:52:26ん?null?
0172名無しさん@お腹いっぱい。
2006/02/02(木) 20:18:48「リダクション」reduction:半減。例:ノイズリダクション
??はて??
0173名無しさん@お腹いっぱい。
2006/02/02(木) 20:33:370174名無しさん@お腹いっぱい。
2006/02/02(木) 21:56:420175名無しさん@お腹いっぱい。
2006/02/02(木) 22:01:460176名無しさん@お腹いっぱい。
2006/02/02(木) 22:20:08というか、「リダクション」じゃなく、
「リフレクション」と言いたかったのでは、とマジレス。
0177名無しさん@お腹いっぱい。
2006/02/02(木) 22:36:05ラムダ計算あたりでは、リダクションってのは、おおざっぱに言って
1/3 + 2/3 -> 1
のように, 複雑な表現から簡約された表現に置き換えることをさします。
おそらく >>169 の頭の中では、ジョブコンよりも JCL の方が簡約された
表現だったんだと思うんですけど…
ちゃうんかい >>169
0178名無しさん@お腹いっぱい。
2006/02/02(木) 22:44:280179名無しさん@お腹いっぱい。
2006/02/02(木) 22:47:01それは >>169 に聞いてくれ。おいらの知ったこっちゃない。
ってか、文字数から見ると十分リダクションしてると思う。
0180名無しさん@お腹いっぱい。
2006/02/02(木) 22:52:210181名無しさん@お腹いっぱい。
2006/02/02(木) 23:06:50あは…
そう言われるとそうだ。
0182名無しさん@お腹いっぱい。
2006/02/04(土) 11:35:02#!/usr/bin/ruby
require 'kconv'
puts 'あいうえお'.toutf8
以下の出力が異なるのはそーゆーもん? echo 使ったほうが化けちゃうみたい。
#!/bin/sh
./utfout.rb
echo `./utfout.rb`
sh は dash ってやつ(Debian版 の ash みたい、Debian でごめん)。
こんなときは bash 使うべきなんかね(bash なら化けなかった)。
0183名無しさん@お腹いっぱい。
2006/02/04(土) 11:58:50と勘で回答してみる。
0184名無しさん@お腹いっぱい。
2006/02/04(土) 12:11:140185名無しさん@お腹いっぱい。
2006/02/04(土) 12:24:22あーごめんなさい。どっちも試してたんだけど相変わらず化けたまんまっす。
ちなみに dash は echo は内部に持ってないみたいなのでどっちにしろ
/bin/sh を使ってるみたい。
0186名無しさん@お腹いっぱい。
2006/02/04(土) 15:06:52> /bin/sh を使ってるみたい。
なにその角度
0187名無しさん@お腹いっぱい。
2006/02/04(土) 17:04:37/bin/shを使う(ビルトインじゃないのは丸投げかよ)
でぶの考えは理解できんな。
0188名無しさん@お腹いっぱい。
2006/02/04(土) 17:11:31どっちにしろ
Debian$ dash -c 'echo `echo どっちにしろ | iconv -f euc-jp -t utf-8`' | iconv -f utf-8 -t euc-jp
どっちにしろ
0189名無しさん@お腹いっぱい。
2006/02/04(土) 17:59:06/bin/sh は /bin/echo の書き間違いね。失敬。
>>188
むむ。
% dash -c 'echo `echo どっちにしろ | iconv -f euc-jp -t utf-8`' | iconv -f utf-8 -t euc-jp
iconv: 位置 0 で不正な入力シーケンスがありました
手元の stable 環境だとこうなった。環境か dash の version 固有の話っぽい
ので犬板行ってみる。
0190名無しさん@お腹いっぱい。
2006/02/04(土) 23:02:430191名無しさん@お腹いっぱい。
2006/02/05(日) 11:14:410192名無しさん@お腹いっぱい。
2006/02/05(日) 11:24:27ttp://food6.2ch.net/test/read.cgi/pasta/
0193名無しさん@お腹いっぱい。
2006/02/05(日) 11:41:240194名無しさん@お腹いっぱい。
2006/02/05(日) 17:32:59Thanks
0195名無しさん@お腹いっぱい。
2006/02/06(月) 15:06:02んで任意の時間帯のみをgrepしたいのですが、
全然わかりません・・・
教えてください(*´Д`)
--------------------------------------------------
〜〜〜
XXXX 10:11 XXXXXX〜
XXXX 10:12 XXXXXX〜
XXXX 10:13 XXXXXX〜
XXXX 10:14 XXXXXX〜
XXXX 10:15 XXXXXX〜
〜〜〜
--------------------------------------------------
$xxx.sh 1012 1014
XXXX 10:12 XXXXXX〜
XXXX 10:13 XXXXXX〜
XXXX 10:14 XXXXXX〜
のような感じです。
0196名無しさん@お腹いっぱい。
2006/02/06(月) 15:13:47sed -n '/10:12/,/10:14/p' logfile
でいいじゃん。
ただし、終了時刻の行は最初の1行のみ出力になるので、
必要ならば終了時刻の1分後を指定すればいい。
0197名無しさん@お腹いっぱい。
2006/02/06(月) 15:22:33そか、sedか・・・
初心者ですいません。
さっそくやってみたところできました!
ありがとうございます(*´Д`)
0198名無しさん@お腹いっぱい。
2006/02/06(月) 15:39:48sed -e '/10:12/,/10:14/! d' logfile
なら終了時刻の調整不要。
0199名無しさん@お腹いっぱい。
2006/02/06(月) 15:48:35>>198 でも終了時刻の調整は必要。
0200名無しさん@お腹いっぱい。
2006/02/06(月) 15:56:20すまそ
0201名無しさん@お腹いっぱい。
2006/02/06(月) 18:07:02sed -n '/10:12/,/10:14/p; /10:14/p;' logfile |uniq
0202名無しさん@お腹いっぱい。
2006/02/06(月) 18:18:54簡単にやっつけたかったら、
sed -n '/ 10:1[234] /p;' logfile
が良いと思う。
日付もちゃんとみたいならunix timeに変換して大小比較するperl scriptで。
スレ違いなのでscriptは省略。他にはTime::Periodなど。
0203名無しさん@お腹いっぱい。
2006/02/06(月) 18:24:360204名無しさん@お腹いっぱい。
2006/02/06(月) 18:52:5210:12 から 12:03 だと >>203 や >>202 じゃできなくなるんだよな。
0205名無しさん@お腹いっぱい。
2006/02/06(月) 21:36:19道具は選ばないと。
0206名無しさん@お腹いっぱい。
2006/02/06(月) 21:52:030207名無しさん@お腹いっぱい。
2006/02/06(月) 22:00:39頭は使わないと。
0208名無しさん@お腹いっぱい。
2006/02/06(月) 22:02:380209名無しさん@お腹いっぱい。
2006/02/06(月) 22:04:27文脈(ry クマー
0210名無しさん@お腹いっぱい。
2006/02/06(月) 22:05:520211名無しさん@お腹いっぱい。
2006/02/07(火) 00:01:310212名無しさん@お腹いっぱい。
2006/02/07(火) 00:05:210213名無しさん@お腹いっぱい。
2006/02/07(火) 00:21:28b=`grep -n '12:03' logfile |sed -n '$ p' |cut -d ':' -f 1`
sed -n "$a, $b p" logfile
いまいち。
0214名無しさん@お腹いっぱい。
2006/02/07(火) 01:57:05でいいのかという話もある
0215名無しさん@お腹いっぱい。
2006/02/07(火) 02:37:14ruby -ane 'puts $_ if $F[1] >= "10:12" and $F[1] <= "12:03"' logfile
0216名無しさん@お腹いっぱい。
2006/02/07(火) 04:19:18スレタイ読めよ。
だから ruby 使いはキモいって言われるのに、自覚と学習能力がないらしいな。
0217名無しさん@お腹いっぱい。
2006/02/07(火) 04:46:480218名無しさん@お腹いっぱい。
2006/02/07(火) 06:19:05がいしゅつ
0219名無しさん@お腹いっぱい。
2006/02/07(火) 23:36:280220名無しさん@お腹いっぱい。
2006/02/08(水) 08:07:340221名無しさん@お腹いっぱい。
2006/02/08(水) 19:47:16#!/bin/sh
awk -f - logfile $1 $2 <<'EOS'
BEGIN { s = ARGV[2]; e = ARGV[3]; ARGC = 2; }
$2 > s && $2 < e { print; }
EOS
$ xxx.sh 10:10 10:15
0222名無しさん@お腹いっぱい。
2006/02/14(火) 00:09:370223名無しさん@お腹いっぱい。
2006/02/14(火) 07:28:36sleep: too few arguments
Try `sleep --help' for more information.
0224名無しさん@お腹いっぱい。
2006/02/14(火) 07:35:08GNU sleep うざい。
0225名無しさん@お腹いっぱい。
2006/02/14(火) 13:18:060226名無しさん@お腹いっぱい。
2006/02/14(火) 23:11:040227名無しさん@お腹いっぱい。
2006/02/15(水) 00:18:39usage: sleep seconds
0228名無しさん@お腹いっぱい。
2006/02/15(水) 00:25:070229名無しさん@お腹いっぱい。
2006/02/15(水) 00:27:000230名無しさん@お腹いっぱい。
2006/02/15(水) 00:46:070231名無しさん@お腹いっぱい。
2006/02/15(水) 09:28:310232名無しさん@お腹いっぱい。
2006/02/15(水) 13:19:16$ host fj.news.usage
Host fj.news.usage not found: 3(NXDOMAIN)
0233名無しさん@お腹いっぱい。
2006/02/17(金) 15:44:20{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
ヾ;;;ハ ノ .::!lリ;;r゙ シェルプログラミングはダサい…
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました
~''戈ヽ `二´ r'´:::.
0234名無しさん@お腹いっぱい。
2006/02/19(日) 20:42:230235名無しさん@お腹いっぱい。
2006/02/20(月) 11:37:550000:0000:0000:0000:0000:0000:0000:0001
に変換するシェルって、どこかにありますか?
簡単そうで結構大変なので、、、
0236名無しさん@お腹いっぱい。
2006/02/20(月) 11:41:000237名無しさん@お腹いっぱい。
2006/02/20(月) 12:43:370238名無しさん@お腹いっぱい。
2006/02/20(月) 12:58:56そんな変換は必要ないのがv6アドレスなので自分で作れ。
0239名無しさん@お腹いっぱい。
2006/02/20(月) 13:03:06シェルじゃないけど。
http://www.routemeister.net/projects/sipcalc/
0240名無しさん@お腹いっぱい。
2006/02/20(月) 13:16:29頭悪いのでperlでこんなのしか書けませんでした。
引数は stdin から与えてください。echo a:b:c:d::1 | これ とか。
#!/usr/bin/perl -n
chomp;
s/^::/0::/;
s/::$/::0/;
($s,$t) = /^(.*)::(.*)/;
$cs = split(':',$s) - 1;
$ct = split(':',$t) - 1;
$_ = $s . ':' x (7-$cs-$ct) . $t;
1 while s/::/:0:/g;
s/([0-9af-fA-F]{1,4})/000\1/g;
s/0*([0-9a-fA-F]{4})/\1/g;
print "$_\n\n";
0241名無しさん@お腹いっぱい。
2006/02/20(月) 13:19:28#!/usr/bin/perl -n
chomp;
s/^::/0::/;
s/::$/::0/;
($s,$t) = /^(.*)::(.*)/;
$cs = split(':',$s) - 1;
$ct = split(':',$t) - 1;
$_ = $s . ':' x (7-$cs-$ct) . $t;
1 while s/::/:0:/g;
s/([0-9a-fA-F]{1,4})/000\1/g;
s/0*([0-9a-fA-F]{4})/\1/g;
print "$_\n\n";
0242名無しさん@お腹いっぱい。
2006/02/20(月) 13:59:16なにこの顔。ふざけてるの?
0243名無しさん@お腹いっぱい。
2006/02/20(月) 14:12:10ば、いろんなところが顔に見えてきたorz
0244名無しさん@お腹いっぱい。
2006/02/20(月) 21:57:120245名無しさん@お腹いっぱい。
2006/02/20(月) 22:25:160のバイトを省略せずに、0000:0000:0000:0000:0000:0000:0000:0001
に変換するエッソって、どこかにありますか?
0246名無しさん@お腹いっぱい。
2006/02/20(月) 22:45:340247名無しさん@お腹いっぱい。
2006/02/20(月) 23:59:130248名無しさん@お腹いっぱい。
2006/02/21(火) 09:45:59新しいシェルでしょうか?
既存のシェルにはどれも不満な点があるので
試してみたいのですがググっても
それらしいものは見つかりませんでした
0249名無しさん@お腹いっぱい。
2006/02/21(火) 09:47:440250名無しさん@お腹いっぱい。
2006/02/21(火) 09:59:31ん〜なんか簡単にできそうでうまくいかないんですよね・・・
一応できるんですが、なんかいまいち強引になるので・・・
教えてください。
/home/usr/ini/hoge.ini
/home/usr/ini/log.ini
/home/usr/ini/foo/test.ini
/home/usr/ini/foo/bar.ini
こんなんだったら
/home/usr/ini/の直下のhoge.iniとlog.iniだけをフルパス取得したい。
ただし、/home/usr/ini/の直下に何もないときは何も返さない。
0251名無しさん@お腹いっぱい。
2006/02/21(火) 10:31:120252名無しさん@お腹いっぱい。
2006/02/21(火) 10:32:060253名無しさん@お腹いっぱい。
2006/02/21(火) 10:42:36それ最初に思いついたのですが、
ls: 0653-341 ファイル /home/usr/ini/*.ini が存在しません。
のようにファイルが存在しない場合実現できません。
>>252
それよくわからんのですが、今の環境じゃ使えなさそうです。
AIX 5.2
0254名無しさん@お腹いっぱい。
2006/02/21(火) 10:46:16ls /home/usr/ini/*.ini 2>/dev/null
0255名無しさん@お腹いっぱい。
2006/02/21(火) 10:49:04ls: asdf*wqerty: そのようなファイルやディレクトリはありません
$ bash -c 'shopt -s nullglob; echo asdf*wqerty'
$ bash -c 'shopt -u nullglob; echo asdf*wqerty'
asdf*wqerty
0256名無しさん@お腹いっぱい。
2006/02/21(火) 10:53:36なるほど。これがシンプルでいいですね。
>>255
ほぉこんなのがあるのですね。
参考にさせていただきます。
こんな質問に答えてくれたかたありがとうございました。
0257名無しさん@お腹いっぱい。
2006/02/21(火) 10:56:110258名無しさん@お腹いっぱい。
2006/02/21(火) 12:11:340259名無しさん@お腹いっぱい。
2006/02/21(火) 12:23:570260名無しさん@お腹いっぱい。
2006/02/21(火) 12:26:51depth の
ディレクトリ本体の前に、ディレクトリの内容を先に評価する。
意味がよくわからんのですが、教えてください。
これで>>250可能なんすか?
0261名無しさん@お腹いっぱい。
2006/02/21(火) 12:30:04-depthはdepth firest search。指定しないとbreadth first search。
0262名無しさん@お腹いっぱい。
2006/02/21(火) 13:19:090263名無しさん@お腹いっぱい。
2006/02/21(火) 16:26:10hostコマンドを使うとしても、CNAMEが絡んでいたりすると
その標準出力の書式が一定せず、かといってdigコマンドでは
無駄な情報が多過ぎて切り出しが大変です。
さらに、bindのバージョンによってもhostやdigの出力が微妙に違うようです。
もっと言うと、DNSに登録されていなくて、/etc/hostsにのみ存在するホスト名でも
IPアドレスに変換したいのですが、となると、host/digコマンドは使えません。
シェルでIPアドレスに変換するには、どうやるのが一般的ですか?
あ、シェルで無理なら、エネオスでもジョモでもいいです。
0264名無しさん@お腹いっぱい。
2006/02/21(火) 16:55:220265名無しさん@お腹いっぱい。
2006/02/21(火) 20:30:29… という冗談はさておき、本当はどうやるのが一般的でしょうか?
0266名無しさん@お腹いっぱい。
2006/02/21(火) 20:36:14でもホスト名−IPアドレスってのは一意に決まらんと思う。
DNSでロビンちゃんしてたらどうするの?
0267名無しさん@お腹いっぱい。
2006/02/21(火) 20:47:27だと、実際には2行目以降が出力されて初めてパイプが終了するため、
取得に1秒程度かかってしまいます。
さらに、hostが立ち上がっていなかったり、firewallでpingが閉じられていると
2行目が出力されないため、head -1 が終了しません。
タイムアウトまで待てば終了するでしょうが、これでは使いものになりません。
0268名無しさん@お腹いっぱい。
2006/02/21(火) 20:54:03ホストのダウン対策は -t 1
0269名無しさん@お腹いっぱい。
2006/02/21(火) 21:02:03これって標準コマンドじゃないのかな。
0270名無しさん@お腹いっぱい。
2006/02/21(火) 21:04:56とか。
ロビンちゃん問題もどうするのか書いてないしどーでもいいけどな。
0271名無しさん@お腹いっぱい。
2006/02/21(火) 22:43:240272名無しさん@お腹いっぱい。
2006/02/21(火) 23:06:070273名無しさん@お腹いっぱい。
2006/02/21(火) 23:44:240274名無しさん@お腹いっぱい。
2006/02/22(水) 00:20:340275名無しさん@お腹いっぱい。
2006/02/22(水) 00:21:410276名無しさん@お腹いっぱい。
2006/02/22(水) 00:56:53getentがどこにもあれば一番いいと思うけれど。
0277名無しさん@お腹いっぱい。
2006/02/22(水) 01:06:470278名無しさん@お腹いっぱい。
2006/02/22(水) 02:05:26Linux だけど、gethostipインストールされてないです。
ちなみに Debian 3.1 (sarge)。
0279名無しさん@お腹いっぱい。
2006/02/22(水) 02:08:370280名無しさん@お腹いっぱい。
2006/02/22(水) 02:19:08root じゃないので、インストールできません…
0281名無しさん@お腹いっぱい。
2006/02/22(水) 02:27:040282名無しさん@お腹いっぱい。
2006/02/22(水) 02:28:20$ getent hosts www.2ch.net
でええやろ
0283名無しさん@お腹いっぱい。
2006/02/22(水) 09:37:48俺はこんなの自作して使ってるが。
#!/bin/sh
echo -n "Enter lines to get: "
read lines
iplist=`ssh hoge@hogehoge.org tail -$lines /var/log/httpd/access_log
| cut -f1 -d¥ `
for ip in $iplist
do
ipout=`host $ip | grep pointer | awk '{print($5)}' |
grep -v NXDOMAIN | sed "s/.$//g"`
if test "$ipout" = ""
then
echo "$ip"
else
echo "$ipout"
fi
done
0284名無しさん@お腹いっぱい。
2006/02/22(水) 09:45:49host じゃ /etc/host 見ないっしょ。
0285名無しさん@お腹いっぱい。
2006/02/22(水) 10:54:43getent hosts いいですね。glibcの付属コマンドみたいですね。
ただ、getent hostsでは、ごくたまーに、IPv6が登録されてるホストだと、
IPv6だけが引けて、IPv4が(登録されてるのに)引けません。
gethostipだと、IPv6は無視してIPv4のみが引けます。
どうすればいいでしょうか?
0286名無しさん@お腹いっぱい。
2006/02/22(水) 11:06:21・/etc/hostsは優先かどうか?
・v4/v6は両方欲しいのか、片方だけか。
0287名無しさん@お腹いっぱい。
2006/02/22(水) 11:11:39IPv4だけが欲しい。なるべくOS非依存にしたい。です。
0288名無しさん@お腹いっぱい。
2006/02/22(水) 11:43:46バージョンによる差異が無視できるかどうかがポイントか。
RubyでもPythonでもいいんだけど、入ってないことも多いし。
0289名無しさん@お腹いっぱい。
2006/02/22(水) 11:55:210290名無しさん@お腹いっぱい。
2006/02/22(水) 12:04:320291名無しさん@お腹いっぱい。
2006/02/22(水) 12:46:20ロビンちゃん問題はどうするんだよ!!
0292名無しさん@お腹いっぱい。
2006/02/22(水) 13:02:160293名無しさん@お腹いっぱい。
2006/02/22(水) 13:07:290294名無しさん@お腹いっぱい。
2006/02/22(水) 13:08:030295名無しさん@お腹いっぱい。
2006/02/22(水) 18:14:50ソフトリンクのみリストアップするシェルって、どう書けばいいですか?
0296名無しさん@お腹いっぱい。
2006/02/22(水) 18:18:27英語に親しんでおけって。
あ、スクリプトじゃなくてシェルを作るのか。bisonやflexについて
調べるのかな。まあどうでもいいことだけど。
0297名無しさん@お腹いっぱい。
2006/02/22(水) 18:22:43find . -type s | while true; do read x; ls -L $x >/dev/null; done | awk '{ print $2 }' | sed 's/:$//'
0298名無しさん@お腹いっぱい。
2006/02/22(水) 18:23:13find . -type l
や、
find . -follow -type l
ではできないことを確認の上で聞いてます。
ちなみに、英語は得意です。
0299名無しさん@お腹いっぱい。
2006/02/22(水) 18:23:560300名無しさん@お腹いっぱい。
2006/02/22(水) 18:25:16-type s ってUNIXドメインソケットなんですが、、
それ違うでしょう。
あと、ファイル名に空白があると誤動作するんじゃ困ります。
0301名無しさん@お腹いっぱい。
2006/02/22(水) 18:31:500302名無しさん@お腹いっぱい。
2006/02/22(水) 18:42:08ある程度自分でも書いてみたんでしょ? 晒してみなよ。 勇気だしてさ。
0303名無しさん@お腹いっぱい。
2006/02/22(水) 18:55:06find . -type l -exec sh -c '[ -e "{}" ] || echo "{}"' ';'
0304名無しさん@お腹いっぱい。
2006/02/22(水) 18:57:31#! /bin/sh
ls -L "$1"
if [ $? -ne 0 ]; then
echo "$1"
fi
をxargsで-0 -n 1だな。
0305名無しさん@お腹いっぱい。
2006/02/22(水) 19:11:33「ここで質問する時は敢えて『シェルを書く』と言うと、回答の食いつきが良い」
急ぎで回答を得たい場合にもお勧め。
φメモメモ。
0306名無しさん@お腹いっぱい。
2006/02/22(水) 19:15:06使ってるのは何故だか、理解してる?
知らなくても問題ない。man xargsだ。
0307名無しさん@お腹いっぱい。
2006/02/22(水) 19:31:57ほのめかし厨さん
0308名無しさん@お腹いっぱい。
2006/02/22(水) 19:46:57-execがあるだろうとかそんなことでしょ。
けどエスケープやエクスパンジョンの泥沼にはまるくらいなら、
xargsはええと思うで。stdinからexecveまでshellを介さんから。
特に空白や日本語や特殊文字のパス名が多い昨今は。
0309295
2006/02/22(水) 19:48:22↓これで一発です。
for file in *; do [ -h "$file" -a ! -e "$file" ] && echo "$file"; done
findなどの外部コマンドは使いませんし、
スペース入りファイル名の問題もありません。
釣られて回答をくれた皆さん、釣りには気をつけましょう。
0310名無しさん@お腹いっぱい。
2006/02/22(水) 20:24:03ln -s /nonexistent .詰めが甘いな坊や
0311名無しさん@お腹いっぱい。
2006/02/22(水) 20:34:32どう詰めが甘いの?
ln -s /nonexistent . でも、期待通り動作するけど。
0312名無しさん@お腹いっぱい。
2006/02/22(水) 20:51:430313名無しさん@お腹いっぱい。
2006/02/22(水) 21:01:00なんだそんなことか。
.で始まるファイルはここでは問題になってないので、、、
必要なら for file in * .* にすればいいだけだし。
0314名無しさん@お腹いっぱい。
2006/02/22(水) 21:03:30仕様後付けで「期待通り」なんて言っているから坊やなんだよ。
0315名無しさん@お腹いっぱい。
2006/02/22(水) 21:10:01メインであって、それ以外の部分は参考でしかない。(仕様のあと付けではない)
>>310 みたいな突っ込みは本筋以外の部分に突っ込んでるので、
突っ込みとしても、釣りとしても面白くない、詰まり詰めが甘い。
0316名無しさん@お腹いっぱい。
2006/02/22(水) 21:15:530317名無しさん@お腹いっぱい。
2006/02/22(水) 21:19:510318名無しさん@お腹いっぱい。
2006/02/22(水) 21:27:23今度はどんなシェルを書きたいのですか?
0319名無しさん@お腹いっぱい。
2006/02/22(水) 21:32:38引っ掛け問題なので、それ以外の部分は障害物でしかない。(仕様のあと付けではない)
0320名無しさん@お腹いっぱい。
2006/02/22(水) 21:38:200321名無しさん@お腹いっぱい。
2006/02/22(水) 22:20:27それとも、犬の馬鹿が乱入して吠えてるというのは僕の妄想であって、
本当はUNIX板の住人がこうして基地外みたいに吠えてるのでしょうか?
0322名無しさん@お腹いっぱい。
2006/02/22(水) 22:34:340323名無しさん@お腹いっぱい。
2006/02/22(水) 22:42:150324名無しさん@お腹いっぱい。
2006/02/23(木) 00:04:24このスレの馬鹿は半分しか減らないよ。
0325名無しさん@お腹いっぱい。
2006/02/23(木) 00:09:18すぐに犬糞とか言い出すヤツ。何なのアレ?
0326名無しさん@お腹いっぱい。
2006/02/23(木) 00:12:380327あい
2006/02/23(木) 20:28:26それとAIXのdateコマンドを使用して二ヶ月前の日付を取得できないでしょうか?
0328名無しさん@お腹いっぱい。
2006/02/23(木) 20:51:38find で -ctime とか -mtime 指定したんじゃまずいのか?
0329名無しさん@お腹いっぱい。
2006/02/23(木) 21:28:292ヶ月前の日付は、TZいじって、
TZ=JST+1431 date でできない?
できなきゃあきらめて GNU dateを入れて date -d '2 months ago'
0330名無しさん@お腹いっぱい。
2006/02/24(金) 09:26:45getentコマンドはSolarisにもあるよ。他のOSでは未確認だけど、
OS依存性を小さくしたいのならgetentでいいんじゃない?
IPv6を設定しているような変態ホストは無視しても問題なし。
0331名無しさん@お腹いっぱい。
2006/02/24(金) 09:47:362 host -t aで引く(IPv4オンリー、ラウンドロビン)
1がIPv6なら、2のみ
それ以外、1と2をmerge&uniq
ってスレ違いじゃねえ?
0332名無しさん@お腹いっぱい。
2006/02/25(土) 00:40:49OpenSSLの自己証明書を作成するときなど
自己証明の入力を促されますが
シェルスクリプトで自動で入力するようにしたいです。
どうやったらできるでしょうか?
ご教授よろしくお願いします。
0333名無しさん@お腹いっぱい。
2006/02/25(土) 00:56:49expectスクリプトだな。
0334名無しさん@お腹いっぱい。
2006/02/25(土) 01:00:37> 自己証明の入力を促されますが
何言ってんだか分からないが、引数で渡せないのか?
それともバカチョンスクリプト、CA使ってんの? 自分でやれ
0336名無しさん@お腹いっぱい。
2006/02/25(土) 01:18:550337名無しさん@お腹いっぱい。
2006/02/25(土) 01:40:37Ctrl-C Ctrl-V
0338332
2006/02/25(土) 01:53:50expect勉強して、testuserのパスワード変更スクリプト作ったのですがうまくいきません。
#!/bin/sh
USER=testuser
PASSWD=testpass
expect -c "
set timeout 20
spawn passwd $USER
expect \"New UNIX password:\"
send \"$PASSWD\r\"
expect \"Retype new UNIX password:\"
send \"$PASSWD\r\"
"
これを実行すると何もエラーなく終了するのに
パスワードは変わってません。
どこか間違ってるでしょうか?
よろしくお願いします。
0339名無しさん@お腹いっぱい。
2006/02/25(土) 02:07:230340名無しさん@お腹いっぱい。
2006/02/25(土) 02:17:33>>337は実行したのか?
0341名無しさん@お腹いっぱい。
2006/02/25(土) 08:35:39「強制終了」と、「コントロールコード1字入力」が、
この文脈で何か関係あるのか?
0342名無しさん@お腹いっぱい。
2006/02/25(土) 09:43:130343332
2006/02/25(土) 10:23:13expect -c "
set timeout 20
spawn passwd testuser
expect "*password*"
send "test"
expect "*password*"
send "test"
"
expect使ったことないのでよくわからないのですが、こんな感じですよね?
でもこれ実行してもパスワード変わってないのです。
どなたか、ご教授よろしくお願いします。
0344名無しさん@お腹いっぱい。
2006/02/25(土) 10:43:490345名無しさん@お腹いっぱい。
2006/02/25(土) 23:26:59user $
みたいに&付ければ作ったスクリプトを常駐できるのですが、
&なしで
user $ test.sh
user $
のように&なしで常駐するようなスクリプトはどう書けばいいのですか?
0346名無しさん@お腹いっぱい。
2006/02/25(土) 23:32:04スクリプトの中で & を付けてコマンドを起動すればいいだけ。
コマンドが複数ある場合は、( ) で囲って最後に &
↓みたいな感じ
(
command1
command2
:
:
) &
0347名無しさん@お腹いっぱい。
2006/02/25(土) 23:43:53素早い解答ありがとうございます。
0348名無しさん@お腹いっぱい。
2006/02/26(日) 10:50:210349名無しさん@お腹いっぱい。
2006/02/26(日) 12:33:090350名無しさん@お腹いっぱい。
2006/02/26(日) 12:37:53常駐=daemonという意味なら、むしろわざわざfork()して、
その親が先にexit()するというお決まりのプロセスを踏むのが普通。
ttyやプロセスグループを切り離すためにね。
0351名無しさん@お腹いっぱい。
2006/02/26(日) 13:31:140352名無しさん@お腹いっぱい。
2006/02/26(日) 14:13:040353名無しさん@お腹いっぱい。
2006/02/26(日) 14:33:07>>351
セッションリーダーであるプロセスって概念はない。
あるプロセスのpidがプルセスグループidになったり、
セッションIDになることがあるだけ。
0354名無しさん@お腹いっぱい。
2006/02/26(日) 16:55:21は?
0355名無しさん@お腹いっぱい。
2006/02/26(日) 18:55:50特定の日付のタイムスタンプのファイルを探すシェルはどう書けばいいですか?
0356名無しさん@お腹いっぱい。
2006/02/26(日) 19:18:381日前なら find . -ctime 1
2日前なら find . -ctime 2
あとはお好みで。 -type f とか。詳しくは man findをどぞ。
0357名無しさん@お腹いっぱい。
2006/02/26(日) 19:21:28質問をよく読みましょう。試験とかで早合点してケアレスミスするタイプかな?
ちなみに、findでは簡単な方法はないと思うよ。
0358名無しさん@お腹いっぱい。
2006/02/26(日) 19:23:000359名無しさん@お腹いっぱい。
2006/02/26(日) 19:34:30Cでもなんでも好きな言語使え。
0360名無しさん@お腹いっぱい。
2006/02/26(日) 19:48:480361名無しさん@お腹いっぱい。
2006/02/26(日) 20:06:490362名無しさん@お腹いっぱい。
2006/02/26(日) 20:11:51今日も来たね。待ってたよ。
0363名無しさん@お腹いっぱい。
2006/02/26(日) 20:15:01それをfindに食わせればいいのかな?
GNU dateなら何とかなりそう。でもめんどくさそう。俺はパス。
0364名無しさん@お腹いっぱい。
2006/02/26(日) 20:35:00touch -t 日付 /tmp/start
touch -t その翌日 /tmp/end
find . -newer /tmp/start \! -newer /tmp/end -print
0365名無しさん@お腹いっぱい。
2006/02/26(日) 20:43:17「その翌日」をどうやって求めるんだよ。
結局dateを使う方法の方が奇麗では? テンポラリファイルも要らないし。
0366名無しさん@お腹いっぱい。
2006/02/26(日) 21:29:000367332
2006/02/26(日) 21:34:32expect -c "
set timeout 20
spawn passwd testuser
expect "*password:"
send "test\r"
expect "*password:"
send "test\r"
"
何度もすみません。
これ実行してもパスワード変更されません。
なぜ教えていただけないのかもわかりません。
難しすぎてわからないから教えていただけない?
簡単すぎてバカらしいから教えていただけない?
どちらなのでしょうか?
よろしければ、expectの使い方おしえてください。
よろしくおねがいします。
0368名無しさん@お腹いっぱい。
2006/02/26(日) 21:39:43↓ほれ。こんなんでどう?
arg=2005-01-23 # 探したい日付
days=`expr \( \`date +%s\` - \`date +%s -d $arg\` \) / 60 / 60 / 24`
find . -daystart -mtime $days
↑ ` ` が2重にネスティングしてるので注意してね。
0369名無しさん@お腹いっぱい。
2006/02/26(日) 22:04:38:-P
まずね、""(ダブルクオーテーション)の中で"(ダブルクオーテーション)を使うなら
\(バックスラッシュ)をその前につけろ。わかったら一度市ね。
エラーメッセージくらいかけ。わかったらもう一度詩ね。
0370名無しさん@お腹いっぱい。
2006/02/26(日) 22:12:06expect eof
しとけ。馬鹿。氏ね。
0371名無しさん@お腹いっぱい。
2006/02/26(日) 22:29:14.cshrcに下の行を登録して
alias test1 'find \!:1 -name \"\!:2\*\" -print'
test1 dir1 file1 と打つと、
find dir1 -name "file*" -print というコマンドを実行させたいけど、
うまく動かない。どう修正すればいい?
0372名無しさん@お腹いっぱい。
2006/02/26(日) 22:33:110373名無しさん@お腹いっぱい。
2006/02/26(日) 23:09:12代返してくれる親切な人も居る。
>>363
シェルって言うな、クズ。
0374名無しさん@お腹いっぱい。
2006/02/26(日) 23:17:01cshはスレ違い。
インタラクティブ系もスレ違い。
インタラクティブ系でしか使わないaliasの話もスレ違い。
わかったら帰れ!
0375名無しさん@お腹いっぱい。
2006/02/26(日) 23:41:38ありませんか?(英語でも構いません)
マニュアルページ
ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html
も詳しいですが、何かスッキリしません。
もっと抽象的に整理された形で、かつ、厳密に書かれたものは無いでしょうか?
0376名無しさん@お腹いっぱい。
2006/02/26(日) 23:41:48黙れ。一人で勝手に仕切るな。
0377名無しさん@お腹いっぱい。
2006/02/27(月) 00:00:170378名無しさん@お腹いっぱい。
2006/02/27(月) 00:24:490379名無しさん@お腹いっぱい。
2006/02/27(月) 00:29:20ソースを見ればいいのでは。
0380名無しさん@お腹いっぱい。
2006/02/27(月) 00:52:13ソースコードを1から読まずに済むならそれに越したことはありません
マニュアルページはある意味詳細に過ぎて見通しが悪いように思います
0381379
2006/02/27(月) 00:54:250382名無しさん@お腹いっぱい。
2006/02/27(月) 01:10:33そのたびに規則を書き出すやつなんていないだろ。
ソース読むしかないよ。
0383名無しさん@お腹いっぱい。
2006/02/27(月) 01:48:36はあ、そういもんですか
言語なんだから仕様ぐらいキッチリ決まっているもんだと思っていたけど
そーいうのがシェルの文化なんかな
でもちょっとした仕様の誤認識とかで致命的な結果を招きかねないのは
困ると思うんだけど
嫌な人は他のスクリプト言語使えって事かな
0384名無しさん@お腹いっぱい。
2006/02/27(月) 02:02:150385名無しさん@お腹いっぱい。
2006/02/27(月) 02:20:59違うな。bashなり犬なりだけに見られる腐れた文化だ。
0386名無しさん@お腹いっぱい。
2006/02/27(月) 03:35:19たぶん
0387名無しさん@お腹いっぱい。
2006/02/27(月) 06:59:040388名無しさん@お腹いっぱい。
2006/02/27(月) 08:04:45やっぱソースしかないんじゃね?
0389名無しさん@お腹いっぱい。
2006/02/27(月) 10:50:05bash について知りたかったのは大抵の環境で対話型シェルの標準になっている
からですが、 sh として起動された場合は POSIX 互換に近くになるようなので
探してみた
ttp://www.opengroup.org/onlinepubs/009695399/
がそれらしい
0390名無しさん@お腹いっぱい。
2006/02/27(月) 11:13:410391名無しさん@お腹いっぱい。
2006/02/27(月) 11:16:450392名無しさん@お腹いっぱい。
2006/02/27(月) 11:33:16そういうことにしたいのですね。
0393名無しさん@お腹いっぱい。
2006/02/27(月) 11:46:48そういう理由ならexplorer.exeについてでも調べた方がいいんじゃまいか。
おそらく最多のユーザ人口を抱える対話型シェルだよ。CUIじゃないけど。
0394名無しさん@お腹いっぱい。
2006/02/27(月) 12:41:57「sh として起動された場合は POSIX 互換に近くになる」と
マニュアル等には書いてあるが、これはかなり嘘。
実際にはshで起動してもbashとほとんど変わらない。
bashの独自拡張もほぼ全部使えてしまう。
目立った違いは、exportコマンドを引数なしで実行した時の表示が
bashだと declare -xなのが、shで起動すると exportの表示に
変わることくらい。
0395名無しさん@お腹いっぱい。
2006/02/27(月) 12:48:02Mac OS Xも今のバージョンはbashがデフォルトっぽいです。
2つ前くらいまではtcsh(sh)がデフォでした。
まぁ、私はtcshの方が良いと思うけど。
0396名無しさん@お腹いっぱい。
2006/02/27(月) 12:52:49やっぱashが漢?
>>395
tcshって少し昔しか知らないんだけど、シェルスクリプトに使うには重くない?
個人的にcsh構文ではまった記憶が多いので、偏見あるかもですが。
0397名無しさん@お腹いっぱい。
2006/02/27(月) 13:37:210398名無しさん@お腹いっぱい。
2006/02/27(月) 13:43:120399名無しさん@お腹いっぱい。
2006/02/27(月) 22:07:010400名無しさん@お腹いっぱい。
2006/02/27(月) 22:51:53Kシェルってファンクション(内部関数)作れるんだよね?
繰り返し処理をそこでやりたいんだけどどうやって記述するの?
0401名無しさん@お腹いっぱい。
2006/02/27(月) 23:31:070402名無しさん@お腹いっぱい。
2006/02/27(月) 23:33:01繰り返したい処理をC-c C-vで必要な回数コピペする。
0403名無しさん@お腹いっぱい。
2006/02/27(月) 23:36:35友達いないから俺もやってみたいな。
0404名無しさん@お腹いっぱい。
2006/02/27(月) 23:41:40当時履歴が実装されていた唯一のシェルだったからというのが大きいな。
何でも最初からあったわけではないというお話。
0405名無しさん@お腹いっぱい。
2006/02/27(月) 23:56:34csh でできると知らない人も多そうだけど。
0406名無しさん@お腹いっぱい。
2006/02/28(火) 00:03:17newcshの前にあった?
0407名無しさん@お腹いっぱい。
2006/02/28(火) 00:23:17あったんじゃね?
俺的にcsh本が書かれた時代&そっから数年はcsh以外にfilecが使えるシェルなかったし。
しかしあの数年をなかったことにしてもいいとか思っちゃえるのがcshの魔力。
また、数年後にはbashがでてくるわけだけど、当時のUNIX、68000 8MHzとかだと
bashが糞遅いわけなんだ。cshは糞だけどbashはもっと糞というのが当時の認識だろ。
その後tcshやkshもでたが、同様に遅いshellで、俺はずっとcshをつかってた。移行しても
いいと初めて思えたシェルがzsh。それいらいずっとzshだ。
0408名無しさん@お腹いっぱい。
2006/02/28(火) 00:24:23407でいってるkshはpdkshね。
0409名無しさん@お腹いっぱい。
2006/02/28(火) 00:31:450410名無しさん@お腹いっぱい。
2006/02/28(火) 00:38:140411名無しさん@お腹いっぱい。
2006/02/28(火) 00:38:490412名無しさん@お腹いっぱい。
2006/02/28(火) 00:52:55スレ違いなんで、対話的シェル総合スレでもたててそっちでやってくれ。
0413名無しさん@お腹いっぱい。
2006/02/28(火) 00:56:21zshがでてきて起動すると即帰ってきたからその感動も凄くてねえ。
>410
すまん。単なる俺の過去の経験の暴露だ。
無視してくれ。
0414名無しさん@お腹いっぱい。
2006/02/28(火) 01:15:260415名無しさん@お腹いっぱい。
2006/02/28(火) 01:17:10csh本って"UNIX C Shell Field Guide"のこと?
0416名無しさん@お腹いっぱい。
2006/02/28(火) 01:18:42そんなのprofileの違いだろ。馬鹿か。
0417名無しさん@お腹いっぱい。
2006/02/28(火) 01:23:13スレチガイだってば。
0418名無しさん@お腹いっぱい。
2006/02/28(火) 09:02:57> 拡張BNFになっとるがな。> bashのbisonソース
遅レスだけど教えてくれてありがとう。
シェルスクリプトの展開/置換と評価/実行の規則についてなんですが、
一つの入力単位(if などの複合文でなければ1行の「コマンドライン」)ごとに
字句構文解析→(展開/算術式評価/置換)
→(置換の結果生じた入力単位ごとに、字句構文解析→実行)
という流れで実行に移されると解釈していいのかな?
(あまりにも自明なことかもしれませんが…最後の () 内では
展開/置換が生じることはありえない?)
0419名無しさん@お腹いっぱい。
2006/02/28(火) 09:44:270420名無しさん@お腹いっぱい。
2006/02/28(火) 10:19:16bashと同じスタイル(yacc, lex使う)でshell作っているから。
# bison=GNU yacc
0421名無しさん@お腹いっぱい。
2006/02/28(火) 10:22:550422名無しさん@お腹いっぱい。
2006/03/04(土) 23:22:22$ echo $PWD
/home/nanashi/
となりますが、では $PWD と書かれたファイルから同じような出力を得るには
どうしたらいいでしょうか
$ cat nanashi.txt
pwd = $PWD
path = $PATH
$ [なにかコマンド] nanashi.txt
pwd = /home/nanashi/
path = /sbin:/bin:/usr/bin...
0423名無しさん@お腹いっぱい。
2006/03/04(土) 23:24:480424名無しさん@お腹いっぱい。
2006/03/05(日) 00:06:27なんで = の間が開いているの?
PWD="$PWD"
PATH="$PATH"
なら、
$ . nanashi.txt
で終りなのに。
0425名無しさん@お腹いっぱい。
2006/03/05(日) 00:08:18完全に信頼できるソースから入手したファイルでないならば危険。
ナガタ君のように泣きを見ることになる。
0426425
2006/03/05(日) 00:14:59そのファイルの前に
cat <<EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF
後ろに
EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF_EOF
を追加したファイルを作ってshに食わせる。
0427422
2006/03/05(日) 00:56:11作りたいんですよ。例えば、httpd.conf であれば、
httpd.conf.in ってのを作って、中に
ServerRoot "$PWD/testroot"
とか書いておいて展開したいという。
やっぱ sed ですかねぇ
0428名無しさん@お腹いっぱい。
2006/03/05(日) 00:58:200429422
2006/03/05(日) 01:10:43簡単にできるのかな、と妄想してみただけです。
ちなみに >>423 さんのだと、$PWD を展開した結果に
スラッシュが含まれているからダメっぽいです。
sed -e 's#\$PWD#'"$PWD#" nanashi.txt
とりあえずこんな感じにしてみます
0430名無しさん@お腹いっぱい。
2006/03/05(日) 01:12:530431名無しさん@お腹いっぱい。
2006/03/05(日) 03:36:540432名無しさん@お腹いっぱい。
2006/03/05(日) 08:38:500433名無しさん@お腹いっぱい。
2006/03/05(日) 08:46:33autoツール使いたがる気違いは絶滅すればいいのに。
0434名無しさん@お腹いっぱい。
2006/03/05(日) 12:08:57問題と混同しているのね。
シェルスクリプトのことをシェルと言ってるやつと同じレベルだな。
0435名無しさん@お腹いっぱい。
2006/03/05(日) 12:31:460436名無しさん@お腹いっぱい。
2006/03/05(日) 13:22:06互換性が無い事をチェックできないカタワなシステムと
それを有り難がって使ってる気違いの事だよ。
0437名無しさん@お腹いっぱい。
2006/03/05(日) 21:54:000438名無しさん@お腹いっぱい。
2006/03/05(日) 22:21:01autoconf はマジでなんでもチェックできるぞ。
互換性が無い事をチェックできなかったとしたら、それは autoconf じゃなくて
configure.in/configure.ac を書いた奴のせい。
おまいがやってるのは、シェルスクリプトのバグに対して、シェル自体に文句
を言ってるようなものだ。
0439名無しさん@お腹いっぱい。
2006/03/05(日) 22:28:30他スレで見つけたのだが、古いOSだと ./configureが動かないことがあるらしい。
(以前は動いたが、autoconfの新しいバージョンで動かなくなったらしい)
ソフト側が悪いんじゃなく、autoconf側が悪いようだよ。
↓
http://pc8.2ch.net/test/read.cgi/unix/1139155618/311
0440名無しさん@お腹いっぱい。
2006/03/06(月) 00:20:210441名無しさん@お腹いっぱい。
2006/03/06(月) 07:14:29configure.in/configure.acを正しく書かなければ、まともに動くconfigureを
生成できないautoconfというヘタレなシステムを批判しているのだ。
0442名無しさん@お腹いっぱい。
2006/03/06(月) 09:56:560443名無しさん@お腹いっぱい。
2006/03/06(月) 10:28:380444名無しさん@お腹いっぱい。
2006/03/06(月) 11:23:562ちゃんねるもyahooもSonyJapanもlivedoorもFreeBSD
0445名無しさん@お腹いっぱい。
2006/03/06(月) 12:55:05Cコンパイラと比べるな。機械語と比べるのがふさわしい。
0446名無しさん@お腹いっぱい。
2006/03/06(月) 22:44:08筋道のとおった議論をしなければ話を聞いてくれない
掲示板というシステムも批判したらいかがですか?
0447名無しさん@お腹いっぱい。
2006/03/06(月) 23:41:11全部、ダメサイトばかりじゃないかよ。
0448名無しさん@お腹いっぱい。
2006/03/07(火) 00:00:390449名無しさん@お腹いっぱい。
2006/03/07(火) 00:19:36おまえ超面白い。
0450名無しさん@お腹いっぱい。
2006/03/07(火) 14:58:09@aaa.com
@hoge.net
@foo.bar
@aaa.com
@foo.bar
を
@aaa.com
@hoge.net
@foo.bar
と言うように、重複した文字をまとめたいんです。
0451名無しさん@お腹いっぱい。
2006/03/07(火) 15:00:030452名無しさん@お腹いっぱい。
2006/03/07(火) 15:20:160454名無しさん@お腹いっぱい。
2006/03/07(火) 16:12:32$ cat << _EOF_ | sort -u
> @aaa.com
> @hoge.net
> @foo.bar
> @aaa.com
> @foo.bar
> _EOF_
@aaa.com
@foo.bar
@hoge.net
0455名無しさん@お腹いっぱい。
2006/03/07(火) 16:38:26awk '{if (!seen[$0]++) print}'
とかな。
0456名無しさん@お腹いっぱい。
2006/03/07(火) 22:36:41cat -n | sort -k 2 -u | sort -n | cut -f 2-
0457名無しさん@お腹いっぱい。
2006/03/07(火) 23:44:450458名無しさん@お腹いっぱい。
2006/03/07(火) 23:54:310459名無しさん@お腹いっぱい。
2006/03/07(火) 23:59:450460名無しさん@お腹いっぱい。
2006/03/08(水) 08:15:14そのアイデアはいいな。
前に同じような作業したときは、
perl で一度出てきた行を記憶しておくという
非常に馬鹿正直なやり方をしてた。
0461名無しさん@お腹いっぱい。
2006/03/08(水) 08:40:080462名無しさん@お腹いっぱい。
2006/03/08(水) 11:04:570463名無しさん@お腹いっぱい。
2006/03/08(水) 11:12:40>>455と>>460の方がメモリに抱える行は少ないわけだが…
0464名無しさん@お腹いっぱい。
2006/03/08(水) 11:13:440465名無しさん@お腹いっぱい。
2006/03/08(水) 11:16:55メモリとか気にするなら
シェルスクリプト使わないよ。
多少実行時のパフォーマンス悪くても
さくっと作れる方重視でいいじゃん。
0466名無しさん@お腹いっぱい。
2006/03/08(水) 12:24:040467名無しさん@お腹いっぱい。
2006/03/08(水) 12:25:350468名無しさん@お腹いっぱい。
2006/03/08(水) 12:27:310469名無しさん@お腹いっぱい。
2006/03/09(木) 00:56:08効率なんか気にするな。
0470名無しさん@お腹いっぱい。
2006/03/09(木) 01:02:26perl のモジュールのインストールをはじめるのであった。
0471名無しさん@お腹いっぱい。
2006/03/09(木) 01:18:58perlのモジュールならWinでもつかえるな、、、とか言ってミルク
0472名無しさん@お腹いっぱい。
2006/03/09(木) 01:35:23ボケ老人乙。
その5行で書けて、perlにモジュールが存在する具体例を
挙げてみようね。
口から出まかせはやめよう。お前のようなやつの年金を払っているかと
思うと反吐が出そうになる。
0473名無しさん@お腹いっぱい。
2006/03/09(木) 01:45:300474名無しさん@お腹いっぱい。
2006/03/09(木) 02:09:18while read url;do
if [ -z "$referer" ]; then referer="$(dirname $url)/index.html"; fi
test -f $(basename $url) || (while ! wget --user-agent='Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; T312461)' --referer="$referer" --header='Accept-Encoding: gzip, deflate' --header='Accept-Language: en-us' "$1"; do sleep 1; done)
done
perlのモジュールというとLWPか。生活保護費もよろしくな。
0475名無しさん@お腹いっぱい。
2006/03/09(木) 02:56:35ダブルコーテーション使ったりシングルコーテション使ったりいろいろみたいなのですが、
どちらが正しいとかはありますか?
0476名無しさん@お腹いっぱい。
2006/03/09(木) 03:04:450477名無しさん@お腹いっぱい。
2006/03/09(木) 03:05:17シングルとダブルでは展開される要素の種類が全然違う。
正しいとかじゃなくて用途で使い分けるもの。
0478名無しさん@お腹いっぱい。
2006/03/09(木) 07:26:44あえて「どちらが正しい」というなら、
シングルクォートが正しい。
検索文字列などの中で、シェル変数の展開等が必要ないのに
ダブルクォートで囲ってあるのはバグの誘発になるのでやめた方がいい。
シングルクォートで囲っておけば、
シングルクォート自身以外はすべてシェルの解釈を避けられる。
0479名無しさん@お腹いっぱい。
2006/03/09(木) 08:38:11その手の話は専用スレがあるよ。
連番のH画像/動画を一気にダウンロードする2
http://pc8.2ch.net/test/read.cgi/unix/1135533382/
0480名無しさん@お腹いっぱい。
2006/03/09(木) 09:41:23おいおいwgetなんて使うなよ。無理してシェルスクリプト使って破綻してる例だな。
perl使った方がほぼ全ての点で優ってる。
0481名無しさん@お腹いっぱい。
2006/03/09(木) 18:17:37ちょっと添削。
「while ! コマンド」
という書き方は bashを含む一部のシェルでしか使えない。
「until コマンド」
と書いた方がいい。
あ、
$(basename $url)
も突っ込みたいが、またの機会に・・
>>480
shellで書いた方が頭がいい。>>474 は別に破綻していない。
何でもperlで書くのは良くない。
0482名無しさん@お腹いっぱい。
2006/03/09(木) 18:20:02なんで perl で書いちゃいかんの?
0483名無しさん@お腹いっぱい。
2006/03/09(木) 19:44:28【設問1】
>>481 が、なぜperlで書くと良くないと言っているか、
本文中の言葉を使って書き出せ。(5点)
0484名無しさん@お腹いっぱい。
2006/03/09(木) 19:48:54DNSルックアップとconnectを行ってしまうのはあまりよろしくないかも
知れない。
0485名無しさん@お腹いっぱい。
2006/03/09(木) 20:05:08DNSはcacheしてるから無問題。
0486名無しさん@お腹いっぱい。
2006/03/09(木) 22:52:59-------スクリプトA--------------
#!/bin/sh
echo 'NAME=$HOST' | egrep 'NAME=\$HOST'
-------ここまで--------------
↑のスクリプトを実行すると
NAME=$HOST
と表示されます。(期待する結果)
-------スクリプトB--------------
#!/bin/sh
aaa=`echo 'NAME=$HOST' | egrep 'NAME=\$HOST'`
echo $aaa
-------ここまで--------------
↑のように、変数に入れて、echoで出力すると、空行が1行表示されるだけなのです。
本当はスクリプトAのように出力させたいのです。
どうすればよいのか、よろしくご教授お願いします。
0487名無しさん@お腹いっぱい。
2006/03/09(木) 22:57:19` ` で囲まれた中の \ は要注意。
$ aaa=`echo 'NAME=$HOST' | egrep 'NAME=\\$HOST'`
$ echo "$aaa"
NAME=$HOST
期待される結果。
0488名無しさん@お腹いっぱい。
2006/03/09(木) 23:06:04紙さま!!
ありがとうございます!!!
0489名無しさん@お腹いっぱい。
2006/03/09(木) 23:10:07#! /bin/sh -x
を推奨。
0490名無しさん@お腹いっぱい。
2006/03/10(金) 06:04:26外部ファイルに
IP=111.222.333.444
と書いたファイルがあります。
これを読み込んで
#!/bin/sh
cat << EOF > /home/test.txt
ip='${IP}'
EOF
を実行すると、test.txtに
ip='111.222.333.444^M'
と、「^M」と言う文字が入ってしまいます。
「111.222.333.444」だけを書き込むにはどうしたらいいでしょうか?
よろしくお願いします。
0491名無しさん@お腹いっぱい。
2006/03/10(金) 07:29:08そもそも、外部ファイルの IP=111.222.333.444 に、
もともと ^M が付いているのが原因なので、
UNIXファイルとしてエディットして ^M を付けないのが正しい解決法だが、
どうしてもシェル側で ^M を取りたいなら、
外部ファイルを . で読んだ後で、
IP=`echo $IP | tr -d '\r'`
を実行してから cat 以下を実行すれば良い。
0492名無しさん@お腹いっぱい。
2006/03/10(金) 07:43:37ありがとうございます!
感謝感謝!
0493名無しさん@お腹いっぱい。
2006/03/10(金) 09:44:510494名無しさん@お腹いっぱい。
2006/03/10(金) 09:55:470495名無しさん@お腹いっぱい。
2006/03/10(金) 10:50:22というか、シェルスクリプト自体が^M付きなんだろ?
cat << EOF > /home/test.txt^M
ip='${IP}'^M
EOF^M
0496名無しさん@お腹いっぱい。
2006/03/10(金) 12:10:49いや、それだと #!/bin/sh^M で動作しないし、
test.txt^Mを読むにも苦労するはずだから、
そういうわけではないはず。
0497名無しさん@お腹いっぱい。
2006/03/10(金) 12:12:55あ、それに、EOF^Mになるから、cat自体が終了しないじゃないか。
よって、シェルスクリプト自体には ^Mが付いていない、が正解。
IP=を書いたファイルのみ ^M が付いていると思われ。
0498名無しさん@お腹いっぱい。
2006/03/10(金) 15:53:040499名無しさん@お腹いっぱい。
2006/03/10(金) 15:58:360500名無しさん@お腹いっぱい。
2006/03/10(金) 16:55:470501名無しさん@お腹いっぱい。
2006/03/10(金) 17:13:53catが ^Mを付けてるんじゃなくて、
ヒアドキュメントの $IPが展開される時、
シェル変数IPの中には、もともとの別ファイルにあった ^Mが入っているので、
これがそのまま展開されるという話だろ。
というか、>>492 で解決したって言ってるんだから、
それ以上言うことないだろ。
0502名無しさん@お腹いっぱい。
2006/03/10(金) 17:24:120503名無しさん@お腹いっぱい。
2006/03/10(金) 22:22:02> IP=111.222.333.444
こんなIPアドレスNEEEEEEEEEE!
0504名無しさん@お腹いっぱい。
2006/03/10(金) 22:34:03例示のためにわざとありえないIPを書いたんだろ。
グローバルなIPを例示したい時、こういう書き方をすることがある。
0505名無しさん@お腹いっぱい。
2006/03/10(金) 23:25:400506名無しさん@お腹いっぱい。
2006/03/10(金) 23:32:160507名無しさん@お腹いっぱい。
2006/03/11(土) 08:29:05>>グローバルなIPを例示したい時、こういう書き方をすることがある。
ねーよ
0508名無しさん@お腹いっぱい。
2006/03/11(土) 09:17:20アルファベットで外人の名前を書くぐらいにありえないな。
つまり、そういう例示をする奴は度外れて常識がない門外漢。
0509名無しさん@お腹いっぱい。
2006/03/11(土) 09:18:140510名無しさん@お腹いっぱい。
2006/03/11(土) 09:32:180511名無しさん@お腹いっぱい。
2006/03/11(土) 09:48:50あるだろ。プライベートIPなら、
192.168.12.34 とか適当に例示して問題ないけど、
グローバルだと、実在する可能性があるので例示が難しい。
だから、わざと256以上のオクテットを含ませておいて例示する。
0512名無しさん@お腹いっぱい。
2006/03/11(土) 09:50:470513名無しさん@お腹いっぱい。
2006/03/11(土) 10:08:50それって、RFCか何かで決まってるの?
あと、クラスBやクラスAのアドレスを例示したい時はどうするの?
0514名無しさん@お腹いっぱい。
2006/03/11(土) 10:18:00RFC3330
今どきクラスなんて使わん。
0515名無しさん@お腹いっぱい。
2006/03/11(土) 10:47:46今どきCIDRなのは知ってるが、
ナチュラルマスクの関係で、
あえてClass A or Bのアドレスを例示したい時はどうするの?
0516名無しさん@お腹いっぱい。
2006/03/11(土) 10:49:580517名無しさん@お腹いっぱい。
2006/03/11(土) 11:29:580518名無しさん@お腹いっぱい。
2006/03/11(土) 11:31:46もっとグローバルっぽいアドレスで例示したいというのもあるわな。
RFCもまだ比較的新しいから、example.comに比べてあまり浸透していないと思う。
0519名無しさん@お腹いっぱい。
2006/03/11(土) 11:52:33ためになった…。知らんかった。
ただ、 111.222.333.444 はアレだ。デジャヴ。
某所で俺の嫌いな某コテが使っていたのだが、真似したいとは思わないなあ。
0520名無しさん@お腹いっぱい。
2006/03/11(土) 15:28:480521名無しさん@お腹いっぱい。
2006/03/11(土) 15:30:34村上春樹はパスタでも茹でてろ
0522名無しさん@お腹いっぱい。
2006/03/11(土) 15:30:380523名無しさん@お腹いっぱい。
2006/03/11(土) 15:43:330524名無しさん@お腹いっぱい。
2006/03/11(土) 16:40:17クラスA: 12.345.67.8
クラスB: 132.456.7.89
クラスC: 210.345.6.78
RFCなんかより、これの方がそれっぽくてわかりやすいでしょ。
0525名無しさん@お腹いっぱい。
2006/03/11(土) 16:49:280526名無しさん@お腹いっぱい。
2006/03/11(土) 17:02:190527名無しさん@お腹いっぱい。
2006/03/11(土) 17:15:51というカキコに対して一言
↓↓↓
0528名無しさん@お腹いっぱい。
2006/03/11(土) 17:39:550529名無しさん@お腹いっぱい。
2006/03/11(土) 18:21:470530名無しさん@お腹いっぱい。
2006/03/11(土) 18:30:43普通の人はそれを見ても、面と向かっては何も言わないだろうけど、
内心はこのスレで付いたレスの様な事を考えてると思うよ。
オイオイ、何だコイツって。
それに、何も知らない初心者が真似したら可哀想だよ。
0531名無しさん@お腹いっぱい。
2006/03/11(土) 20:06:07このアイデア頂きます。
某製品の取説を担当している者ですが、
WAN側の設定例でのIPで、xxxや***じゃわかりにくいと言われ、
どうしたものかと考えていたところでした。
自社のグローバルIPを使う事も考えましたが、
これも変更の可能性もあるし、使うのはまずいと思っていたところでした。
0532名無しさん@お腹いっぱい。
2006/03/11(土) 20:39:590533名無しさん@お腹いっぱい。
2006/03/11(土) 21:41:49って俺はそんな突っ込みなんてしないクマー
0534名無しさん@お腹いっぱい。
2006/03/11(土) 22:46:120535名無しさん@お腹いっぱい。
2006/03/11(土) 22:50:16そういう指摘は「シェルってゆーな」と同レベル。
0536名無しさん@お腹いっぱい。
2006/03/11(土) 22:56:080537名無しさん@お腹いっぱい。
2006/03/11(土) 23:20:320538名無しさん@お腹いっぱい。
2006/03/11(土) 23:39:43例ならいいじゃん。
実際に振るわけじゃないし。
0539名無しさん@お腹いっぱい。
2006/03/11(土) 23:53:010540名無しさん@お腹いっぱい。
2006/03/12(日) 00:05:30間違いなくかかってくる。
0541名無しさん@お腹いっぱい。
2006/03/12(日) 00:13:26「そのアドレスは私が使っているものですから公表しないでください」という
怖いメールが来ることも…
0542名無しさん@お腹いっぱい。
2006/03/12(日) 00:31:20「どうして RFC に書いてあるとおりにしないんですかっ!?!?!!!111!!」
というお怒りのメールが来ることもあるのだろうな。
0543名無しさん@お腹いっぱい。
2006/03/12(日) 00:44:040544名無しさん@お腹いっぱい。
2006/03/12(日) 01:08:35( ´∀`)< オマエモナー
( ) \_____
| | |
(__)_)
0545名無しさん@お腹いっぱい。
2006/03/12(日) 02:42:170546名無しさん@お腹いっぱい。
2006/03/12(日) 02:57:49懐かしいネタだな。
0547名無しさん@お腹いっぱい。
2006/03/12(日) 03:32:48個人のメモ書き程度なら何も言わんが、人の目に触れる様な所で使うのは止めとけ。
0548名無しさん@お腹いっぱい。
2006/03/12(日) 08:46:56※注 例として256以上のオクテットを含むIPアドレスを表示しています。
と、同じページに注釈を入れておけば無問題。
>>542
RFCでは192で始まるアドレスなので紛らわしい。
RFC云々を言うものはかなりの上級者なので、
こういう事でいちいち電話しない。
0549名無しさん@お腹いっぱい。
2006/03/12(日) 09:43:00RFCの192.0.2.xxx だけじゃ表現できず、困りますな。
まさか192.0.2.xxxをさらにネットマスクで分けたりしても
例示としてさらに紛らわしくなるだけ。
0550名無しさん@お腹いっぱい。
2006/03/12(日) 10:09:42RFC 書いたら?
0551名無しさん@お腹いっぱい。
2006/03/12(日) 10:36:300552名無しさん@お腹いっぱい。
2006/03/12(日) 11:20:320553名無しさん@お腹いっぱい。
2006/03/12(日) 12:28:35好き勝手にやればいいんだよ。シェア取ったもん勝ちなんだから。
RFCを神みたく崇め奉ってる奴ってバカ。
0554名無しさん@お腹いっぱい。
2006/03/12(日) 12:28:54RFC書く労力使うくらいなら、語呂のいい数字の組合せで商標登録しますw
0555名無しさん@お腹いっぱい。
2006/03/12(日) 12:41:54あれはRFCに沿ってるの?
0556名無しさん@お腹いっぱい。
2006/03/12(日) 12:45:22晒しage
0557名無しさん@お腹いっぱい。
2006/03/12(日) 14:08:17「256以上のオクテット」がそもそも矛盾してないか?
符号無し整数なら 255 までなのに。
0558名無しさん@お腹いっぱい。
2006/03/12(日) 14:33:210559名無しさん@お腹いっぱい。
2006/03/12(日) 18:17:59あり得ないアドレスを例に使うために、どこかを矛盾させなければならないのは当然。
敢えて矛盾させています、という注釈だろ。だからそれはおかしくない。
0560名無しさん@お腹いっぱい。
2006/03/12(日) 18:24:030561名無しさん@お腹いっぱい。
2006/03/12(日) 18:48:58太郎さんのアドレス「富.士.見.町」を指定する必要があります。
0562名無しさん@お腹いっぱい。
2006/03/12(日) 19:40:160563名無しさん@お腹いっぱい。
2006/03/12(日) 20:04:330564名無しさん@お腹いっぱい。
2006/03/12(日) 20:08:01ホストA ホストB
| 富.士.見.町 | 御.殿.場.市
−+−−−−−−−+−−
図1 ネットワーク構成の例
0565名無しさん@お腹いっぱい。
2006/03/12(日) 20:52:490566名無しさん@お腹いっぱい。
2006/03/12(日) 20:58:520567名無しさん@お腹いっぱい。
2006/03/12(日) 21:00:00copy[Enter]とタイプすると、「コピー元ファイル>」と聞いてきて、
ファイル名を入力すると、「コピー先ファイル>」と聞いてきて、
ファイル名を入力するとコピーされます。
「コピー先ファイル>」のところで、ディレクトリ名を入力した場合は、
そのディレクトリの内容が表示されて、再び「コピー先ファイル>」と聞いてきて、
ファイル名を入れると、そのディレクトリにコピーされます。
その他、コピー元ファイルが見つからない場合はエラーメッセージを出して
再び「コピー元ファイル>」と聞きます。
時間がありませんが、明日月曜の朝までにお願いします。
0568名無しさん@お腹いっぱい。
2006/03/12(日) 21:02:31何だいそりゃあ。
0569名無しさん@お腹いっぱい。
2006/03/12(日) 21:11:34実装言語は C? それとも Perl とか Python とか使って良いの?
0570名無しさん@お腹いっぱい。
2006/03/12(日) 21:21:10#!/bin/sh
infile="$1"
tofile="$2"
[ -z "$infile" ] && echo -n "コピー元のファイル>" && read infile
[ -z "$tofile" ] && echo -n "コピー先のファイル>" && read tofile
[ -d "$tofile" ] && (ls "$tofile"; "$0" "$infile") || cp "$infile" "$tofile"
0571名無しさん@お腹いっぱい。
2006/03/12(日) 21:32:56それだと、ディレクトリが一旦指定された場合に、そのディレクトリの情報が
サブシェルに渡らないのでは? あと、延々ディレクトリを入力すると
プロセスが増え続ける。
つーか、>>567 に対する答えはひとつ「宿題禁止!!」
0572名無しさん@お腹いっぱい。
2006/03/12(日) 22:15:47更には「コンデンサには寿命がある」とか言い出す香具師まで居る始末。
そもそも「電解」コンデンサだけが寿命があって特殊なんだよ。
一般的なセラミックやポリカーボネイトには寿命がなく、半永久で使える。
0573名無しさん@お腹いっぱい。
2006/03/12(日) 22:29:200574名無しさん@お腹いっぱい。
2006/03/12(日) 23:02:01#!/bin/sh
infile="$1"
tofile="$2"
[ -z "$infile" ] && echo -n "コピー元のファイル>" && read infile
[ -z "$tofile" ] && echo -n "コピー先のファイル>" && read tofile
tofile="$WD$tofile"
[ -d "$tofile" ] && (ls "$tofile"; WD="$tofile/" "$0" "$infile") || cp "$infile" "$tofile"
宿題って言うより頭の体操かな?
無視したければ、あぼーんしといてよ。
0575名無しさん@お腹いっぱい。
2006/03/12(日) 23:29:540576名無しさん@お腹いっぱい。
2006/03/12(日) 23:39:280577名無しさん@お腹いっぱい。
2006/03/12(日) 23:57:49こんな感じで。
富.士.見.0/24でクラスCだから、
ホストA: 富.士.見.町
ホストB: 富.士.見.台
0579名無しさん@お腹いっぱい。
2006/03/13(月) 02:36:02WD設定する前に使ってるところとか、再度ファイル名を聞く処理が抜けてたりして
いい加減だなとは思う。まあ、対話的にファイル名入力させるコマンドなんか
死んでも使わないからどうでもいいけどさあ。
0580名無しさん@お腹いっぱい。
2006/03/13(月) 03:53:31cp、read、test、echo あたりを使えば出来る。
後は man を見て頑張れ。
0581名無しさん@お腹いっぱい。
2006/03/13(月) 08:15:120582名無しさん@お腹いっぱい。
2006/03/13(月) 08:52:56コピー元ファイルが存在しなかった時に聞き直す処理が実装されていないようだが・・
0583名無しさん@お腹いっぱい。
2006/03/13(月) 09:14:14再帰実行した自分が失敗して帰った来た時に、cp強行が汚いどす。
$ true && true || echo done
$ true && false || echo done
done
0584名無しさん@お腹いっぱい。
2006/03/13(月) 09:15:30さらに、自分をexecするんじゃなく、
whileループの中で、再入力ならcontinueするようにすれば
execする必要もなくなる。
と、ヒントだけ書いておこう。
0585名無しさん@お腹いっぱい。
2006/03/13(月) 09:19:09再帰を使う処理が真っ先に思い浮かぶ人間はLisp出身だと思う。
0586名無しさん@お腹いっぱい。
2006/03/13(月) 12:54:270587名無しさん@お腹いっぱい。
2006/03/13(月) 14:21:16言ってみろ
0588名無しさん@お腹いっぱい。
2006/03/13(月) 15:00:15「真のプログラマはgotoを恐れない」
0589名無しさん@お腹いっぱい。
2006/03/13(月) 15:54:220590名無しさん@お腹いっぱい。
2006/03/13(月) 15:56:490591名無しさん@お腹いっぱい。
2006/03/13(月) 16:12:04というか、/bin/shにgotoはないし、break 2以上ができるので
gotoは根本的に排除されている。
まあ、gotoがあるcshみたいなアフォなシェルもあるが・・
0592名無しさん@お腹いっぱい。
2006/03/13(月) 16:22:00後藤っていう理科の先生が
フィリピンかどっかで自己紹介したら笑われたって
現地の言葉で「後藤=焼きうどん」なんだそうな
0593名無しさん@お腹いっぱい。
2006/03/13(月) 16:52:090594名無しさん@お腹いっぱい。
2006/03/13(月) 17:07:560595名無しさん@お腹いっぱい。
2006/03/13(月) 17:32:19Knuth先生に失礼なヤツだな
0596名無しさん@お腹いっぱい。
2006/03/13(月) 17:34:440597名無しさん@お腹いっぱい。
2006/03/13(月) 20:00:43ヘボを見分ける指標になる。
0598名無しさん@お腹いっぱい。
2006/03/13(月) 21:16:58hoge2/hoge5.ooo
hoge3/hoge6.ooo
これを全て
hoge1/hoge4.ppp_ooo
hoge2/hoge5.ppp_ooo
hoge3/hoge6.ppp_ooo
に変えたいんですが、どうすればいいかわけわかめです。
help me orz
0599名無しさん@お腹いっぱい。
2006/03/13(月) 21:18:38mv hoge1/hoge4.ooo hoge1/hoge4.ppp_ooo
mv hoge2/hoge5.ooo hoge2/hoge5.ppp_ooo
mv hoge3/hoge6.ooo hoge3/hoge6.ppp_ooo
0600名無しさん@お腹いっぱい。
2006/03/13(月) 21:22:27for file in hoge*/hoge*.ooo
do
mv $file `echo $file | sed 's/ooo/ppp_ooo/'`
done
>>599
アフォか。
0601名無しさん@お腹いっぱい。
2006/03/13(月) 21:29:060602名無しさん@お腹いっぱい。
2006/03/13(月) 21:32:070603名無しさん@お腹いっぱい。
2006/03/13(月) 21:43:160604名無しさん@お腹いっぱい。
2006/03/13(月) 21:47:140605名無しさん@お腹いっぱい。
2006/03/13(月) 21:47:200606名無しさん@お腹いっぱい。
2006/03/13(月) 21:49:590607名無しさん@お腹いっぱい。
2006/03/13(月) 21:52:220608名無しさん@お腹いっぱい。
2006/03/13(月) 22:01:240609名無しさん@お腹いっぱい。
2006/03/13(月) 22:02:350610名無しさん@お腹いっぱい。
2006/03/13(月) 22:11:030611名無しさん@お腹いっぱい。
2006/03/13(月) 22:12:360612名無しさん@お腹いっぱい。
2006/03/13(月) 22:13:42>mmm
アスキーネットにみたいなホストプログラム?
0613名無しさん@お腹いっぱい。
2006/03/13(月) 23:22:450614名無しさん@お腹いっぱい。
2006/03/13(月) 23:34:03スクリプトの最初で、引数で指定された全ファイルが存在することをチェックし、
そのあと各々処理したいんです。
0615名無しさん@お腹いっぱい。
2006/03/13(月) 23:45:04存在チェック関数書いて呼べ
0616名無しさん@お腹いっぱい。
2006/03/14(火) 00:05:48あったら便利だと思うのに
ありがとうございました。
0617名無しさん@お腹いっぱい。
2006/03/14(火) 00:17:49shift の反対は無いが
>スクリプトの最初で、引数で指定された全ファイルが存在することをチェック
が目的なら shift 使わなくてもどうにかなるよ。
for i in "$@"
do
[ -e "$i" ] || exit
done
0618名無しさん@お腹いっぱい。
2006/03/14(火) 00:30:040619614
2006/03/14(火) 00:35:48そうかfor文かfunction使えばいいのか・・・
ありがとうございます。
0620名無しさん@お腹いっぱい。
2006/03/14(火) 07:34:29どこのrename ? そんなの本当にあるの?
0621名無しさん@お腹いっぱい。
2006/03/14(火) 07:37:170622名無しさん@お腹いっぱい。
2006/03/14(火) 08:49:45perlについてくるぞ。
0623名無しさん@お腹いっぱい。
2006/03/14(火) 08:57:46http://search.cpan.org/~rmbarker/File-Rename-0.02/lib/File/Rename.pm
0624名無しさん@お腹いっぱい。
2006/03/14(火) 09:05:150625名無しさん@お腹いっぱい。
2006/03/14(火) 11:59:17あると便利なんだが
0626名無しさん@お腹いっぱい。
2006/03/14(火) 12:12:45http://www.gnome.org/projects/gb/
は終わったか。
http://www.mono-project.com/VisualBasic.NET_support
とか?
0627名無しさん@お腹いっぱい。
2006/03/14(火) 12:49:29Linuxだと標準で /usr/bin/renameがある。
renameといえば普通これを指す。ちゃんとしたバイナリだし、
perlは無関係だよ。
0628名無しさん@お腹いっぱい。
2006/03/14(火) 13:01:34rename jpeg jpg *.jpeg
となるようだ。
全く別物の同名コマンドが出回っているようなので、
シェルスクリプトでは使えんな。
(もともと使ってなかったけど)
0629名無しさん@お腹いっぱい。
2006/03/14(火) 13:12:49一口に Linux って言ってもその辺はディストリによって違うだろ。
Debian の /usr/bin/rename は perl スクリプトだよ。
たぶん >>623 の古い版。
0630名無しさん@お腹いっぱい。
2006/03/14(火) 13:17:14「util-linux の rename」だろうな。
0631名無しさん@お腹いっぱい。
2006/03/14(火) 13:22:37perlではない。RH系とSlackware系が同じだから、他でも同じかと思ったら
Debianでは違うのか。
まあ、そもそもrenameなんて使わないし、どうでもいいけどね。
人に説明する時はどのrenameか断らないと誤解を受けるね。
0632名無しさん@お腹いっぱい。
2006/03/14(火) 14:03:01俺の環境だとperlパケージの/usr/bin/prenameへのシンボリックリンク
$ update-alternatives --display rename
rename - status is auto.
link currently points to /usr/bin/prename
/usr/bin/prename - priority 60
slave rename.1.gz: /usr/share/man/man1/prename.1.gz
Current `best' version is /usr/bin/prename.
要するにDebianの場合サイトごとに違う。
# ここんところがシェルスクリプトスレにちょいと関係あるのでレスしてみた。
といってもrenameの候補があるperl以外のパケージ見たことないが…
0633名無しさん@お腹いっぱい。
2006/03/14(火) 15:00:24そういうのあるの知らなかった。
0634名無しさん@お腹いっぱい。
2006/03/14(火) 17:20:250635名無しさん@お腹いっぱい。
2006/03/14(火) 21:03:04俺的には珠玉のperlスクリプト。
0636名無しさん@お腹いっぱい。
2006/03/14(火) 22:36:00$cat L1
aaa
bbb
ccc
1
ddd
eee
2
これを
$cat L1
aaa bbb ccc 1
ddd eee 2
に変換する方法教えてくれ〜
0637名無しさん@お腹いっぱい。
2006/03/14(火) 22:48:16if expr "$x" : '[0-9][0-9]*$' > /dev/null; then
echo "$x"
else
echo -n "$x "
fi
done
0638名無しさん@お腹いっぱい。
2006/03/14(火) 22:50:20変換後が2行になるための条件は?
数字が来たらってこと?
0639名無しさん@お腹いっぱい。
2006/03/14(火) 22:52:53while read word
do
echo -n "$word "
case $word in [1-9]*) echo;; esac
done < L1
0640名無しさん@お腹いっぱい。
2006/03/14(火) 23:02:21すうじがきたら改行
0641名無しさん@お腹いっぱい。
2006/03/14(火) 23:04:08for name in hoge hage
{
echo $name
}
↑みたいな書き方は bash依存ですか?
なんか、Solarisの/bin/shでも動いてしまうんですけど、
manには記述がありません。(do doneの記述のみ)
0642名無しさん@お腹いっぱい。
2006/03/14(火) 23:06:370643名無しさん@お腹いっぱい。
2006/03/14(火) 23:11:23お約束の突っ込み。「catが無駄です」
>>637 >>639 >>642 の中では、外部コマンドを使っていない
>>639 が一番エレガントだな。
あ、>>642って、数字以外のの入力がスペースなしでくっついてしまうんじゃないか?
0644名無しさん@お腹いっぱい。
2006/03/14(火) 23:20:08$cat L1
111
222
333
a
444
555
b
これを
$cat L1
111 444
222 555
333 b
a
に変換する方法教えて
0645名無しさん@お腹いっぱい。
2006/03/14(火) 23:20:10POSIXの仕様によれば、{}は()と同じくcompound-listを構成することができる。
で、for文は"The for loop requires that the reserved words do and done
be used to delimit the sequence of commands"と書いてあって、
「do/doneをつかわなければならない」のかはちょっとわからない。
0646名無しさん@お腹いっぱい。
2006/03/14(火) 23:20:29case内で処理した方がいい。
0647名無しさん@お腹いっぱい。
2006/03/14(火) 23:29:41do doneの代用としての { } と、
compound-list の { } は違うしなぁ。
すると、Solarisとかで forで { } が使えてしまうのって
一種の隠しコマンドみたいなもの?
0648名無しさん@お腹いっぱい。
2006/03/14(火) 23:34:12それはjoin一発じゃないか?
>>639
数字の後にスペースはいっちゃわね?
0649名無しさん@お腹いっぱい。
2006/03/14(火) 23:35:50while read word1; do read word2; echo $word1 $word2; done
1行で桶。
0650名無しさん@お腹いっぱい。
2006/03/14(火) 23:37:01問題欲嫁。
0651642
2006/03/14(火) 23:42:52sed 's/$/ /g' L1 | tr -d "\n" | sed 's/([0-9]+)[^0-9]/\1\n/g' とか。
>>644 はColumnとか使えそう。使ったこと無いので詳しくはまんまん。
0652名無しさん@お腹いっぱい。
2006/03/14(火) 23:44:28joinじゃ無理じゃない? フィールド一致を見てしまうから。
0655名無しさん@お腹いっぱい。
2006/03/15(水) 00:49:500656名無しさん@お腹いっぱい。
2006/03/15(水) 01:38:180657名無しさん@お腹いっぱい。
2006/03/15(水) 02:17:30馬鹿学生。
とりあえず何ができればレベルが上がったと
定義するのか説明してくれ。
0658名無しさん@お腹いっぱい。
2006/03/15(水) 02:19:580659名無しさん@お腹いっぱい。
2006/03/15(水) 04:17:58sed一つで済むところを3つもプロセス使うなんて馬鹿げたことはやめてくれよな。
0660名無しさん@お腹いっぱい。
2006/03/15(水) 09:28:26俺が決める
0661名無しさん@お腹いっぱい。
2006/03/15(水) 10:45:13お前、スライム一匹にイオナズン使うタイプだろ。
0662名無しさん@お腹いっぱい。
2006/03/15(水) 10:54:20アセンブラ? なに軟弱なことを言ってんの?
0663名無しさん@お腹いっぱい。
2006/03/15(水) 11:41:00ハッカーぽい響きがあるせいか?
0664名無しさん@お腹いっぱい。
2006/03/15(水) 11:49:32というわけで、レベルが低い、といっている人はどーぞ、そのレベルの高さを示してください。
そのレベルの低さを示すのが関の山だと思うけど(w
0665名無しさん@お腹いっぱい。
2006/03/15(水) 12:11:160666名無しさん@お腹いっぱい。
2006/03/15(水) 12:12:41レベルの意味が違いすぎ
0667名無しさん@お腹いっぱい。
2006/03/15(水) 14:00:210668名無しさん@お腹いっぱい。
2006/03/15(水) 14:09:23あとから外部コマンド(sed/tr)を複数使った解を出してきても
エレガントではない。
0669名無しさん@お腹いっぱい。
2006/03/15(水) 14:11:530670名無しさん@お腹いっぱい。
2006/03/15(水) 14:33:13いいんじゃないか。この程度なら。
0671名無しさん@お腹いっぱい。
2006/03/15(水) 15:10:370672名無しさん@お腹いっぱい。
2006/03/15(水) 16:19:54内部コマンドだけでできればどんなに複雑でもエレガントとか言いはじめるやつとは議論にならんな
0673名無しさん@お腹いっぱい。
2006/03/15(水) 17:11:310674名無しさん@お腹いっぱい。
2006/03/15(水) 17:13:14シェルって言うなクズ。
0675名無しさん@お腹いっぱい。
2006/03/15(水) 18:05:21>>651 って動かないわけよ。
sedの中で \( \) とすべきところを ( ) で書いてるから。
動作確認してから書き込むのは最低限の回答者のルールだよ。
確かに、こんなシェル書いてちゃ食えないよな。
(先に言っとくけど「シェルってゆーな」の突っ込みは禁止。そろそろ言葉に慣れろ)
0676名無しさん@お腹いっぱい。
2006/03/15(水) 18:06:00シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
0677名無しさん@お腹いっぱい。
2006/03/15(水) 18:07:550678名無しさん@お腹いっぱい。
2006/03/15(水) 18:13:52思うこともあるね。sed,awk,grep,findあたりを良く使いまわすんだけど、
重くてしょうがなくなる。まあ高速化は二の次になっちゃうんだけど、
RubyかPerlあたりのスクリプト言語を使うことを、最初に検討した方がいいかも
知れん。
0679名無しさん@お腹いっぱい。
2006/03/15(水) 18:58:310680名無しさん@お腹いっぱい。
2006/03/15(水) 19:02:06すべて小文字のファイル名に直したいのですが、
どういうUNIXを打てばいいでしょうか?
0681名無しさん@お腹いっぱい。
2006/03/15(水) 19:03:270682名無しさん@お腹いっぱい。
2006/03/15(水) 19:11:180683名無しさん@お腹いっぱい。
2006/03/15(水) 19:30:44宿題は自分で考えろ。
0684名無しさん@お腹いっぱい。
2006/03/15(水) 19:38:080685名無しさん@お腹いっぱい。
2006/03/15(水) 19:51:03OS名を書かないと、答えられる人は誰もいないと思います。
0686名無しさん@お腹いっぱい。
2006/03/15(水) 19:52:500687名無しさん@お腹いっぱい。
2006/03/15(水) 20:08:51で前スレでこの板公認の略称が決まらなかったっけ?
0688名無しさん@お腹いっぱい。
2006/03/15(水) 20:26:180689名無しさん@お腹いっぱい。
2006/03/15(水) 20:33:440690名無しさん@お腹いっぱい。
2006/03/15(水) 20:49:26…………とかくにシェルは書きにくい。」
0691642
2006/03/15(水) 21:35:03趣味でか触ってないのでいつまで経っても初級者から成長しないんですよね。
で、
sed 's/$/ /g' L1 | tr -d "\n" | sed 's/\([0-9]+\)[^0-9]/\1\n/g'
で★キマリッ★
0692名無しさん@お腹いっぱい。
2006/03/15(水) 22:43:250693名無しさん@お腹いっぱい。
2006/03/15(水) 23:04:30シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
0694名無しさん@お腹いっぱい。
2006/03/15(水) 23:27:450695名無しさん@お腹いっぱい。
2006/03/16(木) 03:04:28…… … …… ……………… … …… … … …シェ… …
0696名無しさん@お腹いっぱい。
2006/03/16(木) 03:15:05シェイシェイ
0697名無しさん@お腹いっぱい。
2006/03/16(木) 12:52:44馬鹿回答をしているのが馬鹿学生じゃなくて馬鹿社会人だからだろうな。
0698名無しさん@お腹いっぱい。
2006/03/16(木) 13:35:340699名無しさん@お腹いっぱい。
2006/03/16(木) 13:48:35どうやるのか判りません。
yyyymmddの8桁日付なら`date +%Y%m%d`で設定できるのですが、
yymmddで6桁日付だとどうやるのでしょうか?
awkのsubstrという関数を上手く使えればできそうなのですが、
awkの使い方をいまいち理解できてないので・・・・
申し訳ありませんがよろしくお願いします。
0700名無しさん@お腹いっぱい。
2006/03/16(木) 13:53:02man strftime
0701名無しさん@お腹いっぱい。
2006/03/16(木) 14:07:40date +%y%m%d でできるよ。yは小文字。
ただし、%yは2000年問題の関係で推奨されない。
>>700
質問欲嫁。この場合 man strftimeしても解決しないだろ。
0702699
2006/03/16(木) 15:08:28ありがとうございました。
できました。
すごく単純なコマンドで出来たんですね(汗)
0703名無しさん@お腹いっぱい。
2006/03/16(木) 15:50:11そんなの用途しだいでしょ。
昔のデータなんか扱わないようなところとか。
>質問欲嫁。この場合 man strftimeしても解決しないだろ。
man date するとたいてい strftime(3) を参照と書いてないか?
0704名無しさん@お腹いっぱい。
2006/03/16(木) 15:58:12man dateしたなら、すでに %y のことは書いてある。
strftime(3)のことは書かれていなかった。
0705名無しさん@お腹いっぱい。
2006/03/16(木) 15:58:44誰だよ,解決しないとか言ってる奴
0706名無しさん@お腹いっぱい。
2006/03/16(木) 16:02:45strftimeはC言語の関数。
そっちに載っていたとしても、回答としては不適切。
もっとそのものズバリのman dateがあるのだから。
なんでわざわざ遠い回答するの?
0707名無しさん@お腹いっぱい。
2006/03/16(木) 16:03:270708名無しさん@お腹いっぱい。
2006/03/16(木) 16:06:310709名無しさん@お腹いっぱい。
2006/03/16(木) 16:07:43そういうことがやりたいなら strftime() を使って、
C言語でプログラムを書け、と言いたかったんじゃないかな。
それが、実は date +%y で簡単にできてしまうことがわかり、
突っ込まれたので暴れているわけだ。
0710名無しさん@お腹いっぱい。
2006/03/16(木) 16:08:24FreeBSD で man date を確認すると
% を使った詳細の書式は載っていない。
man strftime ならたぶんどの OS でも載ってるっしょ。
0711名無しさん@お腹いっぱい。
2006/03/16(木) 16:09:06>>703
0713名無しさん@お腹いっぱい。
2006/03/16(木) 16:14:58いきなり man strftimeしても、質問者にとっては、
それがdateで使えるとはわからない。
載っているのはC言語なので、最初の数行読んで「違う」「ガセネタだ」と
思うだろう。
man strftimeとか言わずに、
>>701 みたいに date +%y%m%d と、直接回答するのが
もっとも価値が高い回答ではないだろうか。
0714名無しさん@お腹いっぱい。
2006/03/16(木) 16:21:42回答控えようかな。
0715名無しさん@お腹いっぱい。
2006/03/16(木) 16:47:32--------------------------------
yy 西暦の省略表現です。西暦の 10 の位と 1 の位です (1989 年なら 89、06 なら 2006)。
〜中略〜
使用例
以下のコマンド:
date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
は、下のような表示を行ないます。
DATE: 1987-11-21
TIME: 13:36:16
0716名無しさん@お腹いっぱい。
2006/03/16(木) 16:52:510717名無しさん@お腹いっぱい。
2006/03/16(木) 16:59:42遠回しなman書いてるFreeBSDはクズ。
0718名無しさん@お腹いっぱい。
2006/03/16(木) 17:01:550719名無しさん@お腹いっぱい。
2006/03/16(木) 17:06:55て書いてあるけど。strftime(3)は遠回りでもなんでも
なく、直球だと思う。まぁ、date(1)にstrftime(3)を
見ろと載っていると一言あってもいいけど。
An operand with a leading plus (`+') sign signals a user-defined format
string which specifies the format in which to display the date and time.
The format string may contain any of the conversion specifications
described in the strftime(3) manual page, as well as any arbitrary text.
つーか、質問者以外が難癖つけすぎ。
0720名無しさん@お腹いっぱい。
2006/03/16(木) 17:08:10Solarisスレでは二言めには docs.sun.com読め、なので、manは標準じゃないのだろう。
0721名無しさん@お腹いっぱい。
2006/03/16(木) 17:10:52だからぁ、それはFreeBSDの場合なんだって。
そもそも、dateコマンドで行けるかどうかの情報すらない段階で、
man strftimeでは意味が通じないよ。
元が「dateの書式が知りたい」という質問なら
man strftimeでもわかるけど。
実際にはそうじゃない。
0722名無しさん@お腹いっぱい。
2006/03/16(木) 17:21:47これを、6桁にしようと、awkのsubstr関数を使うことを考えていた。
この段階で、質問者は「dateコマンドだけではできない」と
考えていたと推定できる。
すると回答としては、まず、「dateだけでできるんだよ」ということを
教えてやらないといけない。
ところが、ここで「man strftime」などと回答すると、
「dateの出力をstrftimeというコマンド(←実際にはない)で加工する」
あるいはawkを考えているため「awkにstrftimeという関数がある?」
などと、誤った方向に誘導してしまう。
だから、manなどで回答するのではなく、
`date +%y%m%d`
と一言いえば済むことだったのだ。
0723名無しさん@お腹いっぱい。
2006/03/16(木) 17:33:12直接、答えを教えるのは良くないよ。
0724名無しさん@お腹いっぱい。
2006/03/16(木) 17:38:09オレはその点が気になる。
シェルスクリプトとして動作確認してるなら、
回答は直接のコマンドラインになるはず。
直接答を書くというか、動作確認のためにそれは必要なこと。
0725名無しさん@お腹いっぱい。
2006/03/16(木) 17:38:450726名無しさん@お腹いっぱい。
2006/03/16(木) 17:43:37元々モマエは役に立ってないから
イエローで首括って良いよ
0727名無しさん@お腹いっぱい。
2006/03/16(木) 17:52:51仮に動作確認のために動かしても、マニュアルに載ってることは答えを
直接書くべきじゃない。回答者の学ぶ機会を奪うのか?
0728名無しさん@お腹いっぱい。
2006/03/16(木) 17:54:15>などと、誤った方向に誘導してしまう。
GNU awk にはあるよ。その man でもちゃんと strftime(3) に誘導してる。
0729名無しさん@お腹いっぱい。
2006/03/16(木) 17:56:39awkにstrftimeがあるのは知ってるよ。
だからこそ紛らわしいと言ってるんだ。
dateでできるのにわざわざawkでやると無駄だろ。
しかも、awkのstrftimeでdateみたいに表示させるの、
結構記述量多くなるよ。
0730名無しさん@お腹いっぱい。
2006/03/16(木) 18:00:42awk 'BEGIN { print strftime("%y%m%d") }'
だね。
確かに、こんなこと書くより、
date +%y%m%d
の方がエレガントだね。
0731名無しさん@お腹いっぱい。
2006/03/16(木) 18:06:32>回答者の学ぶ機会を奪うのか?
確かに、「回答者」こそいい回答方法を学んで欲しいよねw
man回答は最低。
0733名無しさん@お腹いっぱい。
2006/03/16(木) 21:19:53sh -c 'for i in *; do mv $i `echo $i | tr a-z A-Z`; done'
0734名無しさん@お腹いっぱい。
2006/03/16(木) 21:24:16逆に大文字に変換してるのはわざと?
あと、sh -c が無駄。
cshユーザーは居ないという大前提があるので、
sh -c する必要なし。
0735名無しさん@お腹いっぱい。
2006/03/16(木) 21:33:23> 逆に大文字に変換してるのはわざと?
素でまちがえただけよ
0736名無しさん@お腹いっぱい。
2006/03/16(木) 21:35:480737680
2006/03/16(木) 21:41:44ありがとうございます。733のUNIXを打つと途中まで行けるんですが、
My Document.txt というファイルがあるところでエラーになります。
こういうファイルも対応できるUNIXの打ち方はありませんか?
0738名無しさん@お腹いっぱい。
2006/03/16(木) 21:50:220739名無しさん@お腹いっぱい。
2006/03/16(木) 21:53:02あれ?
[]がいるんじゃね?
0740名無しさん@お腹いっぱい。
2006/03/16(木) 21:55:12man tr
[]はいらねーよ。正規表現じゃないんだから。
0741名無しさん@お腹いっぱい。
2006/03/16(木) 21:59:52それとも手元のPCがWinで、すぐにUNIXが打てないのかな?
0742名無しさん@お腹いっぱい。
2006/03/16(木) 22:13:04でも、Solarisの tr でも [ ] なしで動くので
[ ] はもう要らないのだろう。
0743名無しさん@お腹いっぱい。
2006/03/16(木) 22:25:26/usr/bin/trの場合は、[]がいるみたいだぞ。
/usr/xpg4/bin/trの場合はいらんみたいだが。
0744名無しさん@お腹いっぱい。
2006/03/16(木) 22:35:09manはインスコしてないので未確認。
manってうぜー。
現物確認が一番。
0745名無しさん@お腹いっぱい。
2006/03/16(木) 23:01:050746名無しさん@お腹いっぱい。
2006/03/16(木) 23:04:52何年か前に見たから、インスコしないことにしている。
LinuxのmanをNFSマウントしてそれを読んでるが、
それでだいたい間に合ってしまうんだよ。
0747名無しさん@お腹いっぱい。
2006/03/16(木) 23:20:24Solarisのmanの方が全然いいぞ
例えばThread-SafeかどうかSolarisのは全部書いてあるし
0748名無しさん@お腹いっぱい。
2006/03/16(木) 23:21:34聞いたことないなあ。"troff形式のマニュアルページ"もしくは
AnswerBook(もうリリースされてないけど)の間違いじゃないの?
ttp://docs.sun.com/app/docs/doc/819-0305/6n2o826je?a=view
ここにも載ってないし。
0749名無しさん@お腹いっぱい。
2006/03/16(木) 23:59:48> Linuxのmanって、なんか古い記述が残ってたり、テキトーなのが多くないか?
日本語の man はそういうの多いね。
--help オプションとかがあるコマンドなら
そっちで確認した方が確実だね。
0750名無しさん@お腹いっぱい。
2006/03/17(金) 00:33:46manも--helpオプションも間違ってて、
ソース読まざるをえないことが数度あった。
bashとかのでかいmanはよみにくいな。
0751名無しさん@お腹いっぱい。
2006/03/17(金) 00:37:040752名無しさん@お腹いっぱい。
2006/03/17(金) 00:43:180753名無しさん@お腹いっぱい。
2006/03/17(金) 00:52:25ああいうのなら info の方がいい。
0754名無しさん@お腹いっぱい。
2006/03/17(金) 01:18:200755名無しさん@お腹いっぱい。
2006/03/17(金) 01:20:07Solarisのmanは、docs.sun.comと同じソースで、
かなり前からSGMLドキュメントがオリジナルになっている。
アンサーブックの時代にそうなった。
/usr/man/sman*
0756名無しさん@お腹いっぱい。
2006/03/17(金) 06:56:130757名無しさん@お腹いっぱい。
2006/03/17(金) 07:16:05for i in *; do mv "$i" "`echo "$i" | tr a-z A-Z`"; done
0758名無しさん@お腹いっぱい。
2006/03/17(金) 07:18:360759名無しさん@お腹いっぱい。
2006/03/17(金) 07:24:110760名無しさん@お腹いっぱい。
2006/03/17(金) 07:32:58なんで突然UNIXを打たなきゃなんなかったのか気になる
0761名無しさん@お腹いっぱい。
2006/03/17(金) 08:19:02Solarisのインストール時に、最小インストールを選択すると manは入らないよ。
サーバー専用機などで Xが不要の場合、
End Userインストールより下には最小インストールしか選択肢がなく、
それを選んで manなしになっているマシンは多い。
0762名無しさん@お腹いっぱい。
2006/03/17(金) 08:20:400763名無しさん@お腹いっぱい。
2006/03/17(金) 08:53:220764名無しさん@お腹いっぱい。
2006/03/17(金) 09:08:36しかも、manは実行ファイルでもあるまいし、サーバー専用機の場合、
サーバー機にloginしてmanを読むこと自体無駄。
あ、だからdocs.sun.comなのか。
0765名無しさん@お腹いっぱい。
2006/03/17(金) 10:41:41NFSでman積めば?
0766名無しさん@お腹いっぱい。
2006/03/17(金) 11:05:400767名無しさん@お腹いっぱい。
2006/03/17(金) 11:09:48情報を後出しされてもなぁ
じゃmanサーバ立てて都度読みに行けば?
0768名無しさん@お腹いっぱい。
2006/03/17(金) 11:22:58けち臭いこというなw
0769名無しさん@お腹いっぱい。
2006/03/17(金) 11:45:580770名無しさん@お腹いっぱい。
2006/03/17(金) 11:55:43find / -type f -atime +365 -exec rm -f {} \;
でも実行しとけ
0771名無しさん@お腹いっぱい。
2006/03/17(金) 12:07:54多数のマシンに pkgadd して回るなんて面倒なことはできない。
デフォで入らなかったというのはそれはそれで意味があるのだろうし、
あえてデフォの状態をいじりたくないというのもある。
0772名無しさん@お腹いっぱい。
2006/03/17(金) 12:10:40それをシェルスレで主張する意味がわからん。
0773名無しさん@お腹いっぱい。
2006/03/17(金) 12:10:480774名無しさん@お腹いっぱい。
2006/03/17(金) 12:13:170775名無しさん@お腹いっぱい。
2006/03/17(金) 12:30:59そうだよ、入れなきゃいいんだよ。
オレは入れるなとは主張していない。
「manくらい入れろ」と言ってる >>762 とかに
反論してるだけ。
0776名無しさん@お腹いっぱい。
2006/03/17(金) 12:45:430777名無しさん@お腹いっぱい。
2006/03/17(金) 13:01:09このスレで質問したことは一度もない。
回答は多数。
初心者の質問に、誰かが man嫁と回答してるのを見て、
その直後にもっとずばりの回答をしてるのがオレ。
manなんかで回答するんじゃないぞ。
0778名無しさん@お腹いっぱい。
2006/03/17(金) 13:29:250779名無しさん@お腹いっぱい。
2006/03/17(金) 13:30:420780名無しさん@お腹いっぱい。
2006/03/17(金) 13:31:280781名無しさん@お腹いっぱい。
2006/03/17(金) 13:51:050782名無しさん@お腹いっぱい。
2006/03/17(金) 13:58:49> 初心者の質問に、誰かが man嫁と回答してるのを見て、
> その直後にもっとずばりの回答をしてるのがオレ。
質問者が調べる機会を奪っちゃいかんよ。
0783名無しさん@お腹いっぱい。
2006/03/17(金) 14:25:41でもオマエmanの入れ方解らないで教えてもらったじゃん
0784名無しさん@お腹いっぱい。
2006/03/17(金) 16:11:110785名無しさん@お腹いっぱい。
2006/03/17(金) 17:15:070786名無しさん@お腹いっぱい。
2006/03/17(金) 21:56:29どのようにして、その先入観を打ち破る事が出来るのか。本当に悩ましい
0787名無しさん@お腹いっぱい。
2006/03/17(金) 22:14:27そのネタもう古い。もっと新しいの頼む。
0788名無しさん@お腹いっぱい。
2006/03/17(金) 23:57:090789名無しさん@お腹いっぱい。
2006/03/18(土) 00:07:220790名無しさん@お腹いっぱい。
2006/03/18(土) 00:18:150791名無しさん@お腹いっぱい。
2006/03/18(土) 12:04:50man入れるか入れないかは別として回答としては>>701が一番良いと思うけどな。
>>699の人はある程度調べた後に質問したように見えるし、調べる方向が間違いつつあるようにも見える。
そういう人にはそのものずばりの回答を出せば、その人は自分で man date で回答を確かめる事をすると
思うよ。
0792名無しさん@お腹いっぱい。
2006/03/18(土) 12:28:56だから?
要するに君はここが相変わらずレベル低いと言いたかったわけだね
0793名無しさん@お腹いっぱい。
2006/03/18(土) 13:22:42ジサジエも飽きたから何か変わったUNIXを振ってくれよ
0795名無しさん@お腹いっぱい。
2006/03/18(土) 13:39:280796名無しさん@お腹いっぱい。
2006/03/18(土) 14:01:41#!/bin/sh
if [ $# -lt 1 ]; then
echo 'usage: manco YourAge' 1>&2
exit 1
fi
thisyear=`date +%Y`
year=`expr $thisyear - $1 + 16`
sudo date 01010000$year
echo 'Happy old year!'
man co
0797名無しさん@お腹いっぱい。
2006/03/18(土) 14:03:360798名無しさん@お腹いっぱい。
2006/03/18(土) 14:13:130799名無しさん@お腹いっぱい。
2006/03/18(土) 14:37:08ありがとうございます。
早速実行してみましたが、
53歳だと、dateの実行のところでエラーになって
16歳に戻れません。
53歳以上にも対応したUNIXを打つ方法はありませんか?
0801名無しさん@お腹いっぱい。
2006/03/18(土) 14:47:10典型的な自作自演の告白乙
ココではそんなお約束は書かなくてもおk
0802名無しさん@お腹いっぱい。
2006/03/18(土) 21:09:36俺は801では無い。
manは入れてない。
いつもずっぽり。
0803名無しさん@お腹いっぱい。
2006/03/18(土) 21:18:06これを、coding system = euc に変更したいので、
hexでエンコードされた「:」入りの日本語ファイル名をすべて
EUCに変換したいのですが、
どういうシェルを書いて、どういうUNIXを打てばいいでしょうか?
0804名無しさん@お腹いっぱい。
2006/03/18(土) 22:07:30http://www.samba.gr.jp/project/contrib/smbchartool.html
0805名無しさん@お腹いっぱい。
2006/03/18(土) 22:23:41それ、、、以前使ったら、シンボリックリンクも全部おいかけられて、
1つのファイル名を何度も何度もコード変換されて、全部の日本語
ファイルが化け化けになったw
0806名無しさん@お腹いっぱい。
2006/03/18(土) 23:07:48http://ftp.yz.yamagata-u.ac.jp/pub/network/samba-jp/tool/smbjcode/
のsmbjconv.plで、
find . -type f -exec mv {} `echo {} | /tmp/ss/smbjconv.pl hex euc` \;
0807名無しさん@お腹いっぱい。
2006/03/18(土) 23:14:32findの -execのところに ` ` 書いても期待通りに動作しないと思うぞ。
0808名無しさん@お腹いっぱい。
2006/03/18(土) 23:59:270809名無しさん@お腹いっぱい。
2006/03/19(日) 00:18:50うーん、795の意図を正確に処理したら、
子プロセスがたくさん出来て困るんですけど。
0810名無しさん@お腹いっぱい。
2006/03/19(日) 01:37:00実行されたらあるディレクトリがあるか調べて
そのディレクトリが存在していれば○○
存在していなければ停止
このようなシェルスクリプトはどう書けばいいのでしょうか?
できればbashとshの両方が知りたいです
0811名無しさん@お腹いっぱい。
2006/03/19(日) 01:47:49man test
0812名無しさん@お腹いっぱい。
2006/03/19(日) 04:34:39if [ -d あるディレクトリ ]
then
○○
else
停止
fi
0813名無しさん@お腹いっぱい。
2006/03/19(日) 06:04:35A = 'ps ax | grep あるディレクトリ | wc -l'
if [ $A ]; then
○○
else
停止
fi
0814名無しさん@お腹いっぱい。
2006/03/19(日) 06:05:20A = 'ls | grep あるディレクトリ | wc -l'
if [ $A ]; then
○○
else
停止
fi
0815名無しさん@お腹いっぱい。
2006/03/19(日) 09:02:40何がしたいんだ? >>812の正解のあとで間違った答えを出して
0816名無しさん@お腹いっぱい。
2006/03/19(日) 09:26:290817名無しさん@お腹いっぱい。
2006/03/19(日) 09:26:39君も man test
0818名無しさん@お腹いっぱい。
2006/03/19(日) 09:32:34>>812 正解。
>>813-814 初心者かな? >>812 の正解を参照汁。
それだとディレクトリがなくても wc -l の結果の 0 が Aに入るので、
ifで常に結果が真になる。grepでの判定も曖昧。
そんなことしなくても [ -d hoge ] でできることを覚えろ。
0819名無しさん@お腹いっぱい。
2006/03/19(日) 09:34:42おまえら一生manだけ読んでろ。manを読むばかりで手を動かさない机上の空論者だな。
0820名無しさん@お腹いっぱい。
2006/03/19(日) 09:40:23はぁ?
>>806 はfind実行する前に ` `が展開されるよ。
しかも、find の -exec のあとは直接のコマンドであって、
シェルスクリプトではないため、
-execの実行時には一切のシェルの解釈を受け付けない。
だから、仮に ` ` がfindの実行前に展開されていないとすると、
逆に -exec の時に ` ` がエラーになる。
いずれにしても、>>806 は大間違い。
俺は正解を知ってるが、回答者バトルのために敢えて書かない。
わかるモン居たら書いてみろ。
0821名無しさん@お腹いっぱい。
2006/03/19(日) 09:50:160822名無しさん@お腹いっぱい。
2006/03/19(日) 10:45:01熱くなりすぎ。>>808は>>807への突っ込みだと取ったんだが。
0823名無しさん@お腹いっぱい。
2006/03/19(日) 13:05:49それに突っ込んでる >>808 は間違い。
おおもとの >>806 が間違いなのは言うまでもないが。
0824名無しさん@お腹いっぱい。
2006/03/20(月) 12:00:36私英語苦手・・・・じゃなくて、日本語苦手。
0825名無しさん@お腹いっぱい。
2006/03/20(月) 14:43:210826名無しさん@お腹いっぱい。
2006/03/20(月) 16:27:410827名無しさん@お腹いっぱい。
2006/03/20(月) 16:36:01アンカー先間違えてる?
818にそう言っても話が繋がらないのだが・・
0828名無しさん@お腹いっぱい。
2006/03/20(月) 16:51:180829名無しさん@お腹いっぱい。
2006/03/20(月) 21:22:48カレントディレクトリ以下(サブディレクトリ含)にある.c,.cc,.cppのファイル数を知りたいのですが、どうしたらよいのでしょうか。
find ./* -name *.c | wc -l
をそれぞれの拡張子で、では無く、一発で3種類のファイル数を求める方法を知りたいです。
後、
./script < inputfile
と入力した時、inputfileの中身をscript内で使うにはどうしたらよいでしょうか。
./script 1 2
とやると$1に1、というようになりますが、ファイルに
1
2
とあり、そのファイルを入力として渡す時はどのようにして1や2を得るのでしょうか。
0830名無しさん@お腹いっぱい。
2006/03/20(月) 21:40:01Q1 何故、findの機能を調べようとしないんだ?
Q2 何故、そのスクリプトエンジンの機能を調べようとしないんだ?
0831名無しさん@お腹いっぱい。
2006/03/20(月) 22:28:060832名無しさん@お腹いっぱい。
2006/03/20(月) 22:33:50そういうお答えはご遠慮願います。
ちゃんとわかる方のみ、ご回答よろしくお願いします。
0833名無しさん@お腹いっぱい。
2006/03/20(月) 22:38:06一問目は、man shかman bashして、
パス名展開(Pathname Expantion) のところ読んでね。
0834名無しさん@お腹いっぱい。
2006/03/20(月) 22:44:35>>829 の1問目は、「一発で3種類のファイル数を(それぞれ)求める方法」
らしいから、それは shの「パス名展開」を読んでも解決にならないだろ。
0835名無しさん@お腹いっぱい。
2006/03/20(月) 22:47:220836名無しさん@お腹いっぱい。
2006/03/20(月) 22:48:35死ねよ。クズ。
0837829
2006/03/20(月) 22:49:10忠告ありがとうございます。
findの方は -o -name の追加でなんとかなりました。
ファイル入力の方、ファイル名がスクリプト内で取得可能ならexecでどうこう出来る、
というのを見つけたのですが、肝心のファイル名をどうやって知ればいいのかわからんです。
なんか検索ヒント下さい。
0838名無しさん@お腹いっぱい。
2006/03/20(月) 22:52:35「それぞれ」で無くてもよかったのだけど、その場合一発で出来るんですかね。
0839名無しさん@お腹いっぱい。
2006/03/20(月) 22:54:221問目:
「一発で」というならfindやシェルスクリプトでは無理。
3回もfindしたくないということなら、
近い方法として、
find . -name '*.c' -o -name '*.cpp' -or -name '*.cc'
の結果をシェル変数またはテンポラリファイルに一旦取り込み、
その内容を
grep '\.c$' | wc -l
grep '\.cc$' | wc -l
grep '\.cpp$' | wc -l
すればよい。
2問目:
./scriptの中で readコマンドで標準入力の内容が1行ずつ読み込める。
普通、while readみたいにして使う。
0840名無しさん@お腹いっぱい。
2006/03/20(月) 22:57:06「それぞれ」でなくていいなら、
find . -name '*.c' -o -name '*.cpp' -or -name '*.cc' | wc -l
で一発。
0841名無しさん@お腹いっぱい。
2006/03/20(月) 22:59:190842名無しさん@お腹いっぱい。
2006/03/20(月) 23:02:07使われてるって現実もあるし。微妙な所か。
0843829
2006/03/20(月) 23:12:56>>839
while read var
して$varを全部echoしてみたのですが、最初の値が0になっている。こういうものなの?
一つ目を無視すれば済むのだろうけど。
0844名無しさん@お腹いっぱい。
2006/03/20(月) 23:18:14おそらく、whileループの「外」でechoしてるんだろう、とエスパーしてみる。
while readする場合にはちょっと癖があって、
while文の部分がサブシェルで実行されるので、
varに値を入れても、
whileループを抜けると消えてしまう(←ちょっと不正確な表現)んだよ。
うまく工夫してそれを避けるしかない。
0845名無しさん@お腹いっぱい。
2006/03/20(月) 23:19:32find . \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' \) -exec basename {} \; | \
( c=0 ; cc=0 ; cpp=0 ; while read i; do case $i in *.c ) c=`expr $c + 1`;; *.cc) cc=`expr $cc + 1`;; *.cpp) cpp=`expr $cpp + 1`;; esac; done; printf '*.c = %d\n*.cc = %d\n*.cpp = %d\n' $c $cc $cpp )
長すぎたので途中で折り返してる。
てか1行で書く必要は無いのか?
0846名無しさん@お腹いっぱい。
2006/03/20(月) 23:20:04この場合は while readを使わずに、
set `cat`
で読み込め。
これで、引数で起動したのと同じように
そのまま $1 $2 ... に代入されるよ。
0847845
2006/03/20(月) 23:20:140848829
2006/03/21(火) 00:06:34なんかよく分からないけど0が消えました。
さっき全く同じコードの筈なんだけどな。
入力ファイルの頭が0だった、なんて事は無いです。
while read var
do
echo $var
done
で0無しで動きました。不安なので再現狙ってみます。
>>845
長いからスクリプト書いた方が とか
でも一行で書けるものなんだと驚いたのも確か
>>846
うまいこと行きました。便利ですねこれ。さんくすです。
みなさんありがとうございました
0849名無しさん@お腹いっぱい。
2006/03/21(火) 00:10:20ちょっと作ってみた
--
find . -type f | egrep '\.(c|cc|cpp)$' | \
rev | cut -d. -f1 | rev | sort | uniq -c | sort -nr
--
egrepの部分に集計したい拡張子追加してね。
0850名無しさん@お腹いっぱい。
2006/03/21(火) 00:37:22rev | cut -d. -f1 | rev
の部分、面白いと思うけど、
プロセス3つも使うの無駄っぽいから、俺なら、
sed 's/.*\.\(.*\)$/\1/'
にするかな。
0851名無しさん@お腹いっぱい。
2006/03/21(火) 00:49:35それならもっと簡単に書ける。
sed 's/.*\.//'
0852名無しさん@お腹いっぱい。
2006/03/21(火) 00:55:46アイデアが膨らんで、スレのレベルが上がるねぇー。
0853名無しさん@お腹いっぱい。
2006/03/21(火) 01:07:00訊き捨ての香具師にはman嫁でじゅーぶん
0854名無しさん@お腹いっぱい。
2006/03/21(火) 01:41:260855名無しさん@お腹いっぱい。
2006/03/21(火) 01:45:48egrep のところは find -regex を使った方がお手軽だと思う。
>>850-851 のアイディアも加えるとこんな感じ?
find . -type f -regex '.*\.\(c\|cc\|cpp\)' | sed 's/.*\.//' | sort | uniq -c | sort -nr
0856名無しさん@お腹いっぱい。
2006/03/21(火) 02:41:54したいんだったら、egrep 使った方がいいよ。
OS 依存でいいなら構わんが。
0857名無しさん@お腹いっぱい。
2006/03/21(火) 02:53:14egrepってOS非依存か?
0858名無しさん@お腹いっぱい。
2006/03/21(火) 03:35:450859名無しさん@お腹いっぱい。
2006/03/21(火) 03:47:17-regex って GNU 拡張だったんだ。
憶えておくよ。
egrep と grep -E ってどっちがポータブルなの?
0860名無しさん@お腹いっぱい。
2006/03/21(火) 03:50:09もう少しポータブルだけどね。4.4BSD 系 OS のマニュアルには、
拡張機能だと明記してあるんだが。
egrep と grep -E では、egrep の方がポータブル。
0861名無しさん@お腹いっぱい。
2006/03/21(火) 07:38:290862名無しさん@お腹いっぱい。
2006/03/21(火) 09:39:23findの -regexがダメというなら、パイプで egrepするよりは、
find自身で -name '*.c' -o -name '*.cc' -o -name '*.cpp'
でいいと思う。ちゃんと書き直すと、
find . -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' \) \
| sed 's/.*\.//' | sort | uniq -c | sort -nr
かな。
findの -type fを省略していいなら、その後の \( \) も省略できる。
0863名無しさん@お腹いっぱい。
2006/03/21(火) 11:19:300864名無しさん@お腹いっぱい。
2006/03/21(火) 11:25:04よし、存分に語れ。
0865名無しさん@お腹いっぱい。
2006/03/21(火) 11:29:26それはそれは…是非ご教授願いたい。
0866名無しさん@お腹いっぱい。
2006/03/21(火) 11:40:07POSIX!何ですかそれは!是非ご啓示ください!!
0867名無しさん@お腹いっぱい。
2006/03/21(火) 11:46:58実際の各種OSで使われているシェルやコマンドは、
POSIXと同じではない。
だから、そもそもPOSIXと同じではない各種OS間のポータビリティを
考えるなら、POSIX云々ではなく、実際に各種OSでの状況を調べて
対応するのが実践的で現実的。
0868名無しさん@お腹いっぱい。
2006/03/21(火) 13:34:460869名無しさん@お腹いっぱい。
2006/03/21(火) 14:09:32登録は必要だけど、無料だよ。
ttp://www.unix.org/version3/online.html
0870名無しさん@お腹いっぱい。
2006/03/21(火) 14:38:19POSIX新聞?うちは取らないよ。
0871名無しさん@お腹いっぱい。
2006/03/21(火) 15:47:04>・特記なき場合はbourne shがデフォルトです。
今どき、bourne shをデフォルトにしているのなんて、
Solarisくらいしかないじゃん。
0872名無しさん@お腹いっぱい。
2006/03/21(火) 15:54:560873名無しさん@お腹いっぱい。
2006/03/21(火) 16:04:460874名無しさん@お腹いっぱい。
2006/03/21(火) 16:08:57> egrep と grep -E では、egrep の方がポータブル。
嘘おっしゃい。
0875名無しさん@お腹いっぱい。
2006/03/21(火) 16:09:180876名無しさん@お腹いっぱい。
2006/03/21(火) 16:30:18するようなプログラム作るとめっさ速そうなんだけど。無理?
0877名無しさん@お腹いっぱい。
2006/03/21(火) 16:41:16Linux とか POSIX の仕様しか知らない最近の人だと、そう思うかも
しれないね。SUSv3 を見ると egrep は載ってなくて grep -E だけ
が書いてあるし。
でも、もともと egrep と grep は別のコマンドで、使っているアル
ゴリズムも egrep は DFA、grep は NFA で異なっていた。10年くらい
前だと、grep に -E オプションがない OS も沢山あったよ。
これに対し、egrep はベル研 UNIX 時代から存在する由緒あるコマンド
で、事実上すべての UNIX に存在するはず。
ttp://www.bookshelf.jp/texi/autoconf-ja/autoconf-ja_10.html
> POSIX 1003.1-2001では,もはやegrepを要求していませんが,より古いホスト
> の多くはまだPOSIXのgrep -Eでの置換をサポートしていません.この問題を回
> 避するため,AC_PROG_EGREP を呼び出し,$EGREPを使用してください
0878名無しさん@お腹いっぱい。
2006/03/21(火) 16:48:05Solarisだと/usr/xpg4/bin/grepにしか-Eオプションは無くて/usr/bin/grepでは-Eは使えない。
他のOSでも使えるようにgrep -Eをスクリプトに書くのはちょいめんどくさいな。
0879名無しさん@お腹いっぱい。
2006/03/21(火) 16:54:26まずはPOSIXを読めな? ごたくはそれからだ。
0880名無しさん@お腹いっぱい。
2006/03/21(火) 17:01:07pthread使ったファイル検索プログラムがButenhofのpthread本に
載ってたような。
0881名無しさん@お腹いっぱい。
2006/03/21(火) 18:53:18>>877 見ても、POSIXよりも autoconfの方がよほど現実的というところか。
0882名無しさん@お腹いっぱい。
2006/03/21(火) 21:15:57相変わらず
0883名無しさん@お腹いっぱい。
2006/03/21(火) 21:27:27鬱ですねぇ。
0885名無しさん@お腹いっぱい。
2006/03/22(水) 02:14:100886名無しさん@お腹いっぱい。
2006/03/22(水) 09:40:58その後は究極のProxy★ガブリエナイで優雅にproxy生活だったさ!!
0887名無しさん@お腹いっぱい。
2006/03/22(水) 18:01:04分野 : セキュリティ > ネットワーク
インターネット上で公開されている操作が簡単なクラックツールを利用して、興味
本位の不正アクセスを試みる「幼稚な」クラッカー。
クラックツールは既に広く知られているセキュリティホールを悪用するように作成されているため、
セキュリティパッチを確実に適用することで、ほとんどのスクリプトキディによる攻撃は防止できる。
クラックツールを使えば深い知識や高度な技術がなくても簡単に攻撃を行なうことができるため、
数の上ではクラッカーのほとんどはスクリプトキディであると言われる。
0888名無しさん@お腹いっぱい。
2006/03/23(木) 15:38:21という理解でよろしいでしょうか?
0889名無しさん@お腹いっぱい。
2006/03/23(木) 15:39:590890名無しさん@お腹いっぱい。
2006/03/24(金) 02:30:15いえ Korn Shell です。
0891名無しさん@お腹いっぱい。
2006/03/24(金) 07:37:06まあそんなに汎用性気にするならPerl使えという気もするが。
0892774
2006/03/24(金) 07:55:17http://news18.2ch.net/test/read.cgi/news4plus/1143149170/
0893名無しさん@お腹いっぱい。
2006/03/24(金) 08:08:44一番移植性が高いのはBourne Shellということで合ってる。
当たり前過ぎて誰も答えなかっただけ。
>>890
初心者が本気にするかも知れないから、そういう嘘書くのやめろ。
0894名無しさん@お腹いっぱい。
2006/03/24(金) 09:31:20では移植性の高さを定量的に比較し提示してください。
0895名無しさん@お腹いっぱい。
2006/03/24(金) 09:42:42誰もが常識として知っていることをあなたに説明して教える筋合いはない。
知りたければ自分で知ろうとする努力をしなさい。
0896名無しさん@お腹いっぱい。
2006/03/24(金) 09:45:05つまり根拠なき妄言てことですな。自白乙。
0897名無しさん@お腹いっぱい。
2006/03/24(金) 09:48:12大丈夫。みんな妄想してるから。
0898名無しさん@お腹いっぱい。
2006/03/24(金) 10:42:36「kshが移植性が一番高い」などとマジで言ってるなら重症だぞ。
ヨソでそんなこと言って恥かくなよ。
0899名無しさん@お腹いっぱい。
2006/03/24(金) 10:50:45汎用性と移植性は違う気がする。
汎用性は用途の広さだよね。
それならどのシェルもほとんど変わらない気がする。
0900名無しさん@お腹いっぱい。
2006/03/24(金) 10:53:40$ ssh freebsd-host
freebsd$ ksh
ksh: not found
freebsd$ exit
$ ssh linux-host
linux$ ksh
ksh: not found
linux$ exit
....noway, what more can I say ?
0901名無しさん@お腹いっぱい。
2006/03/24(金) 11:18:12お前のマシンに当該シェルがあるかどうかなんて聞いちゃいねー
0902名無しさん@お腹いっぱい。
2006/03/24(金) 11:25:36そのとおりだが、漏れもpdkshなんて使わんからアンインストールしてるよ。
0903名無しさん@お腹いっぱい。
2006/03/24(金) 11:29:27はぁ?
どんなホストでも、誰のホストでも、
デフォで動くというのが「移植性」の必須条件なわけだが。
0904名無しさん@お腹いっぱい。
2006/03/24(金) 11:31:390905名無しさん@お腹いっぱい。
2006/03/24(金) 11:34:37そういう標準化の為に色々大人が事情をつくるのよ
どんなUNIX95のホストでもとか
POSIXに準拠したホストでもとか
0906名無しさん@お腹いっぱい。
2006/03/24(金) 11:50:29だからPOSIXって実際には使えないわけですね。
0907名無しさん@お腹いっぱい。
2006/03/24(金) 13:38:490908名無しさん@お腹いっぱい。
2006/03/24(金) 13:57:13たくさん釣れましたね。
確かに、本当にKorn Shellが移植性が高かったら良かったかも知れませんね。
でも現実にはもう遅いですね。
0909名無しさん@お腹いっぱい。
2006/03/24(金) 14:24:020910名無しさん@お腹いっぱい。
2006/03/24(金) 21:56:420911名無しさん@お腹いっぱい。
2006/03/24(金) 22:03:570912名無しさん@お腹いっぱい。
2006/03/24(金) 22:21:31次の各項目を、その可能性が高い順番に並べよ。(10点)
(1) IPv6が普及する
(2) UNIX環境においてUTF8がEUCよりも普及する
(3) kshが最も移植性の高いシェルとして普及する
0913名無しさん@お腹いっぱい。
2006/03/24(金) 22:45:380914名無しさん@お腹いっぱい。
2006/03/24(金) 22:48:190915名無しさん@お腹いっぱい。
2006/03/24(金) 22:57:20本当にやる気が有ればいつでも捨てれるはずだ
0916名無しさん@お腹いっぱい。
2006/03/24(金) 22:58:53どれも可能性ほぼゼロ。
よって、どの順に並べても正解。
UTF8は、全角記号の横幅問題が解決しない限り、実際問題使えない。
0917名無しさん@お腹いっぱい。
2006/03/24(金) 23:08:27でFA?
0918名無しさん@お腹いっぱい。
2006/03/24(金) 23:16:500919名無しさん@お腹いっぱい。
2006/03/24(金) 23:32:060920名無しさん@お腹いっぱい。
2006/03/24(金) 23:43:220921名無しさん@お腹いっぱい。
2006/03/24(金) 23:55:22いい加減なことぬかすな、CP/Mにはcommand.comなど無い。
0922名無しさん@お腹いっぱい。
2006/03/25(土) 00:24:050923名無しさん@お腹いっぱい。
2006/03/25(土) 00:24:490924名無しさん@お腹いっぱい。
2006/03/25(土) 00:27:590925名無しさん@お腹いっぱい。
2006/03/25(土) 00:46:370926名無しさん@お腹いっぱい。
2006/03/25(土) 01:03:03ぐらい
0927名無しさん@お腹いっぱい。
2006/03/25(土) 01:25:48が漏れの印象
0928名無しさん@お腹いっぱい。
2006/03/25(土) 01:54:43オナホの自販機ってあるんだ。さすがだれにも相手にされなくなった
ご老体さまがたですなw
0929名無しさん@お腹いっぱい。
2006/03/25(土) 02:01:540930名無しさん@お腹いっぱい。
2006/03/25(土) 02:01:562はUNIXではムリでそ
犬はUNIXじゃないし〜
1は連邦政府の動向見ると実現しそう
日本は後追いで普及ということになるだろうけど
3はよく分からないけどLinuxの鳥ベンダ次第
システム用の各種スクリプトはXMLでラップする方が普及すると思うので
シェルの差っていうのは余り意識せず済むようになると思うケド
4は心がけ次第
0931名無しさん@お腹いっぱい。
2006/03/25(土) 02:02:090932名無しさん@お腹いっぱい。
2006/03/25(土) 02:07:560933名無しさん@お腹いっぱい。
2006/03/25(土) 02:33:55OS-9ってshell 差し換えできましたっけ。
0934名無しさん@お腹いっぱい。
2006/03/25(土) 12:29:58command < file
というのと、
command '< file'
というのと、両方ありますよね。
どう違うんですか?
0935名無しさん@お腹いっぱい。
2006/03/25(土) 12:54:58日本語でおk
0936名無しさん@お腹いっぱい。
2006/03/25(土) 13:03:49ジュワジュワジュジュワワワワワ?
0937名無しさん@お腹いっぱい。
2006/03/25(土) 13:04:55AV Riderはシェルを換えられるというデモの意味もあった。
0938名無しさん@お腹いっぱい。
2006/03/25(土) 13:17:49知らないなら茶々入れるなよ!
0939名無しさん@お腹いっぱい。
2006/03/25(土) 13:22:08ありません
0940名無しさん@お腹いっぱい。
2006/03/25(土) 13:27:140941名無しさん@お腹いっぱい。
2006/03/25(土) 14:02:21はcommandへの引数は無し、標準入力はfileになる。
command '< file'
はcommandへの引数は一つで、それは '< file' という文字列。標準入力は変わらず。
だから、2つの書き方でやろうとしていることは全く違う。
実際にあるなら、その行を変更無しにそのままコピペしてみな。
0942名無しさん@お腹いっぱい。
2006/03/25(土) 14:08:27で、bash依存なのでお引き取りください。
0943名無しさん@お腹いっぱい。
2006/03/25(土) 14:50:560944名無しさん@お腹いっぱい。
2006/03/25(土) 14:58:01つべこべ言うなニート
0945名無しさん@お腹いっぱい。
2006/03/25(土) 14:59:190946名無しさん@お腹いっぱい。
2006/03/25(土) 14:59:30bash依存だとUNIXがぶちにくいんじゃない
0947名無しさん@お腹いっぱい。
2006/03/25(土) 15:42:320948名無しさん@お腹いっぱい。
2006/03/25(土) 15:54:520949名無しさん@お腹いっぱい。
2006/03/25(土) 17:50:14シェルにすると出ません。
UNIXとシェルでは何か違いがあるのでしょうか?
0950名無しさん@お腹いっぱい。
2006/03/25(土) 18:07:01英語でおk
0951名無しさん@お腹いっぱい。
2006/03/25(土) 18:46:24but when it is made into shell, it doesn't.
Is there any difference between UNIX and shell ?
0952名無しさん@お腹いっぱい。
2006/03/25(土) 18:50:41>Is there any difference between UNIX and shell ?
Yes.
0953名無しさん@お腹いっぱい。
2006/03/25(土) 19:00:24Thanks. Tell me why and how to make it work.
0954名無しさん@お腹いっぱい。
2006/03/25(土) 19:03:120955名無しさん@お腹いっぱい。
2006/03/25(土) 19:07:050956名無しさん@お腹いっぱい。
2006/03/25(土) 19:18:390957名無しさん@お腹いっぱい。
2006/03/25(土) 21:19:40んなこたない。`< file` は kshでも使えるぞ。
0958名無しさん@お腹いっぱい。
2006/03/26(日) 00:43:12ここに↓に上げておきます。
次スレ立てる人はコピペしてください。
オレの環境からだとなぜか立てられないので・・
0959名無しさん@お腹いっぱい。
2006/03/26(日) 00:43:48シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>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 でトレースしましょう。
0960名無しさん@お腹いっぱい。
2006/03/26(日) 00:44:55シェルスクリプト総合 その5
http://pc8.2ch.net/test/read.cgi/unix/1137801629/
シェルスクリプト総合 その4
http://pc8.2ch.net/test/read.cgi/unix/1131026501/
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646/
シェルスクリプト総合 その2
http://pc8.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
http://pc8.2ch.net/test/read.cgi/unix/1101820646/
□関連スレ:
sed
http://pc8.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc8.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc8.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc8.2ch.net/test/read.cgi/unix/1102921590/
□他板の関連スレ:
【sed】シェルスクリプト総合@LINUX【awk】
http://pc8.2ch.net/test/read.cgi/linux/1121994321/
【Shell】どのシェル使ってる?【Script】
http://pc8.2ch.net/test/read.cgi/linux/1067330754/
0961名無しさん@お腹いっぱい。
2006/03/26(日) 00:47:34「誰にでも」シリーズ
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
0962名無しさん@お腹いっぱい。
2006/03/26(日) 00:49:52FreeBSD 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
0963名無しさん@お腹いっぱい。
2006/03/26(日) 00:51:03(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/
0964名無しさん@お腹いっぱい。
2006/03/26(日) 00:51:45(2005/07) UNIX シェルスクリプト辞典 川井 義治 (著),志田 智 (著),田淵 貴昭,米田 聡
http://amazon.co.jp/o/ASIN/4798109231/
(2005/08) シェルスクリプト ポケットリファレンス bash編 宮原 徹 (著), 川原 龍人 (著)
http://www.amazon.co.jp/o/ASIN/4774124818/
(2005/12) 図解でわかるLinuxシェルスクリプト・正規表現 小泉 修(著)
http://www.amazon.co.jp/o/ASIN/4534040067/
(2006/01) 詳解 シェルスクリプト アーノルド ロビンス (著), ほか
http://www.amazon.co.jp/o/ASIN/4873112672/
0965名無しさん@お腹いっぱい。
2006/03/26(日) 00:52:410966名無しさん@お腹いっぱい。
2006/03/26(日) 01:13:30名著厳選ってのならともかく、シェル本網羅ってのは
尼損で検索すればいいだけだしテンプレとしては要らないんでないの。
0967名無しさん@お腹いっぱい。
2006/03/26(日) 01:14:24▼遅い
0968名無しさん@お腹いっぱい。
2006/03/26(日) 03:52:110969名無しさん@お腹いっぱい。
2006/03/26(日) 04:01:110970名無しさん@お腹いっぱい。
2006/03/26(日) 08:33:16> Linuxユーザは/bin/shの正体がbashなので特に注意。
→bashであることが多いので
ashなデストリも増えてる。
0971名無しさん@お腹いっぱい。
2006/03/26(日) 08:40:10確かにこのリスト、アマゾンの「最近の出版年月の順番」なだけのような…
俺のお奨めは、
詳解 シェルスクリプト アーノルド ロビンス (著), ほか
http://www.amazon.co.jp/o/ASIN/4873112672/
UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/
入門UNIXシェルプログラミング−Bourne Shellの基礎から学ぶUNIX World
http://www.amazon.co.jp/exec/obidos/ASIN/4797308281/
0972名無しさん@お腹いっぱい。
2006/03/26(日) 08:49:28その2とか参照する暇人はいないだろう。
0973名無しさん@お腹いっぱい。
2006/03/26(日) 09:21:01くだらん言い訳してないでLinux板にbashスレでも立て てお け
0974名無しさん@お腹いっぱい。
2006/03/26(日) 10:41:420975名無しさん@お腹いっぱい。
2006/03/26(日) 11:51:48zshでも使えるね。「bash依存」で片付けられないわけか。
0976名無しさん@お腹いっぱい。
2006/03/26(日) 12:05:45ちょっと話は変わるけど、
ashって、バージョンによって echoが echo -eを含んでいたり、いなかったり、
バージョンによってtypeコマンドが実装されていなかったり、
letコマンドの動作がbash/zsh/kshとは違ったり、、と
ashはashで変なところがあって違和感ない?
0977名無しさん@お腹いっぱい。
2006/03/26(日) 12:36:28FreeBSDだけの話するなよw
0978名無しさん@お腹いっぱい。
2006/03/26(日) 12:59:51FreeBSDだけじゃないだろ。
0979名無しさん@お腹いっぱい。
2006/03/26(日) 13:05:210980名無しさん@お腹いっぱい。
2006/03/26(日) 13:30:310981名無しさん@お腹いっぱい。
2006/03/26(日) 13:32:45確かに、バージョンによって変種多杉。
0982名無しさん@お腹いっぱい。
2006/03/26(日) 13:35:040983名無しさん@お腹いっぱい。
2006/03/26(日) 13:37:410984名無しさん@お腹いっぱい。
2006/03/26(日) 13:37:47FreeBSDはいろいろ手入れてるぞ、確か。
0985名無しさん@お腹いっぱい。
2006/03/26(日) 13:39:54質問の意味がわからない。
0986名無しさん@お腹いっぱい。
2006/03/26(日) 13:41:04Debianのashもいろいろ手を入れてる。
同じashのつもりだとハマる。
0987名無しさん@お腹いっぱい。
2006/03/26(日) 13:46:150988名無しさん@お腹いっぱい。
2006/03/26(日) 13:46:520989名無しさん@お腹いっぱい。
2006/03/26(日) 13:51:280990名無しさん@お腹いっぱい。
2006/03/26(日) 13:58:070991名無しさん@お腹いっぱい。
2006/03/26(日) 14:02:070992名無しさん@お腹いっぱい。
2006/03/26(日) 14:04:110993名無しさん@お腹いっぱい。
2006/03/26(日) 14:07:420994名無しさん@お腹いっぱい。
2006/03/26(日) 14:10:060995名無しさん@お腹いっぱい。
2006/03/26(日) 14:32:340996名無しさん@お腹いっぱい。
2006/03/26(日) 14:47:470997名無しさん@お腹いっぱい。
2006/03/26(日) 14:48:570998名無しさん@お腹いっぱい。
2006/03/26(日) 14:52:100999名無しさん@お腹いっぱい。
2006/03/26(日) 14:54:341000名無しさん@お腹いっぱい。
2006/03/26(日) 14:54:5810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。