シェルスクリプト総合 その5

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はbourne shがデフォルトです。
 bash/csh/tcsh/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
2名無しさん@お腹いっぱい。: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/
3名無しさん@お腹いっぱい。: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/
4名無しさん@お腹いっぱい。:2006/01/21(土) 09:03:03
□参考リンク:
UNIXの部屋 (沢山のコマンドの簡単な紹介など)
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/

□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
 シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
 使い方の質問などはスレ違いなので無用に願います。
5名無しさん@お腹いっぱい。: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
6名無しさん@お腹いっぱい。:2006/01/21(土) 09:04:11
□スクリプト本の出版ラッシュらしい・・
Linux 推薦図書/必読書/推薦雑誌/推薦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/
7名無しさん@お腹いっぱい。:2006/01/21(土) 13:59:24
まずは乙だよもん
8名無しさん@お腹いっぱい。:2006/01/21(土) 14:11:10
>>1
糞スレ立てんなや
9名無しさん@お腹いっぱい。:2006/01/21(土) 14:40:35
>>8
糞スレにいちいち反応する
あんさんのほうが遥かに糞
10名無しさん@お腹いっぱい。:2006/01/21(土) 14:56:45
前スレ 994
http://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 の形式で渡すのが非常に困難という話です。
11994:2006/01/21(土) 15:01:06
>>10
"$*"が使えないことは分かってる。
http://pc8.2ch.net/test/read.cgi/unix/1131026501/990
12名無しさん@お腹いっぱい。:2006/01/21(土) 20:01:49
>>9
つまりお前が一番糞ってこと?
13名無しさん@お腹いっぱい。:2006/01/21(土) 22:07:49
>>12
ねえぼく、レスとスレの区別は付けようね〜。
14名無しさん@お腹いっぱい。:2006/01/21(土) 22:29:32
で、sh -cで起動する時に空白や改行を含んだ複数の引数を
ばっちり渡す方法は見つかったのか?

$ 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:

なんつーか前スレの馬鹿は凄いね。
試してから投稿するって基本も出来ないアレ。
やってもないのに日常茶飯事とかいってさ。もうね。
1514:2006/01/21(土) 22:30:02
ちなみに
$ sh -c "./z '""$@""'"
1:hello world
なんてやると出来たような気がするが、、、
実はこれだと$2以降がわたらない。

はっきりいって、渡す方法を見つけたら、
チューリング賞物じゃないかな?え?無理?

思い返すとperlの黎明期には、perlなら長年shでは不可能だった
これができるって宣伝を見た覚えがあるし、shじゃ無理ちゃうかな。
16名無しさん@お腹いっぱい。:2006/01/21(土) 22:33:23
>>15
無理ですね。
1715:2006/01/21(土) 22:43:30
>16
そんなに簡単に気って捨てるなよw

$ arg=""; while [ $# -gt 0 ]; do arg="$arg '$1'"; shift; done; sh -c "./z $arg"

で大丈夫ですよとかって帰ってくるの期待してたのに。
まあ、正直な意見としては面倒だからperlでいいじゃん。
18名無しさん@お腹いっぱい。:2006/01/21(土) 22:45:28
無理なものが放置されてるということは、他の方法で回避できるからだな。
この場合はsh -c "..."を使わなければよい。
19名無しさん@お腹いっぱい。:2006/01/21(土) 22:51:19
>>17
惜しいが、それだと引数の中に
普通の文字としてシングルクォートがある場合にうまくいかない。

set " hoge isn't hage " " No, I don't. "

みたいな場合ね。
20名無しさん@お腹いっぱい。:2006/01/21(土) 22:58:41
echo 'echo "$@"' | sh /dev/stdin a b c
とか。
21名無しさん@お腹いっぱい。:2006/01/21(土) 22:59:51
>>19
今思い付いたが、引数の"とか'とか怪しい文字を全部エスケープし
てしまえばいいのか。
22名無しさん@お腹いっぱい。:2006/01/21(土) 23:03:43
>>13
切り返したつもりなんだろうが、一番分かってないのはお前のようだぞw

#このスレは幼稚なやつがいぱ〜いだね。
23名無しさん@お腹いっぱい。:2006/01/22(日) 02:55:30
/home/user1/sample1.txtがオーナーroot、グループroot
/home/user2/sample2.txtがオーナーroot、グループroot

このとき一発でsample1.txtのオーナー・グループを user1に、
sample2.txtのオーナー・グループをuser2にするシェル記述法を教えてもらえないでしょうか?
宜しくお願いしますm(_ _)m
24名無しさん@お腹いっぱい。:2006/01/22(日) 03:18:47
id=$(expr "$file" : "/home/\([^/][^/]*\)/.*")
chown $id:$id $file # chown $id.$id $file
2523:2006/01/22(日) 03:34:04
>>24
ありがとうございます、
上の文は正規表現ですよね、
下の#はなんでしょうか、コメントアウトじゃないですよね。
26名無しさん@お腹いっぱい。:2006/01/22(日) 03:38:10
┐(´ー`)┌
27名無しさん@お腹いっぱい。:2006/01/22(日) 07:50:22
コメントアウトじゃない?
28名無しさん@お腹いっぱい。:2006/01/22(日) 07:54:00
コメントアウトって
コメント記号で本文からはずしてコメント化するってこと?
あるいはコメントしてあるところのコメントを除去して非コメント化すること?
29名無しさん@お腹いっぱい。:2006/01/22(日) 09:01:11
コメント化する方。
30名無しさん@お腹いっぱい。:2006/01/22(日) 12:49:30
>>28
ときどき勘違いしている人がいるよね。
31名無しさん@お腹いっぱい。:2006/01/22(日) 13:01:47
コメントアウトしてあったものを本文に戻すことを
一語で表す表現ってあったっけ? 餡こめんと?
32名無しさん@お腹いっぱい。:2006/01/22(日) 13:02:30
コメント解除
33名無しさん@お腹いっぱい。:2006/01/22(日) 13:11:03
確実に通じる用語はないから
「行頭の # を削除」とか言った方がいい。
34名無しさん@お腹いっぱい。:2006/01/22(日) 13:27:14
「アンコメント」(uncomment)で一般的に世界中で通じる。
3521:2006/01/22(日) 13:28:41
>>21
'とか"とかをエスケープするのではなくて、スペース類を全部エス
ケープすればいい。
36名無しさん@お腹いっぱい。:2006/01/22(日) 16:32:53
>>34
日本だとセクシャルハラスメント
37名無しさん@お腹いっぱい。:2006/01/22(日) 18:35:46
なぜ?
38名無しさん@お腹いっぱい。:2006/01/24(火) 00:15:54
指定したフォルダの中で一週間より古いファイルを削除するシェルって
どうやったらいいんでしょうか?

find . -mtime +7 -print | xargs rm
これだと、指定したフォルダの配下のフォルダも削除対象になっていまうので
指定したフォルダだけ検索するようにしたいのですがよい方法はありませんでしょうか?
39名無しさん@お腹いっぱい。:2006/01/24(火) 00:17:36
↓シェルに対するツッコミ
40名無しさん@お腹いっぱい。:2006/01/24(火) 00:22:43
>>38
シェルスクリプトについて、もう少しルシェルシェ (recherche) しましょう
41名無しさん@お腹いっぱい。:2006/01/24(火) 00:35:19
>>38
ls > ls.out でそのフォルダのファイル一覧を出力して
エクセルで編集してコピペ実行。
42名無しさん@お腹いっぱい。:2006/01/24(火) 01:33:23
>>38
findに「-type f」を入れれ。
43名無しさん@お腹いっぱい。:2006/01/24(火) 01:34:35
-depth n とみたが
44名無しさん@お腹いっぱい。:2006/01/24(火) 01:52:43
-maxdepth n とみたが
45名無しさん@お腹いっぱい。:2006/01/24(火) 03:45:43
↓-print に対するツッコミ
46名無しさん@お腹いっぱい。:2006/01/24(火) 07:07:39
>>45
突っ込みどころなのか?
昔のシステムに乗ってる find は -print 書かないと
何も出力しないんだが...
47名無しさん@お腹いっぱい。:2006/01/24(火) 07:35:50
以上、>>45へのツッコミですた

いや勉強になりますな
48名無しさん@お腹いっぱい。:2006/01/24(火) 07:42:41
>>38
シェルってゆうな、クズ。
49名無しさん@お腹いっぱい。:2006/01/24(火) 08:16:47
おそかったな
50名無しさん@お腹いっぱい。:2006/01/24(火) 08:34:39
おまえら、これを読んでおいてください。

The '#!'-magic, some details about the shebang mechanism on various Unix flavours
ttp://www.in-ulm.de/~mascheck/various/shebang/
51名無しさん@お腹いっぱい。:2006/01/24(火) 09:07:30
>>38
危険だから xragsは使うな。
意図しないファイルが削除されたりするぞ。
52名無しさん@お腹いっぱい。:2006/01/24(火) 09:51:07
ふたたび-printについてのツッコミ
53名無しさん@お腹いっぱい。:2006/01/24(火) 13:34:27
-print0

xargsで意図しないファイルが消されるのって、ファイル名の問題以外は、
-execでも同様な気がするんだけど、違うの?
54名無しさん@お腹いっぱい。:2006/01/24(火) 14:19:13
>>53
>ファイル名の問題以外は、
重要な問題を「以外」で片付けるなよ。
55名無しさん@お腹いっぱい。:2006/01/24(火) 14:43:17
次スレ用xargsテンプレ募集
56名無しさん@お腹いっぱい。:2006/01/24(火) 15:11:38
>>53
というか、意図しないファイルが削除されたりしない!
57名無しさん@お腹いっぱい。:2006/01/24(火) 15:33:14
>>55
xargsには、スペース、シングルクォート、ダブルクォート、改行などを含む
ファイル名を正しく処理できないという仕様バグがあります。
(例: 「I'm a girl.mp3」などというファイル名はイマドキ結構ある)
これを回避する唯一の方法は、findの -print0オプションと xragsの-0オプションを
組み合わせて使用することです。しかし、Solarisのfind/xargsには
これらのオプションがないため、移植性重視のシェルスクリプトでは結局、
xargsを使用しないのが懸命です。
58名無しさん@お腹いっぱい。:2006/01/24(火) 16:28:43
- Solarisのfind/xargsにはこれらのオプションがないため、
+ これらは GNU coreutils の拡張オプションであるため、

じゃね?GNU 以外で -print0, -0 のある実装ってあるの?
59名無しさん@お腹いっぱい。:2006/01/24(火) 16:34:22
> xargsを使用しないのが懸命です。
必死だなw
60名無しさん@お腹いっぱい。:2006/01/24(火) 16:36:45
>>57
HPUXに -0 ってついてますか?
61名無しさん@お腹いっぱい。:2006/01/24(火) 17:51:25
>>57
それが唯一の方法は言い過ぎだろう。
-execを使うという手もある。xargsの出番はなくなるけど。

62名無しさん@お腹いっぱい。:2006/01/24(火) 18:06:21
>>58
GNU coreutilsじゃなくて GNU findutils。

あと、FreeBSDの find xargsは GNUではないけど -print0 -0 が使える。
63名無しさん@お腹いっぱい。:2006/01/24(火) 18:39:18
-execって毎回プロセス起こすんじゃないの?
それがなければxargs使わないけど。
64名無しさん@お腹いっぱい。:2006/01/24(火) 18:44:59
>>38
検索結果のリストを編集汁る。
65名無しさん@お腹いっぱい。:2006/01/24(火) 19:32:28
>>57
> Solarisのfind/xargsにはこれらのオプションがないため、

あります。
66名無しさん@お腹いっぱい。:2006/01/24(火) 19:37:27
つまり移植性的にも問題無いって事か
テンプレ?
67名無しさん@お腹いっぱい。:2006/01/24(火) 21:12:37
>>65
それいつから?
すくなくとも, 現場で稼働してる
% uname -a
SunOS ns11 5.9 Generic_112233-06 sun4u sparc SUNW,UltraAX-i2
な, マシンでは使えないんだが...
68名無しさん@お腹いっぱい。:2006/01/24(火) 21:41:24
>>65
なんてオプション?
69名無しさん@お腹いっぱい。:2006/01/24(火) 21:58:07
>>65
Solaris 10でも無いよ。嘘はイカンよ。
70名無しさん@お腹いっぱい。:2006/01/25(水) 02:40:57
Solarisなんかに移植しようなんて考えなけりゃいいじゃん。
71名無しさん@お腹いっぱい。:2006/01/25(水) 12:27:16
えっとtgzファイルのgrep検索なんですが、
tar Ozxf hoge.tgz | grep arekore
とかやってもどのファイルにあったか分からないんで困ってます。
そりゃファイルを展開すればいいけど、また削除するのが面倒です。
tarのオプション`O'はファイルを作らないでSTDINに出してくれるので
これとシェルスクリプトの何か使ってファイル名と行数を出してくれる
ようなことできないでしょうか。

72名無しさん@お腹いっぱい。:2006/01/25(水) 12:34:20
ディレクトリ作って展開してgrepしてディレクトリごと消すスクリプトじゃだめなん?
73名無しさん@お腹いっぱい。:2006/01/25(水) 12:42:53
>>71
tar Ozxvf hoge.tgz 2>&1 |
だと、ファイル名も出てくるから、何とか加工できるかもしれんが、
はげしくtarの実装に依存しそう
74名無しさん@お腹いっぱい。:2006/01/25(水) 12:44:37
hoge.tgzがhoge-1.0/*のアーカイブだとして、

tar Ovzxf hoge.tgz 2>&1 | egrep '^hoge-1.0/|arekore'

くらいで我慢して貰えないか?

perlならArchive::Tar使ってなんとでもなるけども。
75名無しさん@お腹いっぱい。:2006/01/25(水) 23:00:20
>>72, >>73-74
ご返答ありがとうございます。今、帰りますた。
で、実はcygwinでやってまして、まず、以下の環境で>>74さんの
でやってみたのですが、何にも出てこなかったっす。
~$ tar --version
tar (GNU tar) 1.15.1
~$ egrep --version
egrep (GNU grep) 2.5.1
でもって>>72さんのでやればいいことに気づきました。ってか、
それは気づいていたんですけどやりたくなかったんですが…
76名無しさん@お腹いっぱい。:2006/01/27(金) 00:49:24
情報小出し野郎登場。以後スルーでよろしく>みなさま
77名無しさん@お腹いっぱい。:2006/01/27(金) 19:29:46
command1 && command2 || command3
と書いた場合の挙動ってどのシェルも同じ?
78名無しさん@お腹いっぱい。:2006/01/27(金) 19:53:02
command1,command2,command3がすべて実行されることを期待しても良いか、ということ?
79名無しさん@お腹いっぱい。:2006/01/27(金) 20:11:06
>>77
どのシェルも同じ。

>>78
すべて実行されるわけないだろ。
80名無しさん@お腹いっぱい。:2006/01/27(金) 21:24:44
>>79
command2 が偽を返したらすべて実行されるんじゃないか?

>>77
どのシェルも同じかどうかはシェルを特定しないと答えようがないな
変な仕様の独自シェルだってありえるし
81名無しさん@お腹いっぱい。:2006/01/27(金) 21:34:04
>>80
□お約束
・特記なき場合はbourne shがデフォルトです。

「無条件ですべて実行される」わけないだろ。
82名無しさん@お腹いっぱい。:2006/01/27(金) 21:50:02
> どのシェルも同じ?
という質問にそれはないだろ。
83名無しさん@お腹いっぱい。:2006/01/27(金) 22:16:00
command1 && command2 || command3 と書いたときに、|| がcommand1の結果
を見るのか、command2 の結果を見るのか、っていうのがシェルごとに違うか?

っていう質問ならば「違わない」。
84名無しさん@お腹いっぱい。:2006/01/27(金) 22:42:33
>>83
|| がcommand1の結果を見るのは実験してわかったのですが、manual を読んで
もきちんと書かれていないように見えます。私の読みかたが甘いのでしょう
か?
85名無しさん@お腹いっぱい。:2006/01/27(金) 22:44:29
はひ?
86名無しさん@お腹いっぱい。:2006/01/27(金) 22:48:25
&&や||はshort cut operatorってやつ。
右項を評価するかどうかは、左項の値による。
Cとおんなじ。
87名無しさん@お腹いっぱい。:2006/01/27(金) 22:51:33
N88 BASICでもおんなじだぉ

88名無しさん@お腹いっぱい。: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なんか実行しないんだよ。
89名無しさん@お腹いっぱい。:2006/01/27(金) 23:09:55
>>88
いや、command2 が実行されないのは不思議ではないです。
command3 が command1 の $? を見るのがどこに書かれているのかなぁと。。
90名無しさん@お腹いっぱい。:2006/01/27(金) 23:23:07
>>89
> command1 && command2 || command3

は、

(command1 && command2) || command3

と同じ。man shの"優先順位"も見れ!

91名無しさん@お腹いっぱい。:2006/01/27(金) 23:24:13
command2を実行してないんだろ。
そしたらcommand1の結果を見るしかないじゃんw

88の例でも、success && success || echo failureなら何もでてないわけで、
command1とcommand2の両方の結果をちゃんと見てるジャン。

実行されないのは不思議ではないとか口ではいっときながら理解してないYo!
92名無しさん@お腹いっぱい。:2006/01/27(金) 23:36:28
>>91
(゚Д゚)ハァ?哲哉してて頭おかしかったようです。。
93名無しさん@お腹いっぱい。:2006/01/27(金) 23:45:30
>論理演算って知ってる?0 && 1も1 && 0も0だろ。
>command1が失敗したらcommand2なんか実行しないんだよ。

x が偽ならば y に関係なく x && y が偽なのは事実だが、
y を評価せずに済ませるかどうかは論理演算とはまったく何の関係もない。
sh を含めほとんどの言語がそう実装されているだけ。
94名無しさん@お腹いっぱい。:2006/01/27(金) 23:54:16
>>93
違います。仕様です。

A && Bは、
if A; then B; fiと同じです。
95名無しさん@お腹いっぱい。:2006/01/27(金) 23:58:12
ますます論理演算と関係ないじゃん。
96名無しさん@お腹いっぱい。:2006/01/27(金) 23:59:32
>>88>>93も間違いを含んでいる。←は真
97名無しさん@お腹いっぱい。:2006/01/28(土) 00:00:55
論理演算って知ってる?0 && 1も1 && 0も0だろ。
(だからshでは最適化してて)command1が失敗したらcommand2なんか実行しないんだよ。

だったらいいんじゃね?重箱の隅つまんね。
98名無しさん@お腹いっぱい。:2006/01/28(土) 00:05:18
sh で command2 が実行されるかどうかの話としてるときに、

>(だからshでは最適化してて)command1が失敗したらcommand2なんか実行しないんだよ。

このカッコの中を省略するのを指摘するのが重箱の隅だというのは
無理がありすぎるだろ。
99名無しさん@お腹いっぱい。:2006/01/28(土) 00:07:00
じゃ、言い方を変えよう。質問してたヤツが納得したのに延々とつまんね(俺含む)
100名無しさん@お腹いっぱい。:2006/01/28(土) 00:09:08
うむ、そのとおりだ。消える。
101名無しさん@お腹いっぱい。:2006/01/28(土) 00:12:28
数学A 「論理と集合」で盛り上がっているスレはここですか?
102名無しさん@お腹いっぱい。:2006/01/28(土) 00:31:51
とりあえず、よいこのみんなは、明日までに
http://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) を読んでくるように。
103名無しさん@お腹いっぱい。:2006/01/28(土) 01:16:46
>>102
そういうお前にはサイエンス社版クヌース4冊の演習問題を宿題として与える
104名無しさん@お腹いっぱい。:2006/01/28(土) 01:38:11
そんなもん死ぬまで終わらんわ
105名無しさん@お腹いっぱい。:2006/01/28(土) 02:12:25
本当に賢いしとはあーだこーだ考える前にカッコでくくっちゃうんだろうけどネ
106名無しさん@お腹いっぱい。:2006/01/28(土) 12:30:10
(command1 && command2) || command3
だと、余分なサブシェルが起動されるから無駄。
command1や2でシェル変数を操作してたら反映されないというバグを生じるし。

{ command1 && command2; } || command3
と、グルーピングにするべき。

もちろん、&&の方が優先順位が高いから、
command1 && command2 || command3
と書いても同じことだけど。
107名無しさん@お腹いっぱい。:2006/01/28(土) 12:35:31
きみたちがプロでないことをはげしくねがうよ。
108名無しさん@お腹いっぱい。:2006/01/28(土) 12:38:08
>>106
> もちろん、&&の方が優先順位が高いから、
そういう問題なん?
109名無しさん@お腹いっぱい。:2006/01/28(土) 12:48:33
そういう問題でない以前に、&& と || の優先度は同じ。
110名無しさん@お腹いっぱい。:2006/01/28(土) 13:23:52
>>109
同じ優先順位だから左側の演算子(&&)の方が優先順位が高いという意味だろ。
あげ足ばっかだな。
111名無しさん@お腹いっぱい。:2006/01/28(土) 13:32:29
>>110
それは優先順位が高いと言わない。
「左に結合する」などが適切な表現。
優先順位は別の概念。
112名無しさん@お腹いっぱい。:2006/01/28(土) 13:38:56
なんだかなぁ・・・
113名無しさん@お腹いっぱい。:2006/01/28(土) 14:08:44
きみたちがプロでないことをはげしくねがうよ。
114名無しさん@お腹いっぱい。:2006/01/28(土) 15:27:48
&&の方が||より優先順位が高いと思っていたヤシ

ノシ
115名無しさん@お腹いっぱい。:2006/01/28(土) 15:57:44
C言語だと本当に && の方が || より優先順位が高い。

shellでも、commandじゃなくて算術式の中なら、
&& の方が || より優先順位が高い。
例: (( 1 || 3 && 0 )) の結果は真になる。
116名無しさん@お腹いっぱい。:2006/01/28(土) 17:27:50
>>115
その例だと. 同一優先順/左結合でも,
1 が真で 3 && 0 を評価しないので
やはり真になるんだが...
117名無しさん@お腹いっぱい。:2006/01/28(土) 17:31:48
同一優先順位左結合だと、
$ echo $(( (1 || 3) && 0 ))
0
でしょ。

$ echo $(( 1 || (3 && 0) ))
1
$ echo $(( 1 || 3 && 0 ))
1
118名無しさん@お腹いっぱい。:2006/01/28(土) 17:32:51
>>116
違います。

仮に同一優先順位左から結合だとすると、
((1 || 3)) が真で、そのあと((1 && 0))が評価されるから偽になる。
119名無しさん@お腹いっぱい。:2006/01/28(土) 17:33:18
ゆとり教育の弊害がここにも!
120名無しさん@お腹いっぱい。:2006/01/28(土) 17:35:10
かぶった。
>>116 は間違い。
>>117 >>118 が正解。
121名無しさん@お腹いっぱい。:2006/01/28(土) 17:36:55
シェルでは普通、0が真なんだが、
算術式の場合は 0が偽になるというのも混乱の元だなぁ。
122名無しさん@お腹いっぱい。:2006/01/28(土) 17:53:51
>>121
0といえば0だけど、シェルの if や while が見るのは終了コードなので
一緒にするのはよくないかと。
確かに紛らわしいんだけど

123名無しさん@お腹いっぱい。:2006/01/28(土) 19:30:50
control operatorの場合、
「終了値が0かそれ以外か」とは考えなくて、
「コマンドが成功するか失敗するか」と考えるから混乱することはない。

status=$? して後で利用する時くらいか。
124名無しさん@お腹いっぱい。:2006/01/28(土) 19:55:20
シェル関数の中で exit 1とか exit 0とか書く時に混乱するだろ。
125名無しさん@お腹いっぱい。:2006/01/28(土) 20:04:21
>>124
言われて気づいたが、不思議なことに全然混乱していない。
126名無しさん@お腹いっぱい。:2006/01/28(土) 20:50:03
>>124
「シェル関数」とわざわざ断っているのはどうして?
exitじゃなくてreturnの間違い?

$ function f () { return 0; }
$ if f; then echo yes; fi
yes

だからね。

それともサブ・シェルでのexitのこと?
127名無しさん@お腹いっぱい。:2006/01/28(土) 21:04:50
わかった上でビミョーに誤りを混入してカキコして釣るのが高度な釣り師。
128名無しさん@お腹いっぱい。:2006/01/29(日) 02:17:33
こりゃおじさん一本取られちゃったな。
129名無しさん@お腹いっぱい。:2006/01/30(月) 15:03:32
じいさんめんご
130名無しさん@お腹いっぱい。:2006/01/30(月) 23:03:48
シェルで 少数を使った計算はできますか? 例えば
for((i=0.1;i<1;i=i+0.1)){
echo $i
}
のような感じです。
131名無しさん@お腹いっぱい。:2006/01/30(月) 23:07:49
シェルってゆうな。クズ。
132名無しさん@お腹いっぱい。:2006/01/30(月) 23:07:59
>>130
for文で小数使うな
133名無しさん@お腹いっぱい。:2006/01/30(月) 23:13:14
まあそんなことをしたくなったらperlやrubyってのが普通だな。

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
134名無しさん@お腹いっぱい。:2006/01/30(月) 23:16:05
意地でも sh と sed と awk だけで問題を片付ける、それが男道
135名無しさん@お腹いっぱい。:2006/01/30(月) 23:18:05
cutはダメ?
136名無しさん@お腹いっぱい。:2006/01/30(月) 23:18:40
>>130
場合によっては bc 使う
$ for i in $(seq 10); do echo "$i/10.0" | bc -l; done
137名無しさん@お腹いっぱい。:2006/01/31(火) 00:02:15
>>136
seqは小数点使える奴が多いんじゃまいか

$ seq 0.1 0.1 1
0.1
(ry
0.8
0.9

それから、seq 9な。
138名無しさん@お腹いっぱい。:2006/01/31(火) 00:02:59
>>134
そう言うときは「漢」という字を使え
139名無しさん@お腹いっぱい。:2006/02/01(水) 02:29:09
>>131
シェルで良いんじゃないか?
140名無しさん@お腹いっぱい。:2006/02/01(水) 02:50:13
>>138
sedやawkも使わず、変数の展開だけでがんばれるようになったらな。
141名無しさん@お腹いっぱい。:2006/02/01(水) 03:50:40
>>131
>>130 はシェルスクリプトのつもりで言ってるかも試練が
この場合はむしろシェルの方が正しいだろ
142名無しさん@お腹いっぱい。:2006/02/01(水) 06:08:56
少数っていうな、が正しい
143名無しさん@お腹いっぱい。:2006/02/01(水) 08:05:31
○ シェルで〜〜する
○ シェルスクリプトで〜〜する
× シェルを書く
○ シェルスクリプトを書く
144名無しさん@お腹いっぱい。:2006/02/01(水) 08:24:37
中等レベル
× 〜というシェルが動かない
145名無しさん@お腹いっぱい。:2006/02/01(水) 11:37:12
>>143
> × シェルを書く
だからぁ...
% vi lex.l
% vi parse.y
% vi main.c
...
% vi Makefile
% make
てな作業の事なので無問題

>>144
> × 〜というシェルが動かない
"〜" が sh とか bash とか csh とか tcsh とか zsh とか scsh とか...
だったら無問題
146名無しさん@お腹いっぱい。:2006/02/01(水) 11:44:17
>>145
そんなんできるやつには○とか×とか言わんよ。
147名無しさん@お腹いっぱい。:2006/02/01(水) 12:07:19
どーでもいーな
148名無しさん@お腹いっぱい。:2006/02/01(水) 12:43:26
>>145
まあ、プロンプト % で書く香具師は、何言っても説得力が無いわな。
149名無しさん@お腹いっぱい。:2006/02/01(水) 22:48:40
>>148
プロンプトが常に # の奴もちょっと嫌だな。w
150名無しさん@お腹いっぱい。:2006/02/01(水) 23:15:19
プロンプトが$な漏れは勝ち組。
151名無しさん@お腹いっぱい。:2006/02/01(水) 23:30:14
# な俺は神
152名無しさん@お腹いっぱい。:2006/02/01(水) 23:36:25
zshはプロンプトが%
153名無しさん@お腹いっぱい。:2006/02/02(木) 00:27:25
> な人
154名無しさん@お腹いっぱい。:2006/02/02(木) 01:09:25
書くとき、プロンプトは、% が分かりやすいと思う
# はコメントみたいだし、$ は変数と紛らわしい
155名無しさん@お腹いっぱい。:2006/02/02(木) 04:09:38
ok ■
156名無しさん@お腹いっぱい。:2006/02/02(木) 04:43:51
how many files ?
157名無しさん@お腹いっぱい。:2006/02/02(木) 06:00:56
plan9のは%だよ。
158名無しさん@お腹いっぱい。:2006/02/02(木) 09:01:45
シェルを書いている
スーパーハッカーが集うスレッドはここですか?
159名無しさん@お腹いっぱい。:2006/02/02(木) 09:59:11
いやシェルって普通のCUIのプログラムだし、ハッカーとかそんな凄いもんじゃないし
160名無しさん@お腹いっぱい。:2006/02/02(木) 10:05:14
ポカーン、というAAが辞書に有ったら、今それを使っていたと思う
161名無しさん@お腹いっぱい。:2006/02/02(木) 11:29:17
>>159
シェルを書くには結構な腕が必要なんじゃないか?
おれは、シェルスクリプトは書けてもシェルは書けん。
162名無しさん@お腹いっぱい。:2006/02/02(木) 11:56:11
>>161
システムプログラムの初歩なんで、
やればできるレベルだと思われ。

動かすだけなら結構簡単なので、
大学での演習レベル。
163名無しさん@お腹いっぱい。:2006/02/02(木) 12:00:11
車輪の大発明
164名無しさん@お腹いっぱい。:2006/02/02(木) 12:14:17
リダイレクトとかバックグラウンド程度だけなら簡単だろうけど、
パイプとか、サブシェルとか、ジョブコンとか、環境変数とか、
基本的とはいえかなりのシステムコールの利用経験と、パーザの知識がいるかと。
165名無しさん@お腹いっぱい。:2006/02/02(木) 12:19:32
> パイプとか、サブシェルとか、環境変数とか、

これは簡単だろ。

> ジョブコンとか、

とCtrl-Cでシグナル喰った時のシェルの挙動辺りは
ちゃんとPOSIX規格その他を読んでないと難しいものがある。
少なくともマルチプラットーフォームは無理。

166名無しさん@お腹いっぱい。:2006/02/02(木) 12:28:52
>>165
Posix 互換でなきゃいけないのか?
scsh とか, ぜんぜん Posix 互換じゃないし interactive shell として使おうと
言う気すら起きないが, それでも shell だ.
167名無しさん@お腹いっぱい。:2006/02/02(木) 18:26:02
>>166
165はジョブコンを(ポータブルに)きちんと実装するのに知識が必要だって
ことなんでは。
168名無しさん@お腹いっぱい。:2006/02/02(木) 18:32:17
つうか、シェルスクリプトではジョブコンは使わないって。
元祖B-shにはないし、今時のシェルであっても
非対話モード(シェルスクリプト)で起動されれば
ジョブコンはdisableされるのが普通。
169名無しさん@お腹いっぱい。:2006/02/02(木) 18:46:35
>>164,167,168
ジョブコンゆうなぁ...
いまだに ジョブコン -> JCL とリダクションされる.
170名無しさん@お腹いっぱい。:2006/02/02(木) 19:03:41
>>168
csh, tcshって今でも非対話モードでもジョブコンenblaeされたままなのかな?

大昔、子プロセスにSIGSTOP送ったら、(もちろんkill(1)→killpg(2))
プロセスグループが別で、シェルに制御が戻って、
子プロセス異常終了で、スクリプトが止まったのはビビッた。

>>167
setsid()周辺は古いUNIXも含めると大変だよね。
Emacsにはその辺のレガシーなコードがまだ残っているが。
171名無しさん@お腹いっぱい。:2006/02/02(木) 19:52:26
>>169
ん?null?
172名無しさん@お腹いっぱい。:2006/02/02(木) 20:18:48
>>169
「リダクション」reduction:半減。例:ノイズリダクション

??はて??
173名無しさん@お腹いっぱい。:2006/02/02(木) 20:33:37
リダクションくらいわかれよ。
174名無しさん@お腹いっぱい。:2006/02/02(木) 21:56:42
わかってたまるか。
175名無しさん@お腹いっぱい。:2006/02/02(木) 22:01:46
というか、JCLが分かってないのでは?
176名無しさん@お腹いっぱい。:2006/02/02(木) 22:20:08
Job Control List だろ。
というか、「リダクション」じゃなく、
「リフレクション」と言いたかったのでは、とマジレス。
177名無しさん@お腹いっぱい。:2006/02/02(木) 22:36:05
あぁたくもぉ…
ラムダ計算あたりでは、リダクションってのは、おおざっぱに言って
1/3 + 2/3 -> 1
のように, 複雑な表現から簡約された表現に置き換えることをさします。
おそらく >>169 の頭の中では、ジョブコンよりも JCL の方が簡約された
表現だったんだと思うんですけど…
ちゃうんかい >>169
178名無しさん@お腹いっぱい。:2006/02/02(木) 22:44:28
Lが増えてる分、逆リダクションなのでは?
179名無しさん@お腹いっぱい。:2006/02/02(木) 22:47:01
>>178
それは >>169 に聞いてくれ。おいらの知ったこっちゃない。
ってか、文字数から見ると十分リダクションしてると思う。
180名無しさん@お腹いっぱい。:2006/02/02(木) 22:52:21
音節を考えるとインダクションしてるけど。
181名無しさん@お腹いっぱい。:2006/02/02(木) 23:06:50
>>180
あは…
そう言われるとそうだ。
182名無しさん@お腹いっぱい。:2006/02/04(土) 11:35:02
以下のような utf8 の日本語を吐くスクリプトがあったとして

#!/usr/bin/ruby
require 'kconv'
puts 'あいうえお'.toutf8

以下の出力が異なるのはそーゆーもん? echo 使ったほうが化けちゃうみたい。

#!/bin/sh
./utfout.rb
echo `./utfout.rb`

sh は dash ってやつ(Debian版 の ash みたい、Debian でごめん)。
こんなときは bash 使うべきなんかね(bash なら化けなかった)。
183名無しさん@お腹いっぱい。:2006/02/04(土) 11:58:50
/bin/echo `./utfout.rb`
と勘で回答してみる。
184名無しさん@お腹いっぱい。:2006/02/04(土) 12:11:14
echo "`./utfout.rb`"
185名無しさん@お腹いっぱい。:2006/02/04(土) 12:24:22
>>183,184
あーごめんなさい。どっちも試してたんだけど相変わらず化けたまんまっす。

ちなみに dash は echo は内部に持ってないみたいなのでどっちにしろ
/bin/sh を使ってるみたい。
186名無しさん@お腹いっぱい。:2006/02/04(土) 15:06:52
>>185
> /bin/sh を使ってるみたい。

なにその角度
187名無しさん@お腹いっぱい。:2006/02/04(土) 17:04:37
echoがビルトインじゃない(ここまでは理解できる)
/bin/shを使う(ビルトインじゃないのは丸投げかよ)
でぶの考えは理解できんな。
188名無しさん@お腹いっぱい。:2006/02/04(土) 17:11:31
Debian$ dash -c 'echo どっちにしろ'
どっちにしろ
Debian$ dash -c 'echo `echo どっちにしろ | iconv -f euc-jp -t utf-8`' | iconv -f utf-8 -t euc-jp
どっちにしろ
189名無しさん@お腹いっぱい。:2006/02/04(土) 17:59:06
>>186,187
/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 固有の話っぽい
ので犬板行ってみる。
190名無しさん@お腹いっぱい。:2006/02/04(土) 23:02:43
そもそもピザだし。なぜ先にピザ板いかずにこっちきたのか不明。
191名無しさん@お腹いっぱい。:2006/02/05(日) 11:14:41
ピザ板ってどれのこと?
192名無しさん@お腹いっぱい。:2006/02/05(日) 11:24:27
193名無しさん@お腹いっぱい。:2006/02/05(日) 11:41:24
194名無しさん@お腹いっぱい。:2006/02/05(日) 17:32:59
>>192-193
Thanks
195名無しさん@お腹いっぱい。: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〜

のような感じです。

196名無しさん@お腹いっぱい。:2006/02/06(月) 15:13:47
>>195
sed -n '/10:12/,/10:14/p' logfile

でいいじゃん。
ただし、終了時刻の行は最初の1行のみ出力になるので、
必要ならば終了時刻の1分後を指定すればいい。
197名無しさん@お腹いっぱい。:2006/02/06(月) 15:22:33
返事早っ!!
そか、sedか・・・
初心者ですいません。
さっそくやってみたところできました!
ありがとうございます(*´Д`)
198名無しさん@お腹いっぱい。:2006/02/06(月) 15:39:48
>>195
sed -e '/10:12/,/10:14/! d' logfile
なら終了時刻の調整不要。
199名無しさん@お腹いっぱい。:2006/02/06(月) 15:48:35
嘘だね。
>>198 でも終了時刻の調整は必要。
200名無しさん@お腹いっぱい。:2006/02/06(月) 15:56:20
>>199
すまそ
201名無しさん@お腹いっぱい。:2006/02/06(月) 18:07:02
>>196
sed -n '/10:12/,/10:14/p; /10:14/p;' logfile |uniq
202名無しさん@お腹いっぱい。:2006/02/06(月) 18:18:54
10:12や10:14が抜けていたらどうするかという問題があるので、
簡単にやっつけたかったら、
sed -n '/ 10:1[234] /p;' logfile
が良いと思う。

日付もちゃんとみたいならunix timeに変換して大小比較するperl scriptで。
スレ違いなのでscriptは省略。他にはTime::Periodなど。
203名無しさん@お腹いっぱい。:2006/02/06(月) 18:24:36
grep ' 10:1[234] ' logfile だろ
204名無しさん@お腹いっぱい。:2006/02/06(月) 18:52:52
10:12 から 10:14 だといいんだけど、
10:12 から 12:03 だと >>203>>202 じゃできなくなるんだよな。
205名無しさん@お腹いっぱい。:2006/02/06(月) 21:36:19
シェルでやるのは無理があるよ。
道具は選ばないと。
206名無しさん@お腹いっぱい。:2006/02/06(月) 21:52:03
poka-n...
207名無しさん@お腹いっぱい。:2006/02/06(月) 22:00:39
この程度はシェルでやらなきゃダメだよ。
頭は使わないと。
208名無しさん@お腹いっぱい。:2006/02/06(月) 22:02:38
シェルってゆうな。クズ。
209名無しさん@お腹いっぱい。:2006/02/06(月) 22:04:27
     J
文脈(ry クマー
210名無しさん@お腹いっぱい。:2006/02/06(月) 22:05:52
ここは釣り堀かよ
211名無しさん@お腹いっぱい。:2006/02/07(火) 00:01:31
釣れないクマは、ただのクマだ
212名無しさん@お腹いっぱい。:2006/02/07(火) 00:05:21
世の中には(ry
213名無しさん@お腹いっぱい。:2006/02/07(火) 00:21:28
a=`grep -n '10:12' logfile |sed -n '1 p' |cut -d ':' -f 1`
b=`grep -n '12:03' logfile |sed -n '$ p' |cut -d ':' -f 1`
sed -n "$a, $b p" logfile

いまいち。
214名無しさん@お腹いっぱい。:2006/02/07(火) 01:57:05
実用的なことを考えると、指定時刻の行が必ずあるという前提
でいいのかという話もある
215名無しさん@お腹いっぱい。:2006/02/07(火) 02:37:14
道具を選ぶのも頭の使い方。シェルよりrubyの方が早い。
ruby -ane 'puts $_ if $F[1] >= "10:12" and $F[1] <= "12:03"' logfile
216名無しさん@お腹いっぱい。:2006/02/07(火) 04:19:18
>>215
スレタイ読めよ。
だから ruby 使いはキモいって言われるのに、自覚と学習能力がないらしいな。
217名無しさん@お腹いっぱい。:2006/02/07(火) 04:46:48
スレタイしか読まない人?
218名無しさん@お腹いっぱい。:2006/02/07(火) 06:19:05
>>214
がいしゅつ
219名無しさん@お腹いっぱい。:2006/02/07(火) 23:36:28
シェルってゆうな。クズ。
220名無しさん@お腹いっぱい。:2006/02/08(水) 08:07:34
シェルで書かれた kudzu。
221名無しさん@お腹いっぱい。:2006/02/08(水) 19:47:16
出遅れた...orz

#!/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
222名無しさん@お腹いっぱい。:2006/02/14(火) 00:09:37
sleep
223名無しさん@お腹いっぱい。:2006/02/14(火) 07:28:36
>>222
sleep: too few arguments
Try `sleep --help' for more information.
224名無しさん@お腹いっぱい。:2006/02/14(火) 07:35:08
>>223
GNU sleep うざい。
225名無しさん@お腹いっぱい。:2006/02/14(火) 13:18:06
GNU sleep、通称ぐっすり。
226名無しさん@お腹いっぱい。:2006/02/14(火) 23:11:04
し、知らなかった… おのれの無知を恥じ入るばかりw
227名無しさん@お腹いっぱい。:2006/02/15(水) 00:18:39
$ sleep
usage: sleep seconds
228名無しさん@お腹いっぱい。:2006/02/15(水) 00:25:07
fj.news.usage
229名無しさん@お腹いっぱい。:2006/02/15(水) 00:27:00
GNU grep、通称ググれ
230名無しさん@お腹いっぱい。:2006/02/15(水) 00:46:07
おせちもいいけど、カレーもね
231名無しさん@お腹いっぱい。:2006/02/15(水) 09:28:31
つ [下痢シチュー&たんつぼ茶]
232名無しさん@お腹いっぱい。:2006/02/15(水) 13:19:16
>>228
$ host fj.news.usage
Host fj.news.usage not found: 3(NXDOMAIN)
233名無しさん@お腹いっぱい。:2006/02/17(金) 15:44:20
  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;;   
  ヾ;;;ハ    ノ       .::!lリ;;r゙   シェルプログラミングはダサい…
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f     俺にもありました
   ~''戈ヽ   `二´    r'´:::.
234名無しさん@お腹いっぱい。:2006/02/19(日) 20:42:23
sleep 2d
235名無しさん@お腹いっぱい。:2006/02/20(月) 11:37:55
IPv6アドレス表記の ::1 とかの文字列を、0のバイトを省略せずに、
0000:0000:0000:0000:0000:0000:0000:0001
に変換するシェルって、どこかにありますか?
簡単そうで結構大変なので、、、
236名無しさん@お腹いっぱい。:2006/02/20(月) 11:41:00
シェルキタ
237名無しさん@お腹いっぱい。:2006/02/20(月) 12:43:37
その機能を内蔵しているシェルはあるかってことかな?
238名無しさん@お腹いっぱい。:2006/02/20(月) 12:58:56
>>235
そんな変換は必要ないのがv6アドレスなので自分で作れ。
239名無しさん@お腹いっぱい。:2006/02/20(月) 13:03:06
>>235
シェルじゃないけど。
http://www.routemeister.net/projects/sipcalc/
240名無しさん@お腹いっぱい。:2006/02/20(月) 13:16:29
マッチした回数を元に演算する方法がわかればsedでもできそうな気はするのですが..
頭悪いので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";
241名無しさん@お腹いっぱい。: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";
242名無しさん@お腹いっぱい。:2006/02/20(月) 13:59:16
>(':'
なにこの顔。ふざけてるの?
243名無しさん@お腹いっぱい。:2006/02/20(月) 14:12:10
>>242
ば、いろんなところが顔に見えてきたorz
244名無しさん@お腹いっぱい。:2006/02/20(月) 21:57:12
シェルってゆうな。クズ。
245名無しさん@お腹いっぱい。:2006/02/20(月) 22:25:16
すいません、IPv6アドレス表記の ::1 とかの文字列を、
0のバイトを省略せずに、0000:0000:0000:0000:0000:0000:0000:0001
に変換するエッソって、どこかにありますか?
246名無しさん@お腹いっぱい。:2006/02/20(月) 22:45:34
あぁ、確か4丁目の角。大通りの所ね。
247名無しさん@お腹いっぱい。:2006/02/20(月) 23:59:13
ああ、セルフのところね。
248名無しさん@お腹いっぱい。:2006/02/21(火) 09:45:59
すみませんエッソって何ですか?
新しいシェルでしょうか?
既存のシェルにはどれも不満な点があるので
試してみたいのですがググっても
それらしいものは見つかりませんでした
249名無しさん@お腹いっぱい。:2006/02/21(火) 09:47:44
エッソって今は統合か改名かで、なくなったでしょ。ネタの考証不足だな。
250名無しさん@お腹いっぱい。:2006/02/21(火) 09:59:31
とあるディレクトリの直下だけのiniをフルパス取得したいんですが、
ん〜なんか簡単にできそうでうまくいかないんですよね・・・
一応できるんですが、なんかいまいち強引になるので・・・
教えてください。

/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/の直下に何もないときは何も返さない。
251名無しさん@お腹いっぱい。:2006/02/21(火) 10:31:12
ls /home/usr/ini/*.ini
252名無しさん@お腹いっぱい。:2006/02/21(火) 10:32:06
つnullglob
253名無しさん@お腹いっぱい。:2006/02/21(火) 10:42:36
>>251
それ最初に思いついたのですが、
ls: 0653-341 ファイル /home/usr/ini/*.ini が存在しません。
のようにファイルが存在しない場合実現できません。

>>252
それよくわからんのですが、今の環境じゃ使えなさそうです。
AIX 5.2
254名無しさん@お腹いっぱい。:2006/02/21(火) 10:46:16
>>253
ls /home/usr/ini/*.ini 2>/dev/null
255名無しさん@お腹いっぱい。:2006/02/21(火) 10:49:04
$ ls asdf*wqerty
ls: asdf*wqerty: そのようなファイルやディレクトリはありません
$ bash -c 'shopt -s nullglob; echo asdf*wqerty'

$ bash -c 'shopt -u nullglob; echo asdf*wqerty'
asdf*wqerty

256名無しさん@お腹いっぱい。:2006/02/21(火) 10:53:36
>>254
なるほど。これがシンプルでいいですね。

>>255
ほぉこんなのがあるのですね。
参考にさせていただきます。


こんな質問に答えてくれたかたありがとうございました。
257名無しさん@お腹いっぱい。:2006/02/21(火) 10:56:11
あるいはfindで-depthしていするとか
258名無しさん@お腹いっぱい。:2006/02/21(火) 12:11:34
AIX5.2のfindでdepthが指定できたかどうか、ちと疑問。
259名無しさん@お腹いっぱい。:2006/02/21(火) 12:23:57
find /home/user/ini -name '*.ini' | awk -F/ 'NF == 5 { print $0 }' かな
260名無しさん@お腹いっぱい。:2006/02/21(火) 12:26:51
すいません。
depth の
ディレクトリ本体の前に、ディレクトリの内容を先に評価する。
意味がよくわからんのですが、教えてください。
これで>>250可能なんすか?
261名無しさん@お腹いっぱい。:2006/02/21(火) 12:30:04
きっと-maxdepthの間違いだろ。
-depthはdepth firest search。指定しないとbreadth first search。
262名無しさん@お腹いっぱい。:2006/02/21(火) 13:19:09
アホだろお前。
263名無しさん@お腹いっぱい。:2006/02/21(火) 16:26:10
ホスト名をIPアドレスに変換するシェルを書こうとしていますが、
hostコマンドを使うとしても、CNAMEが絡んでいたりすると
その標準出力の書式が一定せず、かといってdigコマンドでは
無駄な情報が多過ぎて切り出しが大変です。
さらに、bindのバージョンによってもhostやdigの出力が微妙に違うようです。

もっと言うと、DNSに登録されていなくて、/etc/hostsにのみ存在するホスト名でも
IPアドレスに変換したいのですが、となると、host/digコマンドは使えません。

シェルでIPアドレスに変換するには、どうやるのが一般的ですか?
あ、シェルで無理なら、エネオスでもジョモでもいいです。
264名無しさん@お腹いっぱい。:2006/02/21(火) 16:55:22
pingして1行目を加工
265名無しさん@お腹いっぱい。:2006/02/21(火) 20:30:29
なるほど! pingですかぁ、これは意外な盲点でした。。

… という冗談はさておき、本当はどうやるのが一般的でしょうか?
266名無しさん@お腹いっぱい。:2006/02/21(火) 20:36:14
pingして1行目が現実的な希ガス。
でもホスト名−IPアドレスってのは一意に決まらんと思う。
DNSでロビンちゃんしてたらどうするの?
267名無しさん@お腹いっぱい。:2006/02/21(火) 20:47:27
hoge=`ping host | head -1`
だと、実際には2行目以降が出力されて初めてパイプが終了するため、
取得に1秒程度かかってしまいます。
さらに、hostが立ち上がっていなかったり、firewallでpingが閉じられていると
2行目が出力されないため、head -1 が終了しません。
タイムアウトまで待てば終了するでしょうが、これでは使いものになりません。
268名無しさん@お腹いっぱい。:2006/02/21(火) 20:54:03
どうせDNS見にいって時間かかることあるんだから1秒ぐらい待て
ホストのダウン対策は -t 1
269名無しさん@お腹いっぱい。:2006/02/21(火) 21:02:03
苦労してますね。Linuxだと gethostip コマンドで一発なわけだが、
これって標準コマンドじゃないのかな。
270名無しさん@お腹いっぱい。:2006/02/21(火) 21:04:56
# perl -e "print join('.', unpack('C*',gethostbyname 'www' )) "
とか。

ロビンちゃん問題もどうするのか書いてないしどーでもいいけどな。
271名無しさん@お腹いっぱい。:2006/02/21(火) 22:43:24
シェルスクリプトじゃないな
272名無しさん@お腹いっぱい。:2006/02/21(火) 23:06:07
263はシェルを書いてるのであり、シェルスクリプトを書いているわけではない事に注意。
273名無しさん@お腹いっぱい。:2006/02/21(火) 23:44:24
レベル低いなここは。相変わらず。
274名無しさん@お腹いっぱい。:2006/02/22(水) 00:20:34
ほんとお前さえ来なければいいのにな。
275名無しさん@お腹いっぱい。:2006/02/22(水) 00:21:41
getaddrinfoを組み込めっていうのが正解?
276名無しさん@お腹いっぱい。:2006/02/22(水) 00:56:53
BSDのgetaddrinfoはrepository探索順序決め打ちでこれまたいやらしいけどな。
getentがどこにもあれば一番いいと思うけれど。
277名無しさん@お腹いっぱい。:2006/02/22(水) 01:06:47
レベル低いヤツ>>274
278名無しさん@お腹いっぱい。:2006/02/22(水) 02:05:26
>>269
Linux だけど、gethostipインストールされてないです。
ちなみに Debian 3.1 (sarge)。
279名無しさん@お腹いっぱい。:2006/02/22(水) 02:08:37
syslinuxパケージにあるだろ。
280名無しさん@お腹いっぱい。:2006/02/22(水) 02:19:08
>>279
root じゃないので、インストールできません…
281名無しさん@お腹いっぱい。:2006/02/22(水) 02:27:04
SuSE ES9 でも、オプション扱いのようだ。> gethostip
282名無しさん@お腹いっぱい。:2006/02/22(水) 02:28:20
linuxなら、
$ getent hosts www.2ch.net
でええやろ
283名無しさん@お腹いっぱい。:2006/02/22(水) 09:37:48
>>263
俺はこんなの自作して使ってるが。

#!/bin/sh

echo -n "Enter lines to get: "
read lines
iplist=`ssh [email protected] 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
284名無しさん@お腹いっぱい。:2006/02/22(水) 09:45:49
>>283
host じゃ /etc/host 見ないっしょ。
285名無しさん@お腹いっぱい。:2006/02/22(水) 10:54:43
>>282
getent hosts いいですね。glibcの付属コマンドみたいですね。

ただ、getent hostsでは、ごくたまーに、IPv6が登録されてるホストだと、
IPv6だけが引けて、IPv4が(登録されてるのに)引けません。

gethostipだと、IPv6は無視してIPv4のみが引けます。

どうすればいいでしょうか?
286名無しさん@お腹いっぱい。:2006/02/22(水) 11:06:21
仕様を言え。
・/etc/hostsは優先かどうか?
・v4/v6は両方欲しいのか、片方だけか。
287名無しさん@お腹いっぱい。:2006/02/22(水) 11:11:39
/etc/hostsの優先順位は、そのOSの設定(nsswitch.conf)通りにする。
IPv4だけが欲しい。なるべくOS非依存にしたい。です。
288名無しさん@お腹いっぱい。:2006/02/22(水) 11:43:46
うーん、どちらかというと、Perlの仕事かなあ。5.8.0ぐらいの。
バージョンによる差異が無視できるかどうかがポイントか。
RubyでもPythonでもいいんだけど、入ってないことも多いし。
289名無しさん@お腹いっぱい。:2006/02/22(水) 11:55:21
ヒアドキュメントでCで書いておいて、/tmpにコンパイルして実行
290名無しさん@お腹いっぱい。:2006/02/22(水) 12:04:32
商用OSだとコンパイラが入ってないこともあるけど
291名無しさん@お腹いっぱい。:2006/02/22(水) 12:46:20
>>287
ロビンちゃん問題はどうするんだよ!!
292名無しさん@お腹いっぱい。:2006/02/22(水) 13:02:16
キモいから、ちゃんを付けるな
293名無しさん@お腹いっぱい。:2006/02/22(水) 13:07:29
じゃぁクルクルロビン
294名無しさん@お腹いっぱい。:2006/02/22(水) 13:08:03
んじゃこまどり姉妹問題
295名無しさん@お腹いっぱい。:2006/02/22(水) 18:14:50
あるディレクトリの直下で、リンク切れを起こしている
ソフトリンクのみリストアップするシェルって、どう書けばいいですか?
296名無しさん@お腹いっぱい。:2006/02/22(水) 18:18:27
findを駆使しろ。man findから全てが始まる。いい機会だから、
英語に親しんでおけって。
あ、スクリプトじゃなくてシェルを作るのか。bisonやflexについて
調べるのかな。まあどうでもいいことだけど。
297名無しさん@お腹いっぱい。:2006/02/22(水) 18:22:43
シェルって言うな。

find . -type s | while true; do read x; ls -L $x >/dev/null; done | awk '{ print $2 }' | sed 's/:$//'
298名無しさん@お腹いっぱい。:2006/02/22(水) 18:23:13
>>296
find . -type l
や、
find . -follow -type l
ではできないことを確認の上で聞いてます。

ちなみに、英語は得意です。
299名無しさん@お腹いっぱい。:2006/02/22(水) 18:23:56
find . -type s | while true; do read x; (ls -L "$x" >/dev/null) 2>&1; done | awk '{ print $2 }' | sed 's/:$//'
300名無しさん@お腹いっぱい。:2006/02/22(水) 18:25:16
>>297
-type s ってUNIXドメインソケットなんですが、、
それ違うでしょう。
あと、ファイル名に空白があると誤動作するんじゃ困ります。
301名無しさん@お腹いっぱい。:2006/02/22(水) 18:31:50
find 単体でやろうとしてるからできないと思い込むんでしょ。
302名無しさん@お腹いっぱい。:2006/02/22(水) 18:42:08
>298 や >300 が元の質問者(>295)だとして、
ある程度自分でも書いてみたんでしょ? 晒してみなよ。 勇気だしてさ。
303名無しさん@お腹いっぱい。:2006/02/22(水) 18:55:06
シェルってゆうな。クズ。
find . -type l -exec sh -c '[ -e "{}" ] || echo "{}"' ';'
304名無しさん@お腹いっぱい。:2006/02/22(水) 18:57:31
findで-type l -print0して、

#! /bin/sh
ls -L "$1"
if [ $? -ne 0 ]; then
echo "$1"
fi

をxargsで-0 -n 1だな。
305名無しさん@お腹いっぱい。:2006/02/22(水) 19:11:33
ワンポイントアドバイス:
「ここで質問する時は敢えて『シェルを書く』と言うと、回答の食いつきが良い」
急ぎで回答を得たい場合にもお勧め。

φメモメモ。
306名無しさん@お腹いっぱい。:2006/02/22(水) 19:15:06
かなり余計なお世話だが、xargsってわかる? 敢えてそれを
使ってるのは何故だか、理解してる?
知らなくても問題ない。man xargsだ。
307名無しさん@お腹いっぱい。:2006/02/22(水) 19:31:57
お前こそ何書いてんの?
ほのめかし厨さん
308名無しさん@お腹いっぱい。:2006/02/22(水) 19:46:57
-n 1はあれだとか、
-execがあるだろうとかそんなことでしょ。

けどエスケープやエクスパンジョンの泥沼にはまるくらいなら、
xargsはええと思うで。stdinからexecveまでshellを介さんから。
特に空白や日本語や特殊文字のパス名が多い昨今は。
309295:2006/02/22(水) 19:48:22
自己解決しました。
↓これで一発です。
for file in *; do [ -h "$file" -a ! -e "$file" ] && echo "$file"; done

findなどの外部コマンドは使いませんし、
スペース入りファイル名の問題もありません。

釣られて回答をくれた皆さん、釣りには気をつけましょう。
310名無しさん@お腹いっぱい。:2006/02/22(水) 20:24:03
>>309
ln -s /nonexistent .詰めが甘いな坊や
311名無しさん@お腹いっぱい。:2006/02/22(水) 20:34:32
>>310
どう詰めが甘いの?
ln -s /nonexistent . でも、期待通り動作するけど。
312名無しさん@お腹いっぱい。:2006/02/22(水) 20:51:43
ln -s /nonexistent '.だから坊やって呼ばれるんだよ'
313名無しさん@お腹いっぱい。:2006/02/22(水) 21:01:00
>>312
なんだそんなことか。
.で始まるファイルはここでは問題になってないので、、、
必要なら for file in * .* にすればいいだけだし。
314名無しさん@お腹いっぱい。:2006/02/22(水) 21:03:30
>>310
仕様後付けで「期待通り」なんて言っているから坊やなんだよ。
315名無しさん@お腹いっぱい。:2006/02/22(水) 21:10:01
いや、ここでは「ブロークンsymlinkをどうやって判定するか」が質問の
メインであって、それ以外の部分は参考でしかない。(仕様のあと付けではない)

>>310 みたいな突っ込みは本筋以外の部分に突っ込んでるので、
突っ込みとしても、釣りとしても面白くない、詰まり詰めが甘い。
316名無しさん@お腹いっぱい。:2006/02/22(水) 21:15:53
そういうのは直接メールでやってください
317名無しさん@お腹いっぱい。:2006/02/22(水) 21:19:51
はいはい
318名無しさん@お腹いっぱい。:2006/02/22(水) 21:27:23
では次の釣りの方どうぞ。
今度はどんなシェルを書きたいのですか?
319名無しさん@お腹いっぱい。:2006/02/22(水) 21:32:38
いや、これは難解そうな問題の陰に隠されたドットファイルに気が付くかという
引っ掛け問題なので、それ以外の部分は障害物でしかない。(仕様のあと付けではない)
320名無しさん@お腹いっぱい。:2006/02/22(水) 21:38:20
お使いのシステムで symlinks(1) が使えないか調べてみては。
321名無しさん@お腹いっぱい。:2006/02/22(水) 22:20:27
つくづく、UNIX板だけのシェルスクリプトのスレが欲しいとか思うのであった。
それとも、犬の馬鹿が乱入して吠えてるというのは僕の妄想であって、
本当はUNIX板の住人がこうして基地外みたいに吠えてるのでしょうか?
322名無しさん@お腹いっぱい。:2006/02/22(水) 22:34:34
脳内敵も大変だな
323名無しさん@お腹いっぱい。:2006/02/22(水) 22:42:15
アンチLinuxも消えて欲しいよな。んなこと興味ねーし。
324名無しさん@お腹いっぱい。:2006/02/23(木) 00:04:24
犬の馬鹿を排除しても
このスレの馬鹿は半分しか減らないよ。
325名無しさん@お腹いっぱい。:2006/02/23(木) 00:09:18
bashの話になると過剰反応する馬鹿こそ消えて欲しいよ。
すぐに犬糞とか言い出すヤツ。何なのアレ?
326名無しさん@お腹いっぱい。:2006/02/23(木) 00:12:38
よくよく話を聞いてみると実はbashでしたテヘッてのは確かに氏んでほしいがな
327あい:2006/02/23(木) 20:28:26
あるディレクトリから二ヶ月前のファイルは圧縮して削除をするスクリプトを作りたいです。(6か月前の圧縮ファイルは削除)
それとAIXのdateコマンドを使用して二ヶ月前の日付を取得できないでしょうか?
328名無しさん@お腹いっぱい。:2006/02/23(木) 20:51:38
>>327
find で -ctime とか -mtime 指定したんじゃまずいのか?
329名無しさん@お腹いっぱい。:2006/02/23(木) 21:28:29
>>327
2ヶ月前の日付は、TZいじって、
TZ=JST+1431 date でできない?
できなきゃあきらめて GNU dateを入れて date -d '2 months ago'
330名無しさん@お腹いっぱい。:2006/02/24(金) 09:26:45
>>285-287
getentコマンドはSolarisにもあるよ。他のOSでは未確認だけど、
OS依存性を小さくしたいのならgetentでいいんじゃない?
IPv6を設定しているような変態ホストは無視しても問題なし。
331名無しさん@お腹いっぱい。:2006/02/24(金) 09:47:36
1. getent hostsで引く(nss的な検索)
2 host -t aで引く(IPv4オンリー、ラウンドロビン)

1がIPv6なら、2のみ
それ以外、1と2をmerge&uniq

ってスレ違いじゃねえ?
332名無しさん@お腹いっぱい。:2006/02/25(土) 00:40:49
質問させてください。
OpenSSLの自己証明書を作成するときなど
自己証明の入力を促されますが
シェルスクリプトで自動で入力するようにしたいです。
どうやったらできるでしょうか?
ご教授よろしくお願いします。
333名無しさん@お腹いっぱい。:2006/02/25(土) 00:56:49
標準入力から食わせられなければ、
expectスクリプトだな。
334名無しさん@お腹いっぱい。:2006/02/25(土) 01:00:37
>>332
> 自己証明の入力を促されますが

何言ってんだか分からないが、引数で渡せないのか?
それともバカチョンスクリプト、CA使ってんの? 自分でやれ
335332:2006/02/25(土) 01:14:46
>>333
ありがとうございます!
たすかりました!

>>334
?
336名無しさん@お腹いっぱい。:2006/02/25(土) 01:18:55
パスフレーズのことを言っているのか? まあいいけど。
337名無しさん@お腹いっぱい。:2006/02/25(土) 01:40:37
>>332
Ctrl-C Ctrl-V
338332:2006/02/25(土) 01:53:50
すみません。
expect勉強して、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\"
"

これを実行すると何もエラーなく終了するのに
パスワードは変わってません。
どこか間違ってるでしょうか?
よろしくお願いします。
339名無しさん@お腹いっぱい。:2006/02/25(土) 02:07:23
やっぱパスフレーズなのか orz
340名無しさん@お腹いっぱい。:2006/02/25(土) 02:17:33
>>338
>>337は実行したのか?
341名無しさん@お腹いっぱい。:2006/02/25(土) 08:35:39
>>340
「強制終了」と、「コントロールコード1字入力」が、
この文脈で何か関係あるのか?
342名無しさん@お腹いっぱい。:2006/02/25(土) 09:43:13
いや、C-c, C-vといえば普通コピー&ペースト
343332:2006/02/25(土) 10:23:13
#!/bin/sh

expect -c "
set timeout 20
spawn passwd testuser
expect "*password*"
send "test"
expect "*password*"
send "test"
"

expect使ったことないのでよくわからないのですが、こんな感じですよね?
でもこれ実行してもパスワード変わってないのです。
どなたか、ご教授よろしくお願いします。
344名無しさん@お腹いっぱい。:2006/02/25(土) 10:43:49
うぜーよ、examples/autopasswdみろよ。
345名無しさん@お腹いっぱい。:2006/02/25(土) 23:26:59
user $ test.sh &
user $
みたいに&付ければ作ったスクリプトを常駐できるのですが、
&なしで
user $ test.sh
user $
のように&なしで常駐するようなスクリプトはどう書けばいいのですか?
346名無しさん@お腹いっぱい。:2006/02/25(土) 23:32:04
>>345
スクリプトの中で & を付けてコマンドを起動すればいいだけ。
コマンドが複数ある場合は、( ) で囲って最後に &

↓みたいな感じ

(
command1
command2
:
:
) &
347名無しさん@お腹いっぱい。:2006/02/25(土) 23:43:53
できました。
素早い解答ありがとうございます。
348名無しさん@お腹いっぱい。:2006/02/26(日) 10:50:21
呼び出した子プロセスより先に、親コマンドが死んじゃうよ。注意してね。
349名無しさん@お腹いっぱい。:2006/02/26(日) 12:33:09
何を注意しろと?
350名無しさん@お腹いっぱい。:2006/02/26(日) 12:37:53
元質問では「常駐させたい」と言っている。
常駐=daemonという意味なら、むしろわざわざfork()して、
その親が先にexit()するというお決まりのプロセスを踏むのが普通。
ttyやプロセスグループを切り離すためにね。
351名無しさん@お腹いっぱい。:2006/02/26(日) 13:31:14
セッションリーダーはどれになるの?
352名無しさん@お腹いっぱい。:2006/02/26(日) 14:13:04
nohup command &
353名無しさん@お腹いっぱい。:2006/02/26(日) 14:33:07
setsid command

>>351
セッションリーダーであるプロセスって概念はない。
あるプロセスのpidがプルセスグループidになったり、
セッションIDになることがあるだけ。
354名無しさん@お腹いっぱい。:2006/02/26(日) 16:55:21
>>353
は?
355名無しさん@お腹いっぱい。:2006/02/26(日) 18:55:50
「今日から何日前」じゃなくて、
特定の日付のタイムスタンプのファイルを探すシェルはどう書けばいいですか?
356名無しさん@お腹いっぱい。:2006/02/26(日) 19:18:38
開始ディレクトリが現在地点だとして、
1日前なら find . -ctime 1
2日前なら find . -ctime 2
あとはお好みで。 -type f とか。詳しくは man findをどぞ。

357名無しさん@お腹いっぱい。:2006/02/26(日) 19:21:28
>>356
質問をよく読みましょう。試験とかで早合点してケアレスミスするタイプかな?
ちなみに、findでは簡単な方法はないと思うよ。
358名無しさん@お腹いっぱい。:2006/02/26(日) 19:23:00
あ、ほんとだ。ごめんね。
359名無しさん@お腹いっぱい。:2006/02/26(日) 19:34:30
まあ、シェル書きたいってんだから、好きなようにかけばいいんちゃうん?
Cでもなんでも好きな言語使え。
360名無しさん@お腹いっぱい。:2006/02/26(日) 19:48:48
bash
361名無しさん@お腹いっぱい。:2006/02/26(日) 20:06:49
シェルってゆうな、クズ。
362名無しさん@お腹いっぱい。:2006/02/26(日) 20:11:51
>>361
今日も来たね。待ってたよ。
363名無しさん@お腹いっぱい。:2006/02/26(日) 20:15:01
特定の日付と、今日の日付が何日差あるかを求めるシェルを書いて、
それをfindに食わせればいいのかな?
GNU dateなら何とかなりそう。でもめんどくさそう。俺はパス。
364名無しさん@お腹いっぱい。:2006/02/26(日) 20:35:00
touch と組み合わせればできるでしょ。
touch -t 日付 /tmp/start
touch -t その翌日 /tmp/end
find . -newer /tmp/start \! -newer /tmp/end -print
365名無しさん@お腹いっぱい。:2006/02/26(日) 20:43:17
>>364
「その翌日」をどうやって求めるんだよ。
結局dateを使う方法の方が奇麗では? テンポラリファイルも要らないし。
366名無しさん@お腹いっぱい。:2006/02/26(日) 21:29:00
find & ls -dl して探せ。
367332:2006/02/26(日) 21:34:32
#!/bin/bash

expect -c "
set timeout 20
spawn passwd testuser
expect "*password:"
send "test\r"
expect "*password:"
send "test\r"
"
何度もすみません。
これ実行してもパスワード変更されません。
なぜ教えていただけないのかもわかりません。
難しすぎてわからないから教えていただけない?
簡単すぎてバカらしいから教えていただけない?
どちらなのでしょうか?
よろしければ、expectの使い方おしえてください。
よろしくおねがいします。
368名無しさん@お腹いっぱい。:2006/02/26(日) 21:39:43
>>355

↓ほれ。こんなんでどう?

arg=2005-01-23 # 探したい日付

days=`expr \( \`date +%s\` - \`date +%s -d $arg\` \) / 60 / 60 / 24`
find . -daystart -mtime $days


↑ ` ` が2重にネスティングしてるので注意してね。
369名無しさん@お腹いっぱい。:2006/02/26(日) 22:04:38
> 簡単すぎてバカらしいから教えていただけない?
:-P

まずね、""(ダブルクオーテーション)の中で"(ダブルクオーテーション)を使うなら
\(バックスラッシュ)をその前につけろ。わかったら一度市ね。
エラーメッセージくらいかけ。わかったらもう一度詩ね。
370名無しさん@お腹いっぱい。:2006/02/26(日) 22:12:06
エラーメッセージが出ません、とか泣き言を書くなら最期に
expect eof
しとけ。馬鹿。氏ね。
371名無しさん@お腹いっぱい。:2006/02/26(日) 22:29:14
cシェルのaliasについてヘルプ
.cshrcに下の行を登録して

alias test1 'find \!:1 -name \"\!:2\*\" -print'

test1 dir1 file1 と打つと、
find dir1 -name "file*" -print というコマンドを実行させたいけど、
うまく動かない。どう修正すればいい?
372名無しさん@お腹いっぱい。:2006/02/26(日) 22:33:11
細かいけど、find dir1 -name "file1*" -print な
373名無しさん@お腹いっぱい。:2006/02/26(日) 23:09:12
>>362
代返してくれる親切な人も居る。

>>363
シェルって言うな、クズ。
374名無しさん@お腹いっぱい。:2006/02/26(日) 23:17:01
>>371
cshはスレ違い。
インタラクティブ系もスレ違い。
インタラクティブ系でしか使わないaliasの話もスレ違い。

わかったら帰れ!
375名無しさん@お腹いっぱい。:2006/02/26(日) 23:41:38
bash の厳密な構文規則(BNF とか)と評価規則の書かれた良い資料は
ありませんか?(英語でも構いません)

マニュアルページ
ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html
も詳しいですが、何かスッキリしません。
もっと抽象的に整理された形で、かつ、厳密に書かれたものは無いでしょうか?
376名無しさん@お腹いっぱい。:2006/02/26(日) 23:41:48
>>374
黙れ。一人で勝手に仕切るな。
377名無しさん@お腹いっぱい。:2006/02/27(月) 00:00:17
あらあら
378名無しさん@お腹いっぱい。:2006/02/27(月) 00:24:49
まあまあ
379名無しさん@お腹いっぱい。:2006/02/27(月) 00:29:20
>>375

ソースを見ればいいのでは。
380名無しさん@お腹いっぱい。:2006/02/27(月) 00:52:13
>>379
ソースコードを1から読まずに済むならそれに越したことはありません
マニュアルページはある意味詳細に過ぎて見通しが悪いように思います
381379:2006/02/27(月) 00:54:25
1から読まなくても構文解析している部分などすぐ見つかるだろう。
382名無しさん@お腹いっぱい。:2006/02/27(月) 01:10:33
文法なんてバージョン上がるたびに変わるんだから
そのたびに規則を書き出すやつなんていないだろ。
ソース読むしかないよ。
383名無しさん@お腹いっぱい。:2006/02/27(月) 01:48:36
>> 382
はあ、そういもんですか
言語なんだから仕様ぐらいキッチリ決まっているもんだと思っていたけど
そーいうのがシェルの文化なんかな
でもちょっとした仕様の誤認識とかで致命的な結果を招きかねないのは
困ると思うんだけど
嫌な人は他のスクリプト言語使えって事かな
384名無しさん@お腹いっぱい。:2006/02/27(月) 02:02:15
馬鹿はそろそろお引き取り願えませんかのう。
385名無しさん@お腹いっぱい。:2006/02/27(月) 02:20:59
>言語なんだから仕様ぐらいキッチリ決まっているもんだと思っていたけど

違うな。bashなり犬なりだけに見られる腐れた文化だ。
386名無しさん@お腹いっぱい。:2006/02/27(月) 03:35:19
てかソース読むのもBNF読むのもほとんどかわらんでしょ?
たぶん
387名無しさん@お腹いっぱい。:2006/02/27(月) 06:59:04
sh の仕様なら POSIX あたりで決まってたりしないのかな。
388名無しさん@お腹いっぱい。:2006/02/27(月) 08:04:45
決まってるが、彼が知りたいのはbashの仕様らしいからな。
やっぱソースしかないんじゃね?
389名無しさん@お腹いっぱい。:2006/02/27(月) 10:50:05
>>388
bash について知りたかったのは大抵の環境で対話型シェルの標準になっている
からですが、 sh として起動された場合は POSIX 互換に近くになるようなので
探してみた

ttp://www.opengroup.org/onlinepubs/009695399/

がそれらしい
390名無しさん@お腹いっぱい。:2006/02/27(月) 11:13:41
標準になってるのlinuxぐらいでは?
391名無しさん@お腹いっぱい。:2006/02/27(月) 11:16:45
拡張BNFになっとるがな。> bashのbisonソース
392名無しさん@お腹いっぱい。:2006/02/27(月) 11:33:16
>>390
そういうことにしたいのですね。
393名無しさん@お腹いっぱい。:2006/02/27(月) 11:46:48
>>389
そういう理由ならexplorer.exeについてでも調べた方がいいんじゃまいか。
おそらく最多のユーザ人口を抱える対話型シェルだよ。CUIじゃないけど。
394名無しさん@お腹いっぱい。:2006/02/27(月) 12:41:57
>>389
「sh として起動された場合は POSIX 互換に近くになる」と
マニュアル等には書いてあるが、これはかなり嘘。

実際にはshで起動してもbashとほとんど変わらない。
bashの独自拡張もほぼ全部使えてしまう。
目立った違いは、exportコマンドを引数なしで実行した時の表示が
bashだと declare -xなのが、shで起動すると exportの表示に
変わることくらい。
395名無しさん@お腹いっぱい。:2006/02/27(月) 12:48:02
>>390
Mac OS Xも今のバージョンはbashがデフォルトっぽいです。
2つ前くらいまではtcsh(sh)がデフォでした。

まぁ、私はtcshの方が良いと思うけど。
396名無しさん@お腹いっぱい。:2006/02/27(月) 12:52:49
>>394
やっぱashが漢?

>>395
tcshって少し昔しか知らないんだけど、シェルスクリプトに使うには重くない?
個人的にcsh構文ではまった記憶が多いので、偏見あるかもですが。
397名無しさん@お腹いっぱい。:2006/02/27(月) 13:37:21
cshは捨てってことで。別にこれは偏見でもないような。
398名無しさん@お腹いっぱい。:2006/02/27(月) 13:43:12
今までご苦労様でした! > csh系
399名無しさん@お腹いっぱい。:2006/02/27(月) 22:07:01
(ただし対話型シェルとしての使用を除く)
400名無しさん@お腹いっぱい。:2006/02/27(月) 22:51:53
教えてください。
Kシェルってファンクション(内部関数)作れるんだよね?
繰り返し処理をそこでやりたいんだけどどうやって記述するの?
401名無しさん@お腹いっぱい。:2006/02/27(月) 23:31:07
対話型としてもウンコ
402名無しさん@お腹いっぱい。:2006/02/27(月) 23:33:01
>>400
繰り返したい処理をC-c C-vで必要な回数コピペする。
403名無しさん@お腹いっぱい。:2006/02/27(月) 23:36:35
対話型ってお話が出来るの?
友達いないから俺もやってみたいな。
404名無しさん@お腹いっぱい。:2006/02/27(月) 23:41:40
スレ違いだが、cshが普及したのは
当時履歴が実装されていた唯一のシェルだったからというのが大きいな。

何でも最初からあったわけではないというお話。
405名無しさん@お腹いっぱい。:2006/02/27(月) 23:56:34
ファイル名補完も csh が最初。
csh でできると知らない人も多そうだけど。
406名無しさん@お腹いっぱい。:2006/02/28(火) 00:03:17
filecってかなりあとになってからついた機能じゃなかったっけ?
newcshの前にあった?
407名無しさん@お腹いっぱい。:2006/02/28(火) 00:23:17
>406
あったんじゃね?

俺的にcsh本が書かれた時代&そっから数年はcsh以外にfilecが使えるシェルなかったし。
しかしあの数年をなかったことにしてもいいとか思っちゃえるのがcshの魔力。

また、数年後にはbashがでてくるわけだけど、当時のUNIX、68000 8MHzとかだと
bashが糞遅いわけなんだ。cshは糞だけどbashはもっと糞というのが当時の認識だろ。

その後tcshやkshもでたが、同様に遅いshellで、俺はずっとcshをつかってた。移行しても
いいと初めて思えたシェルがzsh。それいらいずっとzshだ。
408名無しさん@お腹いっぱい。:2006/02/28(火) 00:24:23
あ、すまね。kshはcsh〜bashの当たりで既にでてた。

407でいってるkshはpdkshね。
409名無しさん@お腹いっぱい。:2006/02/28(火) 00:31:45
重さだけなら、zshはbashに一歩も引けを取ってないだろ。
410名無しさん@お腹いっぱい。:2006/02/28(火) 00:38:14
誰も zsh に触れてないのになぜ突然 zsh が?
411名無しさん@お腹いっぱい。:2006/02/28(火) 00:38:49
いや、最近だと zsh の方が遥かに重いんじゃないかな。便利だけど。
412名無しさん@お腹いっぱい。:2006/02/28(火) 00:52:55
俺もzshだけど、対話的な利用とスクリプティングじゃ要求も違ってくるし、
スレ違いなんで、対話的シェル総合スレでもたててそっちでやってくれ。
413名無しさん@お腹いっぱい。:2006/02/28(火) 00:56:21
そうかなあ。bash起動するだけで数秒かえってこねえって時期に、
zshがでてきて起動すると即帰ってきたからその感動も凄くてねえ。

>410
すまん。単なる俺の過去の経験の暴露だ。
無視してくれ。
414名無しさん@お腹いっぱい。:2006/02/28(火) 01:15:26
newcshナツカシス
415名無しさん@お腹いっぱい。:2006/02/28(火) 01:17:10
>>407
csh本って"UNIX C Shell Field Guide"のこと?
416名無しさん@お腹いっぱい。:2006/02/28(火) 01:18:42
>>413
そんなのprofileの違いだろ。馬鹿か。
417名無しさん@お腹いっぱい。:2006/02/28(火) 01:23:13
>>416
スレチガイだってば。
418名無しさん@お腹いっぱい。:2006/02/28(火) 09:02:57
>>391
> 拡張BNFになっとるがな。> bashのbisonソース
遅レスだけど教えてくれてありがとう。


シェルスクリプトの展開/置換と評価/実行の規則についてなんですが、
一つの入力単位(if などの複合文でなければ1行の「コマンドライン」)ごとに

字句構文解析→(展開/算術式評価/置換)
→(置換の結果生じた入力単位ごとに、字句構文解析→実行)

という流れで実行に移されると解釈していいのかな?
(あまりにも自明なことかもしれませんが…最後の () 内では
展開/置換が生じることはありえない?)
419名無しさん@お腹いっぱい。:2006/02/28(火) 09:44:27
だからソース読めよ。死ねや、ハゲ。
420名無しさん@お腹いっぱい。:2006/02/28(火) 10:19:16
アスキーからでているバイブル、「UNIXプログラミング環境」読みなさい。
bashと同じスタイル(yacc, lex使う)でshell作っているから。

# bison=GNU yacc
421名無しさん@お腹いっぱい。:2006/02/28(火) 10:22:55
あ、lexは使ってねーわ。bashは。
422名無しさん@お腹いっぱい。: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...
423名無しさん@お腹いっぱい。:2006/03/04(土) 23:24:48
sed -e 's/\$PWD/'"$PWD/" -e 's/\$PATH/'"$PATH/" < nanashi.txt
424名無しさん@お腹いっぱい。:2006/03/05(日) 00:06:27
>>422
なんで = の間が開いているの?

PWD="$PWD"
PATH="$PATH"

なら、

$ . nanashi.txt

で終りなのに。
425名無しさん@お腹いっぱい。:2006/03/05(日) 00:08:18
>>422
完全に信頼できるソースから入手したファイルでないならば危険。
ナガタ君のように泣きを見ることになる。
426425: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に食わせる。
427422:2006/03/05(日) 00:56:11
何がやりたいかというと、まー設定ファイルの雛形みたいのを
作りたいんですよ。例えば、httpd.conf であれば、
httpd.conf.in ってのを作って、中に
ServerRoot "$PWD/testroot"
とか書いておいて展開したいという。
やっぱ sed ですかねぇ
428名無しさん@お腹いっぱい。:2006/03/05(日) 00:58:20
なんで sed じゃだめなん?
429422:2006/03/05(日) 01:10:43
いや、環境変数展開なんだからシェルスクリプトでやったほうが
簡単にできるのかな、と妄想してみただけです。
ちなみに >>423 さんのだと、$PWD を展開した結果に
スラッシュが含まれているからダメっぽいです。
sed -e 's#\$PWD#'"$PWD#" nanashi.txt
とりあえずこんな感じにしてみます
430名無しさん@お腹いっぱい。:2006/03/05(日) 01:12:53
cppやm4が古典的定番
431名無しさん@お腹いっぱい。:2006/03/05(日) 03:36:54
awkもわるれるなとアホが言ってます!><
432名無しさん@お腹いっぱい。:2006/03/05(日) 08:38:50
autoconf使えばいいのに…
433名無しさん@お腹いっぱい。:2006/03/05(日) 08:46:33
linuxでしかノートラブルで動かねえautoconfなんか意味ねえ。
autoツール使いたがる気違いは絶滅すればいいのに。
434名無しさん@お腹いっぱい。:2006/03/05(日) 12:08:57
autoconf を利用しているパッケージの問題を、autoconf 自身の
問題と混同しているのね。
シェルスクリプトのことをシェルと言ってるやつと同じレベルだな。
435名無しさん@お腹いっぱい。:2006/03/05(日) 12:31:46
autoツール
436名無しさん@お腹いっぱい。:2006/03/05(日) 13:22:06
>>434 あほー
互換性が無い事をチェックできないカタワなシステムと
それを有り難がって使ってる気違いの事だよ。
437名無しさん@お腹いっぱい。:2006/03/05(日) 21:54:00
436がその気違いの書くソフトウェアを使わずに生きていけばいいだけじゃん。
438名無しさん@お腹いっぱい。:2006/03/05(日) 22:21:01
>>436
autoconf はマジでなんでもチェックできるぞ。
互換性が無い事をチェックできなかったとしたら、それは autoconf じゃなくて
configure.in/configure.ac を書いた奴のせい。
おまいがやってるのは、シェルスクリプトのバグに対して、シェル自体に文句
を言ってるようなものだ。
439名無しさん@お腹いっぱい。:2006/03/05(日) 22:28:30
>>438
他スレで見つけたのだが、古いOSだと ./configureが動かないことがあるらしい。
(以前は動いたが、autoconfの新しいバージョンで動かなくなったらしい)
ソフト側が悪いんじゃなく、autoconf側が悪いようだよ。

http://pc8.2ch.net/test/read.cgi/unix/1139155618/311
440名無しさん@お腹いっぱい。:2006/03/06(月) 00:20:21
そんな黒塗りメールをよく信じる気になったな。
441名無しさん@お腹いっぱい。:2006/03/06(月) 07:14:29
>>436
configure.in/configure.acを正しく書かなければ、まともに動くconfigureを
生成できないautoconfというヘタレなシステムを批判しているのだ。
442名無しさん@お腹いっぱい。:2006/03/06(月) 09:56:56
Cコンパイラも否定されそうです
443名無しさん@お腹いっぱい。:2006/03/06(月) 10:28:38
これがFreeBSD厨というやつか
444名無しさん@お腹いっぱい。:2006/03/06(月) 11:23:56
FreeBSDをばかにするな!
2ちゃんねるもyahooもSonyJapanもlivedoorもFreeBSD
445名無しさん@お腹いっぱい。:2006/03/06(月) 12:55:05
>>442
Cコンパイラと比べるな。機械語と比べるのがふさわしい。
446名無しさん@お腹いっぱい。:2006/03/06(月) 22:44:08
>>441
筋道のとおった議論をしなければ話を聞いてくれない
掲示板というシステムも批判したらいかがですか?
447名無しさん@お腹いっぱい。:2006/03/06(月) 23:41:11
>>444
全部、ダメサイトばかりじゃないかよ。
448名無しさん@お腹いっぱい。:2006/03/07(火) 00:00:39
ねたにまじれすfreeかこわるい
449名無しさん@お腹いっぱい。:2006/03/07(火) 00:19:36
>>441
おまえ超面白い。
450名無しさん@お腹いっぱい。:2006/03/07(火) 14:58:09
重複する文字列を統合するやり方を教えてくだされ

@aaa.com
@hoge.net
@foo.bar
@aaa.com
@foo.bar



@aaa.com
@hoge.net
@foo.bar

と言うように、重複した文字をまとめたいんです。
451名無しさん@お腹いっぱい。:2006/03/07(火) 15:00:03
sort して uniq したら?
452名無しさん@お腹いっぱい。:2006/03/07(火) 15:20:16
sort -u
453名無しさん@お腹いっぱい。:2006/03/07(火) 15:44:42
>>451
>>452

シェルスクリプトではなく、普通のコマンドで出来たのね(^_^;

感謝!
454名無しさん@お腹いっぱい。:2006/03/07(火) 16:12:32
sort するから表示順序が変わるけど、そこは大丈夫?

$ cat << _EOF_ | sort -u
> @aaa.com
> @hoge.net
> @foo.bar
> @aaa.com
> @foo.bar
> _EOF_
@aaa.com
@foo.bar
@hoge.net
455名無しさん@お腹いっぱい。:2006/03/07(火) 16:38:26
順序が変わるのがいやなら

awk '{if (!seen[$0]++) print}'

とかな。
456名無しさん@お腹いっぱい。:2006/03/07(火) 22:36:41
一工夫すれば順番を維持する事も可能。

cat -n | sort -k 2 -u | sort -n | cut -f 2-
457名無しさん@お腹いっぱい。:2006/03/07(火) 23:44:45
普通のコマンドとやらもスクリプトの一種。
458名無しさん@お腹いっぱい。:2006/03/07(火) 23:54:31
えーっと…
459名無しさん@お腹いっぱい。:2006/03/07(火) 23:59:45
そっとしといてやれ。
460名無しさん@お腹いっぱい。:2006/03/08(水) 08:15:14
>>456
そのアイデアはいいな。
前に同じような作業したときは、
perl で一度出てきた行を記憶しておくという
非常に馬鹿正直なやり方をしてた。
461名無しさん@お腹いっぱい。:2006/03/08(水) 08:40:08
やっていることは、たいしてかわらんだろ。
462名無しさん@お腹いっぱい。:2006/03/08(水) 11:04:57
(´・ω・)
463名無しさん@お腹いっぱい。:2006/03/08(水) 11:12:40
(内部)sortは全部抱え込む必要があるので、
>>455>>460の方がメモリに抱える行は少ないわけだが…
464名無しさん@お腹いっぱい。:2006/03/08(水) 11:13:44
ただ>>456は応用の効く方法ではあるけどな。
465名無しさん@お腹いっぱい。:2006/03/08(水) 11:16:55
>>463
メモリとか気にするなら
シェルスクリプト使わないよ。
多少実行時のパフォーマンス悪くても
さくっと作れる方重視でいいじゃん。
466名無しさん@お腹いっぱい。:2006/03/08(水) 12:24:04
>>455が簡潔だよな。
467名無しさん@お腹いっぱい。:2006/03/08(水) 12:25:35
実際に応用が利くのは、awkとかsedだよな。
468名無しさん@お腹いっぱい。:2006/03/08(水) 12:27:31
プログラミング言語だしなw> awk
469名無しさん@お腹いっぱい。:2006/03/09(木) 00:56:08
シェルスクリプトなんていまやじじいどもの暇つぶしなんだから
効率なんか気にするな。
470名無しさん@お腹いっぱい。:2006/03/09(木) 01:02:26
若者はそう呟きながら、sh なら5行で書けることを実現するために
perl のモジュールのインストールをはじめるのであった。
471名無しさん@お腹いっぱい。:2006/03/09(木) 01:18:58
>>469を援護するつもりはないけど
perlのモジュールならWinでもつかえるな、、、とか言ってミルク
472名無しさん@お腹いっぱい。:2006/03/09(木) 01:35:23
>>470
ボケ老人乙。

その5行で書けて、perlにモジュールが存在する具体例を
挙げてみようね。

口から出まかせはやめよう。お前のようなやつの年金を払っているかと
思うと反吐が出そうになる。
473名無しさん@お腹いっぱい。:2006/03/09(木) 01:45:30
その勢いで、ちょっと考えてみれば良いのに…
474名無しさん@お腹いっぱい。:2006/03/09(木) 02:09:18
エロ画像のダウン用だ。4行しかなかったから適当に改行してくれ。
while 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か。生活保護費もよろしくな。
475名無しさん@お腹いっぱい。:2006/03/09(木) 02:56:35
grepやegrepで、検索文字列を囲むときに、
ダブルコーテーション使ったりシングルコーテション使ったりいろいろみたいなのですが、
どちらが正しいとかはありますか?
476名無しさん@お腹いっぱい。:2006/03/09(木) 03:04:45
ない。
477名無しさん@お腹いっぱい。:2006/03/09(木) 03:05:17
>>475
シングルとダブルでは展開される要素の種類が全然違う。
正しいとかじゃなくて用途で使い分けるもの。
478名無しさん@お腹いっぱい。:2006/03/09(木) 07:26:44
>>475
あえて「どちらが正しい」というなら、
シングルクォートが正しい。
検索文字列などの中で、シェル変数の展開等が必要ないのに
ダブルクォートで囲ってあるのはバグの誘発になるのでやめた方がいい。

シングルクォートで囲っておけば、
シングルクォート自身以外はすべてシェルの解釈を避けられる。
479名無しさん@お腹いっぱい。:2006/03/09(木) 08:38:11
>>474
その手の話は専用スレがあるよ。

連番のH画像/動画を一気にダウンロードする2
http://pc8.2ch.net/test/read.cgi/unix/1135533382/
480名無しさん@お腹いっぱい。:2006/03/09(木) 09:41:23
>>474
おいおいwgetなんて使うなよ。無理してシェルスクリプト使って破綻してる例だな。

perl使った方がほぼ全ての点で優ってる。
481名無しさん@お腹いっぱい。:2006/03/09(木) 18:17:37
>>474
ちょっと添削。
「while ! コマンド」
という書き方は bashを含む一部のシェルでしか使えない。
「until コマンド」
と書いた方がいい。

あ、
$(basename $url)
も突っ込みたいが、またの機会に・・


>>480
shellで書いた方が頭がいい。>>474 は別に破綻していない。
何でもperlで書くのは良くない。
482名無しさん@お腹いっぱい。:2006/03/09(木) 18:20:02
>>481
なんで perl で書いちゃいかんの?
483名無しさん@お腹いっぱい。:2006/03/09(木) 19:44:28
最近、国語能力低い人多いね。

【設問1】
>>481 が、なぜperlで書くと良くないと言っているか、
本文中の言葉を使って書き出せ。(5点)
484名無しさん@お腹いっぱい。:2006/03/09(木) 19:48:54
強いて言えば>>474は毎回wgetプロセスを起動させているために、毎回
DNSルックアップとconnectを行ってしまうのはあまりよろしくないかも
知れない。
485名無しさん@お腹いっぱい。:2006/03/09(木) 20:05:08
>>484
DNSはcacheしてるから無問題。
486名無しさん@お腹いっぱい。: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のように出力させたいのです。

どうすればよいのか、よろしくご教授お願いします。
487名無しさん@お腹いっぱい。:2006/03/09(木) 22:57:19
>>486
` ` で囲まれた中の \ は要注意。

$ aaa=`echo 'NAME=$HOST' | egrep 'NAME=\\$HOST'`
$ echo "$aaa"
NAME=$HOST

期待される結果。
488名無しさん@お腹いっぱい。:2006/03/09(木) 23:06:04
>>487
紙さま!!
ありがとうございます!!!
489名無しさん@お腹いっぱい。:2006/03/09(木) 23:10:07
展開のdebugには
#! /bin/sh -x
を推奨。
490名無しさん@お腹いっぱい。: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」だけを書き込むにはどうしたらいいでしょうか?
よろしくお願いします。
491名無しさん@お腹いっぱい。:2006/03/10(金) 07:29:08
>>490
そもそも、外部ファイルの IP=111.222.333.444 に、
もともと ^M が付いているのが原因なので、
UNIXファイルとしてエディットして ^M を付けないのが正しい解決法だが、

どうしてもシェル側で ^M を取りたいなら、
外部ファイルを . で読んだ後で、

IP=`echo $IP | tr -d '\r'`
を実行してから cat 以下を実行すれば良い。
492名無しさん@お腹いっぱい。:2006/03/10(金) 07:43:37
>>491
ありがとうございます!
感謝感謝!
493名無しさん@お腹いっぱい。:2006/03/10(金) 09:44:51
物凄いレベルの低さだなw
494名無しさん@お腹いっぱい。:2006/03/10(金) 09:55:47
( ´∀`) オマエモナー
495名無しさん@お腹いっぱい。:2006/03/10(金) 10:50:22
>>491
というか、シェルスクリプト自体が^M付きなんだろ?

cat << EOF > /home/test.txt^M
ip='${IP}'^M
EOF^M
496名無しさん@お腹いっぱい。:2006/03/10(金) 12:10:49
>>495
いや、それだと #!/bin/sh^M で動作しないし、
test.txt^Mを読むにも苦労するはずだから、
そういうわけではないはず。
497名無しさん@お腹いっぱい。:2006/03/10(金) 12:12:55
>>495
あ、それに、EOF^Mになるから、cat自体が終了しないじゃないか。
よって、シェルスクリプト自体には ^Mが付いていない、が正解。

IP=を書いたファイルのみ ^M が付いていると思われ。
498名無しさん@お腹いっぱい。:2006/03/10(金) 15:53:04
みんなイジワルですねw
499名無しさん@お腹いっぱい。:2006/03/10(金) 15:58:36
dos2ux ハァハァ
500名無しさん@お腹いっぱい。:2006/03/10(金) 16:55:47
しかし cat が ^Mつけるってのも解せない話だよなあ。
501名無しさん@お腹いっぱい。:2006/03/10(金) 17:13:53
>>500
catが ^Mを付けてるんじゃなくて、
ヒアドキュメントの $IPが展開される時、
シェル変数IPの中には、もともとの別ファイルにあった ^Mが入っているので、
これがそのまま展開されるという話だろ。

というか、>>492 で解決したって言ってるんだから、
それ以上言うことないだろ。
502名無しさん@お腹いっぱい。:2006/03/10(金) 17:24:12
まぁ茶でも飲めや( ゚Д゚)⊃旦旦旦旦旦
503名無しさん@お腹いっぱい。:2006/03/10(金) 22:22:02
解決したことをうだうだ言っても仕方ないけど…

> IP=111.222.333.444

こんなIPアドレスNEEEEEEEEEE!
504名無しさん@お腹いっぱい。:2006/03/10(金) 22:34:03
>>503
例示のためにわざとありえないIPを書いたんだろ。
グローバルなIPを例示したい時、こういう書き方をすることがある。
505名無しさん@お腹いっぱい。:2006/03/10(金) 23:25:40
相変わらずレベル低いなw
506名無しさん@お腹いっぱい。:2006/03/10(金) 23:32:16
( ´∀`) オマエモナー
507名無しさん@お腹いっぱい。:2006/03/11(土) 08:29:05
>>504
>>グローバルなIPを例示したい時、こういう書き方をすることがある。
ねーよ
508名無しさん@お腹いっぱい。:2006/03/11(土) 09:17:20
日本人のパスポート申請書類のサンプルに
アルファベットで外人の名前を書くぐらいにありえないな。

つまり、そういう例示をする奴は度外れて常識がない門外漢。
509名無しさん@お腹いっぱい。:2006/03/11(土) 09:18:14
シェルスクリプトって書けると幸せですか?
510名無しさん@お腹いっぱい。:2006/03/11(土) 09:32:18
時給いくらで働いている派遣は仕事が一瞬で終わってしまうので、不幸になります。
511名無しさん@お腹いっぱい。:2006/03/11(土) 09:48:50
>>507
あるだろ。プライベートIPなら、
192.168.12.34 とか適当に例示して問題ないけど、
グローバルだと、実在する可能性があるので例示が難しい。
だから、わざと256以上のオクテットを含ませておいて例示する。
512名無しさん@お腹いっぱい。:2006/03/11(土) 09:50:47
例示は 192.0.2.0/24 使え。
513名無しさん@お腹いっぱい。:2006/03/11(土) 10:08:50
>>512
それって、RFCか何かで決まってるの?
あと、クラスBやクラスAのアドレスを例示したい時はどうするの?
514名無しさん@お腹いっぱい。:2006/03/11(土) 10:18:00
>>513
RFC3330
今どきクラスなんて使わん。
515名無しさん@お腹いっぱい。:2006/03/11(土) 10:47:46
>>514
今どきCIDRなのは知ってるが、
ナチュラルマスクの関係で、
あえてClass A or Bのアドレスを例示したい時はどうするの?
516名無しさん@お腹いっぱい。:2006/03/11(土) 10:49:58
さぁ?
517名無しさん@お腹いっぱい。:2006/03/11(土) 11:29:58
やれやれ
518名無しさん@お腹いっぱい。:2006/03/11(土) 11:31:46
1バイト目が192だと、ぱっと見192.168と紛らわしいから、
もっとグローバルっぽいアドレスで例示したいというのもあるわな。

RFCもまだ比較的新しいから、example.comに比べてあまり浸透していないと思う。
519名無しさん@お腹いっぱい。:2006/03/11(土) 11:52:33
>>513-515
ためになった…。知らんかった。

ただ、 111.222.333.444 はアレだ。デジャヴ。
某所で俺の嫌いな某コテが使っていたのだが、真似したいとは思わないなあ。
520名無しさん@お腹いっぱい。:2006/03/11(土) 15:28:48
相変わらずレベル低いなw
521名無しさん@お腹いっぱい。:2006/03/11(土) 15:30:34
>>517
村上春樹はパスタでも茹でてろ
522名無しさん@お腹いっぱい。:2006/03/11(土) 15:30:38
( ´∀`) オマエモナー
523名無しさん@お腹いっぱい。:2006/03/11(土) 15:43:33
相変わらずレベル低いなw
524名無しさん@お腹いっぱい。:2006/03/11(土) 16:40:17
オレ的例示用IPアドレスの推奨:

クラスA: 12.345.67.8
クラスB: 132.456.7.89
クラスC: 210.345.6.78

RFCなんかより、これの方がそれっぽくてわかりやすいでしょ。
525名無しさん@お腹いっぱい。:2006/03/11(土) 16:49:28
スレ違いの上に内容も馬鹿
526名無しさん@お腹いっぱい。:2006/03/11(土) 17:02:19
相変わらずレベル低いなw
527名無しさん@お腹いっぱい。:2006/03/11(土) 17:15:51
「相変わらずレベル低いなw 」って言うだけの煽ラーがいますね。





というカキコに対して一言
↓↓↓
528名無しさん@お腹いっぱい。:2006/03/11(土) 17:39:55
死ねや、ハゲ
529名無しさん@お腹いっぱい。:2006/03/11(土) 18:21:47
相変わらずレベル低いなw
530名無しさん@お腹いっぱい。:2006/03/11(土) 18:30:43
>>524
普通の人はそれを見ても、面と向かっては何も言わないだろうけど、
内心はこのスレで付いたレスの様な事を考えてると思うよ。
オイオイ、何だコイツって。

それに、何も知らない初心者が真似したら可哀想だよ。
531名無しさん@お腹いっぱい。:2006/03/11(土) 20:06:07
>>524
このアイデア頂きます。
某製品の取説を担当している者ですが、
WAN側の設定例でのIPで、xxxや***じゃわかりにくいと言われ、
どうしたものかと考えていたところでした。
自社のグローバルIPを使う事も考えましたが、
これも変更の可能性もあるし、使うのはまずいと思っていたところでした。
532名無しさん@お腹いっぱい。:2006/03/11(土) 20:39:59
悪い事言わんから止めとけ。
533名無しさん@お腹いっぱい。:2006/03/11(土) 21:41:49
>>531 はネタだということに気づけ。

って俺はそんな突っ込みなんてしないクマー
534名無しさん@お腹いっぱい。:2006/03/11(土) 22:46:12
IPアドレスをIPなどと呼ぶ時点で…
535名無しさん@お腹いっぱい。:2006/03/11(土) 22:50:16
>>534
そういう指摘は「シェルってゆーな」と同レベル。
536名無しさん@お腹いっぱい。:2006/03/11(土) 22:56:08
そだな。相変わらずレベル低いなw
537名無しさん@お腹いっぱい。:2006/03/11(土) 23:20:32
IPってゆうな。クズ。
538名無しさん@お腹いっぱい。:2006/03/11(土) 23:39:43
>>530
例ならいいじゃん。
実際に振るわけじゃないし。
539名無しさん@お腹いっぱい。:2006/03/11(土) 23:53:01
そだな。相変わらずレベル低いなw
540名無しさん@お腹いっぱい。:2006/03/12(日) 00:05:30
こういう例を挙げとくと、サポセンに「256以上はありえない」という電話が
間違いなくかかってくる。
541名無しさん@お腹いっぱい。:2006/03/12(日) 00:13:26
あと、プライベートアドレスで例示したのに、
「そのアドレスは私が使っているものですから公表しないでください」という
怖いメールが来ることも…
542名無しさん@お腹いっぱい。:2006/03/12(日) 00:31:20
もちろん
「どうして RFC に書いてあるとおりにしないんですかっ!?!?!!!111!!」
というお怒りのメールが来ることもあるのだろうな。
543名無しさん@お腹いっぱい。:2006/03/12(日) 00:44:04
相変わらずレベル低いなw
544名無しさん@お腹いっぱい。:2006/03/12(日) 01:08:35
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモナー
  (    )  \_____
  | | |
  (__)_)
545名無しさん@お腹いっぱい。:2006/03/12(日) 02:42:17
おれは別にレベル低くないよ。
546名無しさん@お腹いっぱい。:2006/03/12(日) 02:57:49
>>541
懐かしいネタだな。
547名無しさん@お腹いっぱい。:2006/03/12(日) 03:32:48
>>538
個人のメモ書き程度なら何も言わんが、人の目に触れる様な所で使うのは止めとけ。
548名無しさん@お腹いっぱい。:2006/03/12(日) 08:46:56
>>540
※注 例として256以上のオクテットを含むIPアドレスを表示しています。

と、同じページに注釈を入れておけば無問題。


>>542
RFCでは192で始まるアドレスなので紛らわしい。
RFC云々を言うものはかなりの上級者なので、
こういう事でいちいち電話しない。
549名無しさん@お腹いっぱい。:2006/03/12(日) 09:43:00
WAN側のインターフェイスが2系統以上ある場合も、
RFCの192.0.2.xxx だけじゃ表現できず、困りますな。
まさか192.0.2.xxxをさらにネットマスクで分けたりしても
例示としてさらに紛らわしくなるだけ。
550名無しさん@お腹いっぱい。:2006/03/12(日) 10:09:42
ここで言われてもなぁ。
RFC 書いたら?
551名無しさん@お腹いっぱい。:2006/03/12(日) 10:36:30
相変わらずレベル低いなw
552名無しさん@お腹いっぱい。:2006/03/12(日) 11:20:32
・∀・)ニヤニヤ
553名無しさん@お腹いっぱい。:2006/03/12(日) 12:28:35
RFCに従う必要なし。
好き勝手にやればいいんだよ。シェア取ったもん勝ちなんだから。
RFCを神みたく崇め奉ってる奴ってバカ。
554名無しさん@お腹いっぱい。:2006/03/12(日) 12:28:54
>>550
RFC書く労力使うくらいなら、語呂のいい数字の組合せで商標登録しますw
555名無しさん@お腹いっぱい。:2006/03/12(日) 12:41:54
中国が独自ドメインを作るとかいってたけど、
あれはRFCに沿ってるの?
556名無しさん@お腹いっぱい。:2006/03/12(日) 12:45:22
>>554
晒しage
557名無しさん@お腹いっぱい。:2006/03/12(日) 14:08:17
>>548
「256以上のオクテット」がそもそも矛盾してないか?
符号無し整数なら 255 までなのに。
558名無しさん@お腹いっぱい。:2006/03/12(日) 14:33:21
相変わらずレベル低いなw
559名無しさん@お腹いっぱい。:2006/03/12(日) 18:17:59
>>557
あり得ないアドレスを例に使うために、どこかを矛盾させなければならないのは当然。
敢えて矛盾させています、という注釈だろ。だからそれはおかしくない。
560名無しさん@お腹いっぱい。:2006/03/12(日) 18:24:03
そこまでしてやる必要が在るのか?
561名無しさん@お腹いっぱい。:2006/03/12(日) 18:48:58
花子さんから太郎くんへパケットを送るには、
太郎さんのアドレス「富.士.見.町」を指定する必要があります。
562名無しさん@お腹いっぱい。:2006/03/12(日) 19:40:16
>>561 の方がよっぽどマシだな。
563名無しさん@お腹いっぱい。:2006/03/12(日) 20:04:33
なんでやねん
564名無しさん@お腹いっぱい。:2006/03/12(日) 20:08:01
こんな感じか

  ホストA       ホストB
   | 富.士.見.町   | 御.殿.場.市
  −+−−−−−−−+−−

    図1 ネットワーク構成の例
565名無しさん@お腹いっぱい。:2006/03/12(日) 20:52:49
ホストクラブばっかだな。
566名無しさん@お腹いっぱい。:2006/03/12(日) 20:58:52
相変わらず気持ち悪いなw
567名無しさん@お腹いっぱい。:2006/03/12(日) 21:00:00
以下のようなcopyというシェルを作りたいので、教えてください。
copy[Enter]とタイプすると、「コピー元ファイル>」と聞いてきて、
ファイル名を入力すると、「コピー先ファイル>」と聞いてきて、
ファイル名を入力するとコピーされます。
「コピー先ファイル>」のところで、ディレクトリ名を入力した場合は、
そのディレクトリの内容が表示されて、再び「コピー先ファイル>」と聞いてきて、
ファイル名を入れると、そのディレクトリにコピーされます。
その他、コピー元ファイルが見つからない場合はエラーメッセージを出して
再び「コピー元ファイル>」と聞きます。

時間がありませんが、明日月曜の朝までにお願いします。
568名無しさん@お腹いっぱい。:2006/03/12(日) 21:02:31
明日の朝までにシェルを作れってさ。
何だいそりゃあ。
569名無しさん@お腹いっぱい。:2006/03/12(日) 21:11:34
シェルの機能がそれだけで良いなら、数時間で作れそうだけどね。
実装言語は C? それとも Perl とか Python とか使って良いの?
570名無しさん@お腹いっぱい。: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"
571名無しさん@お腹いっぱい。:2006/03/12(日) 21:32:56
>>570
それだと、ディレクトリが一旦指定された場合に、そのディレクトリの情報が
サブシェルに渡らないのでは? あと、延々ディレクトリを入力すると
プロセスが増え続ける。

つーか、>>567 に対する答えはひとつ「宿題禁止!!」
572名無しさん@お腹いっぱい。:2006/03/12(日) 22:15:47
板違いだが、「電解コンデンサのことをコンデンサってゆーな」には同意だな。
更には「コンデンサには寿命がある」とか言い出す香具師まで居る始末。
そもそも「電解」コンデンサだけが寿命があって特殊なんだよ。
一般的なセラミックやポリカーボネイトには寿命がなく、半永久で使える。
573名無しさん@お腹いっぱい。:2006/03/12(日) 22:29:20
ネタレスやスレ違いばっかで、たとえ宿題でも >>567 の質問がマトモに見える。
574名無しさん@お腹いっぱい。: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"

宿題って言うより頭の体操かな?
無視したければ、あぼーんしといてよ。
575名無しさん@お腹いっぱい。:2006/03/12(日) 23:29:54
こんな汚いスクリプトはじめて見た
576名無しさん@お腹いっぱい。:2006/03/12(日) 23:39:28
575先生のお手並みを拝見!
577名無しさん@お腹いっぱい。:2006/03/12(日) 23:57:49
>>576
こんな感じで。

富.士.見.0/24でクラスCだから、
ホストA: 富.士.見.町
ホストB: 富.士.見.台
578名無しさん@お腹いっぱい。:2006/03/13(月) 01:56:29
>>576
ということは>>547の汚さには同意したわけだな。
579名無しさん@お腹いっぱい。:2006/03/13(月) 02:36:02
んー、汚いとまでは思わないけど… Perlはもっとひどいよね。

WD設定する前に使ってるところとか、再度ファイル名を聞く処理が抜けてたりして
いい加減だなとは思う。まあ、対話的にファイル名入力させるコマンドなんか
死んでも使わないからどうでもいいけどさあ。
580名無しさん@お腹いっぱい。:2006/03/13(月) 03:53:31
>>567
cp、read、test、echo あたりを使えば出来る。
後は man を見て頑張れ。
581名無しさん@お腹いっぱい。:2006/03/13(月) 08:15:12
再度ファイル名を聞く処理は実装されてるでしょ。再帰してるし。
582名無しさん@お腹いっぱい。:2006/03/13(月) 08:52:56
>>581
コピー元ファイルが存在しなかった時に聞き直す処理が実装されていないようだが・・
583名無しさん@お腹いっぱい。:2006/03/13(月) 09:14:14
$tofileがディレクトリで、再帰して、
再帰実行した自分が失敗して帰った来た時に、cp強行が汚いどす。

$ true && true || echo done
$ true && false || echo done
done

584名無しさん@お腹いっぱい。:2006/03/13(月) 09:15:30
再帰呼出しせずに execすればプロセスは増えない。
さらに、自分をexecするんじゃなく、
whileループの中で、再入力ならcontinueするようにすれば
execする必要もなくなる。
と、ヒントだけ書いておこう。
585名無しさん@お腹いっぱい。:2006/03/13(月) 09:19:09
whileを使う処理が真っ先に思い浮かぶ人間はC出身だと思う。
再帰を使う処理が真っ先に思い浮かぶ人間はLisp出身だと思う。
586名無しさん@お腹いっぱい。:2006/03/13(月) 12:54:27
gotoを使う処理が真っ先に思い浮かぶ人間は(ry
587名無しさん@お腹いっぱい。:2006/03/13(月) 14:21:16
何だ
言ってみろ
588名無しさん@お腹いっぱい。:2006/03/13(月) 15:00:15
真のプログラマ。

「真のプログラマはgotoを恐れない」
589名無しさん@お腹いっぱい。:2006/03/13(月) 15:54:22
ども、後藤です。
590名無しさん@お腹いっぱい。:2006/03/13(月) 15:56:49
どうも倉間です
591名無しさん@お腹いっぱい。:2006/03/13(月) 16:12:04
>>567 の例題で gotoを発想するプログラマはヴァカ。
というか、/bin/shにgotoはないし、break 2以上ができるので
gotoは根本的に排除されている。

まあ、gotoがあるcshみたいなアフォなシェルもあるが・・
592名無しさん@お腹いっぱい。:2006/03/13(月) 16:22:00
遠い昔...

後藤っていう理科の先生が
フィリピンかどっかで自己紹介したら笑われたって
現地の言葉で「後藤=焼きうどん」なんだそうな
593名無しさん@お腹いっぱい。:2006/03/13(月) 16:52:09
ダイクストラ先生のまえで「私の名前は後藤です。」
594名無しさん@お腹いっぱい。:2006/03/13(月) 17:07:56
どうも進野です
595名無しさん@お腹いっぱい。:2006/03/13(月) 17:32:19
>>591
Knuth先生に失礼なヤツだな
596名無しさん@お腹いっぱい。:2006/03/13(月) 17:34:44
csh の利点って何?ただ文法が C ライクってこと?
597名無しさん@お腹いっぱい。:2006/03/13(月) 20:00:43
>>596
ヘボを見分ける指標になる。
598名無しさん@お腹いっぱい。:2006/03/13(月) 21:16:58
hoge1/hoge4.ooo
hoge2/hoge5.ooo
hoge3/hoge6.ooo
これを全て
hoge1/hoge4.ppp_ooo
hoge2/hoge5.ppp_ooo
hoge3/hoge6.ppp_ooo
に変えたいんですが、どうすればいいかわけわかめです。
help me orz
599名無しさん@お腹いっぱい。:2006/03/13(月) 21:18:38
>>598
mv hoge1/hoge4.ooo hoge1/hoge4.ppp_ooo
mv hoge2/hoge5.ooo hoge2/hoge5.ppp_ooo
mv hoge3/hoge6.ooo hoge3/hoge6.ppp_ooo
600名無しさん@お腹いっぱい。:2006/03/13(月) 21:22:27
>>598

for file in hoge*/hoge*.ooo
do
mv $file `echo $file | sed 's/ooo/ppp_ooo/'`
done

>>599
アフォか。
601名無しさん@お腹いっぱい。:2006/03/13(月) 21:29:06
rename 's/\.ooo$/.ppp_ooo/' */*.ooo
602名無しさん@お腹いっぱい。:2006/03/13(月) 21:32:07
sh: rename: command not found
603名無しさん@お腹いっぱい。:2006/03/13(月) 21:43:16
commmand.com みたく ren *.jpeg *.jpg と操作できるようなperlスクリプトあったよね?
604名無しさん@お腹いっぱい。:2006/03/13(月) 21:47:14
あったとしてもスレ違い。あと co"mmm"and.comって何だ?
605名無しさん@お腹いっぱい。:2006/03/13(月) 21:47:20
rename s/jpeg/jpg/ *.jpeg なら
606名無しさん@お腹いっぱい。:2006/03/13(月) 21:49:59
renameの話は犬板でどうぞ。
607名無しさん@お腹いっぱい。:2006/03/13(月) 21:52:22
OS関係ないじゃん
608名無しさん@お腹いっぱい。:2006/03/13(月) 22:01:24
関係あるだろ。
609名無しさん@お腹いっぱい。:2006/03/13(月) 22:02:35
くだ質スレと区別つかなくなってきた
610名無しさん@お腹いっぱい。:2006/03/13(月) 22:11:03
相変わらず
611名無しさん@お腹いっぱい。:2006/03/13(月) 22:12:36
相変わらず給料安いな w
612名無しさん@お腹いっぱい。:2006/03/13(月) 22:13:42
>>604
>mmm
アスキーネットにみたいなホストプログラム?
613名無しさん@お腹いっぱい。:2006/03/13(月) 23:22:45
犬以外でrenameがデフォで使えるOSってあんの?
614名無しさん@お腹いっぱい。:2006/03/13(月) 23:34:03
shiftの反対ってないですか?
スクリプトの最初で、引数で指定された全ファイルが存在することをチェックし、
そのあと各々処理したいんです。
615名無しさん@お腹いっぱい。:2006/03/13(月) 23:45:04
ない
存在チェック関数書いて呼べ
616名無しさん@お腹いっぱい。:2006/03/14(火) 00:05:48
しょんぼり・・・
あったら便利だと思うのに
ありがとうございました。
617名無しさん@お腹いっぱい。:2006/03/14(火) 00:17:49
>>614
shift の反対は無いが

>スクリプトの最初で、引数で指定された全ファイルが存在することをチェック

が目的なら shift 使わなくてもどうにかなるよ。

for i in "$@"
do
[ -e "$i" ] || exit
done
618名無しさん@お腹いっぱい。:2006/03/14(火) 00:30:04
シェルスクリプトってスクリプトのくせに互換性低いな。
619614:2006/03/14(火) 00:35:48
>615,617

そうかfor文かfunction使えばいいのか・・・
ありがとうございます。
620名無しさん@お腹いっぱい。:2006/03/14(火) 07:34:29
>>601,605 のrenameコマンドの文法って、Linuxのrenameコマンドとは違うけど、
どこのrename ? そんなの本当にあるの?
621名無しさん@お腹いっぱい。:2006/03/14(火) 07:37:17
mmm = とらいえむ
622名無しさん@お腹いっぱい。:2006/03/14(火) 08:49:45
>620
perlについてくるぞ。
623名無しさん@お腹いっぱい。:2006/03/14(火) 08:57:46
624名無しさん@お腹いっぱい。:2006/03/14(火) 09:05:15
「Linuxのrename」ってなんだよ
625名無しさん@お腹いっぱい。:2006/03/14(火) 11:59:17
UNIX用のVBscriptは無いかな
あると便利なんだが
626名無しさん@お腹いっぱい。:2006/03/14(火) 12:12:45
627名無しさん@お腹いっぱい。:2006/03/14(火) 12:49:29
>>624
Linuxだと標準で /usr/bin/renameがある。
renameといえば普通これを指す。ちゃんとしたバイナリだし、
perlは無関係だよ。
628名無しさん@お腹いっぱい。:2006/03/14(火) 13:01:34
>>605 は Linuxの/usr/bin/renameだと
rename jpeg jpg *.jpeg
となるようだ。
全く別物の同名コマンドが出回っているようなので、
シェルスクリプトでは使えんな。
(もともと使ってなかったけど)
629名無しさん@お腹いっぱい。:2006/03/14(火) 13:12:49
>>627
一口に Linux って言ってもその辺はディストリによって違うだろ。
Debian の /usr/bin/rename は perl スクリプトだよ。
たぶん >>623 の古い版。
630名無しさん@お腹いっぱい。:2006/03/14(火) 13:17:14
「Linux の rename」じゃなくて
「util-linux の rename」だろうな。
631名無しさん@お腹いっぱい。:2006/03/14(火) 13:22:37
少なくとも Fedora Core 4 と Plamo は、>>628 の文法のバイナリコマンド。
perlではない。RH系とSlackware系が同じだから、他でも同じかと思ったら
Debianでは違うのか。
まあ、そもそもrenameなんて使わないし、どうでもいいけどね。
人に説明する時はどのrenameか断らないと誤解を受けるね。
632名無しさん@お腹いっぱい。:2006/03/14(火) 14:03:01
Debianのutil-linuxにはrenameはない。

俺の環境だと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以外のパケージ見たことないが…
633名無しさん@お腹いっぱい。:2006/03/14(火) 15:00:24
昔から自分で作ったの使ってたので
そういうのあるの知らなかった。
634名無しさん@お腹いっぱい。:2006/03/14(火) 17:20:25
相変わらずレベル低いなw
635名無しさん@お腹いっぱい。:2006/03/14(火) 21:03:04
lwallのrename.pl、relink.pl、そんでもってhakansonのmkshadowdir.plは
俺的には珠玉のperlスクリプト。
636名無しさん@お腹いっぱい。:2006/03/14(火) 22:36:00
初歩的な質問だが、

$cat L1
aaa
bbb
ccc
1
ddd
eee
2

これを
$cat L1
aaa bbb ccc 1
ddd eee 2

に変換する方法教えてくれ〜
637名無しさん@お腹いっぱい。:2006/03/14(火) 22:48:16
while read x; do
if expr "$x" : '[0-9][0-9]*$' > /dev/null; then
echo "$x"
else
echo -n "$x "
fi
done
638名無しさん@お腹いっぱい。:2006/03/14(火) 22:50:20
条件がよーわからん。

変換後が2行になるための条件は?
数字が来たらってこと?
639名無しさん@お腹いっぱい。:2006/03/14(火) 22:52:53
>>636

while read word
do
echo -n "$word "
case $word in [1-9]*) echo;; esac
done < L1
640名無しさん@お腹いっぱい。:2006/03/14(火) 23:02:21
>638
すうじがきたら改行
641名無しさん@お腹いっぱい。:2006/03/14(火) 23:04:08
質問です。

for name in hoge hage
{
 echo $name
}

↑みたいな書き方は bash依存ですか?
なんか、Solarisの/bin/shでも動いてしまうんですけど、
manには記述がありません。(do doneの記述のみ)
642名無しさん@お腹いっぱい。:2006/03/14(火) 23:06:37
cat L1 | tr -d "\n" | sed 's/([0-9]+)[^0-9]/\1\n/g'
643名無しさん@お腹いっぱい。:2006/03/14(火) 23:11:23
>>642
お約束の突っ込み。「catが無駄です」

>>637 >>639 >>642 の中では、外部コマンドを使っていない
>>639 が一番エレガントだな。

あ、>>642って、数字以外のの入力がスペースなしでくっついてしまうんじゃないか?
644名無しさん@お腹いっぱい。:2006/03/14(火) 23:20:08
じゃあついでに

$cat L1
111
222
333
a
444
555
b

これを
$cat L1
111 444
222 555
333 b
a
に変換する方法教えて
645名無しさん@お腹いっぱい。:2006/03/14(火) 23:20:10
>>641
POSIXの仕様によれば、{}は()と同じくcompound-listを構成することができる。
で、for文は"The for loop requires that the reserved words do and done
be used to delimit the sequence of commands"と書いてあって、
「do/doneをつかわなければならない」のかはちょっとわからない。
646名無しさん@お腹いっぱい。:2006/03/14(火) 23:20:29
>>639は行末に余分な空白。
case内で処理した方がいい。
647名無しさん@お腹いっぱい。:2006/03/14(火) 23:29:41
>>645
do doneの代用としての { } と、
compound-list の { } は違うしなぁ。
すると、Solarisとかで forで { } が使えてしまうのって
一種の隠しコマンドみたいなもの?
648名無しさん@お腹いっぱい。:2006/03/14(火) 23:34:12
>>644
それはjoin一発じゃないか?

>>639
数字の後にスペースはいっちゃわね?
649名無しさん@お腹いっぱい。:2006/03/14(火) 23:35:50
>>644
while read word1; do read word2; echo $word1 $word2; done

1行で桶。
650名無しさん@お腹いっぱい。:2006/03/14(火) 23:37:01
>>649
問題欲嫁。
651642 :2006/03/14(火) 23:42:52
じゃ
sed 's/$/ /g' L1 | tr -d "\n" | sed 's/([0-9]+)[^0-9]/\1\n/g' とか。


>>644 はColumnとか使えそう。使ったこと無いので詳しくはまんまん。
652名無しさん@お腹いっぱい。:2006/03/14(火) 23:44:28
>>648
joinじゃ無理じゃない? フィールド一致を見てしまうから。
653642 :2006/03/15(水) 00:09:38
>>644
column -c 20 L1
とかだった。
654sage:2006/03/15(水) 00:16:10
>>652
>>648 はたぶん paste のことを言いたいのだろう
655名無しさん@お腹いっぱい。:2006/03/15(水) 00:49:50
本当にレベル低いなぁ。ここの回答者たちって本業は何?
656名無しさん@お腹いっぱい。:2006/03/15(水) 01:38:18
粘土屋
657名無しさん@お腹いっぱい。:2006/03/15(水) 02:17:30
>>655
馬鹿学生。

とりあえず何ができればレベルが上がったと
定義するのか説明してくれ。
658名無しさん@お腹いっぱい。:2006/03/15(水) 02:19:58
スライムを一撃で倒す。
659名無しさん@お腹いっぱい。:2006/03/15(水) 04:17:58
回答する側に立つなら、
sed一つで済むところを3つもプロセス使うなんて馬鹿げたことはやめてくれよな。
660名無しさん@お腹いっぱい。:2006/03/15(水) 09:28:26
>>657
俺が決める
661名無しさん@お腹いっぱい。:2006/03/15(水) 10:45:13
>>658
お前、スライム一匹にイオナズン使うタイプだろ。
662名無しさん@お腹いっぱい。:2006/03/15(水) 10:54:20
もういいからぜんぶ機械語で書け。
アセンブラ? なに軟弱なことを言ってんの?
663名無しさん@お腹いっぱい。:2006/03/15(水) 11:41:00
なんで厨房はすぐ機械語とかアセンブル言語とか言うんだろう
ハッカーぽい響きがあるせいか?
664名無しさん@お腹いっぱい。:2006/03/15(水) 11:49:32
レベルが高い回答が来ないからレベルが低くなる。

というわけで、レベルが低い、といっている人はどーぞ、そのレベルの高さを示してください。
そのレベルの低さを示すのが関の山だと思うけど(w
665名無しさん@お腹いっぱい。:2006/03/15(水) 12:11:16
機械語?レベル低杉
666名無しさん@お腹いっぱい。:2006/03/15(水) 12:12:41
>>665
レベルの意味が違いすぎ
667名無しさん@お腹いっぱい。:2006/03/15(水) 14:00:21
この程度でプロセスの数とか言ってるバカはどっかいけよ
668名無しさん@お腹いっぱい。:2006/03/15(水) 14:09:23
程度問題じゃなくて、シェル内部コマンドだけでできる奇麗な解があるのに、
あとから外部コマンド(sed/tr)を複数使った解を出してきても
エレガントではない。
669名無しさん@お腹いっぱい。:2006/03/15(水) 14:11:53
エレガントじゃ食ってけないよ
670名無しさん@お腹いっぱい。:2006/03/15(水) 14:33:13
コマンドに食わせるデータが大量でない限り、プロセスの数は無視して
いいんじゃないか。この程度なら。
671名無しさん@お腹いっぱい。:2006/03/15(水) 15:10:37
ちょwwwおm、あwwwwエレガントwwっw
672名無しさん@お腹いっぱい。:2006/03/15(水) 16:19:54
プロセスの数が少ない = エレガントとは限らんだろ
内部コマンドだけでできればどんなに複雑でもエレガントとか言いはじめるやつとは議論にならんな
673名無しさん@お腹いっぱい。:2006/03/15(水) 17:11:31
そりゃ、食うのがやっとの人にきれいなシェルを期待しちゃダメだな。
674名無しさん@お腹いっぱい。:2006/03/15(水) 17:13:14
>>673
シェルって言うなクズ。
675名無しさん@お腹いっぱい。:2006/03/15(水) 18:05:21
プロセス数とか、外部コマンドとか以前の問題として、
>>651 って動かないわけよ。
sedの中で \( \) とすべきところを ( ) で書いてるから。

動作確認してから書き込むのは最低限の回答者のルールだよ。
確かに、こんなシェル書いてちゃ食えないよな。

(先に言っとくけど「シェルってゆーな」の突っ込みは禁止。そろそろ言葉に慣れろ)
676名無しさん@お腹いっぱい。:2006/03/15(水) 18:06:00
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
677名無しさん@お腹いっぱい。:2006/03/15(水) 18:07:55
そろそろシェルスクリプトって言えるようになれよ。
678名無しさん@お腹いっぱい。:2006/03/15(水) 18:13:52
んー、食わせるデータが大量になると、シェルスクリプトじゃいかんかなと
思うこともあるね。sed,awk,grep,findあたりを良く使いまわすんだけど、
重くてしょうがなくなる。まあ高速化は二の次になっちゃうんだけど、
RubyかPerlあたりのスクリプト言語を使うことを、最初に検討した方がいいかも
知れん。

679名無しさん@お腹いっぱい。:2006/03/15(水) 18:58:31
シェルってゆうな。くず。
680名無しさん@お腹いっぱい。:2006/03/15(水) 19:02:06
カレントディレクトリにある、大文字のファイル名を
すべて小文字のファイル名に直したいのですが、
どういうUNIXを打てばいいでしょうか?
681名無しさん@お腹いっぱい。:2006/03/15(水) 19:03:27
こういうの流行ってるの?
682名無しさん@お腹いっぱい。:2006/03/15(水) 19:11:18
シォル
683名無しさん@お腹いっぱい。:2006/03/15(水) 19:30:44
>>680
宿題は自分で考えろ。
684名無しさん@お腹いっぱい。:2006/03/15(水) 19:38:08
「UNIXを打つ」ってすげぇ表現だな
685名無しさん@お腹いっぱい。:2006/03/15(水) 19:51:03
>>680
OS名を書かないと、答えられる人は誰もいないと思います。
686名無しさん@お腹いっぱい。:2006/03/15(水) 19:52:50
いやむしろどのUNIXにするかってい(ry
687名無しさん@お腹いっぱい。:2006/03/15(水) 20:08:51
シェルスクリブトが長すぎるから、略すバカが出るんだよ
で前スレでこの板公認の略称が決まらなかったっけ?
688名無しさん@お腹いっぱい。:2006/03/15(水) 20:26:18
シェルス にしよう
689名無しさん@お腹いっぱい。:2006/03/15(水) 20:33:44
スクリブトってゆうな。クズ。
690名無しさん@お腹いっぱい。:2006/03/15(水) 20:49:26
「UNIXを打ちながらこう考えた…………
…………とかくにシェルは書きにくい。」
691642:2006/03/15(水) 21:35:03
エレガントじゃ無くてすいませんw
趣味でか触ってないのでいつまで経っても初級者から成長しないんですよね。

で、
sed 's/$/ /g' L1 | tr -d "\n" | sed 's/\([0-9]+\)[^0-9]/\1\n/g'
で★キマリッ★
692名無しさん@お腹いっぱい。:2006/03/15(水) 22:43:25
シェルをあぽーんキーワードにすると、、、、、、、、、
693名無しさん@お腹いっぱい。:2006/03/15(水) 23:04:30
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
シェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェルシェル
694名無しさん@お腹いっぱい。:2006/03/15(水) 23:27:45
あぽーんってゆうな。クズ。
695名無しさん@お腹いっぱい。:2006/03/16(木) 03:04:28
シェ…しぇ…シェ………シェ…
…… … …… ……………… … …… … … …シェ… …
696名無しさん@お腹いっぱい。:2006/03/16(木) 03:15:05
>>692
シェイシェイ
697名無しさん@お腹いっぱい。:2006/03/16(木) 12:52:44
春休み期間中なのにもかかわらず平日に書き込みが減るのは、
馬鹿回答をしているのが馬鹿学生じゃなくて馬鹿社会人だからだろうな。
698名無しさん@お腹いっぱい。:2006/03/16(木) 13:35:34
学生でもなく社会人でもありませんよー。
699名無しさん@お腹いっぱい。:2006/03/16(木) 13:48:35
シェルスクリプトで変数TODAYにyymmddを設定したいのですが、
どうやるのか判りません。

yyyymmddの8桁日付なら`date +%Y%m%d`で設定できるのですが、
yymmddで6桁日付だとどうやるのでしょうか?

awkのsubstrという関数を上手く使えればできそうなのですが、

awkの使い方をいまいち理解できてないので・・・・
申し訳ありませんがよろしくお願いします。
700名無しさん@お腹いっぱい。:2006/03/16(木) 13:53:02
>>699
man strftime
701名無しさん@お腹いっぱい。:2006/03/16(木) 14:07:40
>>699
date +%y%m%d でできるよ。yは小文字。
ただし、%yは2000年問題の関係で推奨されない。

>>700
質問欲嫁。この場合 man strftimeしても解決しないだろ。
702699:2006/03/16(木) 15:08:28
701

ありがとうございました。
できました。
すごく単純なコマンドで出来たんですね(汗)

703名無しさん@お腹いっぱい。:2006/03/16(木) 15:50:11
>ただし、%yは2000年問題の関係で推奨されない。

そんなの用途しだいでしょ。
昔のデータなんか扱わないようなところとか。

>質問欲嫁。この場合 man strftimeしても解決しないだろ。

man date するとたいてい strftime(3) を参照と書いてないか?
704名無しさん@お腹いっぱい。:2006/03/16(木) 15:58:12
>>703
man dateしたなら、すでに %y のことは書いてある。
strftime(3)のことは書かれていなかった。
705名無しさん@お腹いっぱい。:2006/03/16(木) 15:58:44
strftime(3)にでてるじゃん
誰だよ,解決しないとか言ってる奴
706名無しさん@お腹いっぱい。:2006/03/16(木) 16:02:45
>>705
strftimeはC言語の関数。
そっちに載っていたとしても、回答としては不適切。
もっとそのものズバリのman dateがあるのだから。
なんでわざわざ遠い回答するの?
707名無しさん@お腹いっぱい。:2006/03/16(木) 16:03:27
「man hoge」厨は、よく確認せずにカキコするため、回答をハズしやすいの法則。
708名無しさん@お腹いっぱい。:2006/03/16(木) 16:06:31
ごめんdateコマンドだったか
709名無しさん@お腹いっぱい。:2006/03/16(木) 16:07:43
おそらく >>700 は、dateコマンドでも +%y が使えることを知らず、
そういうことがやりたいなら strftime() を使って、
C言語でプログラムを書け、と言いたかったんじゃないかな。
それが、実は date +%y で簡単にできてしまうことがわかり、
突っ込まれたので暴れているわけだ。
710名無しさん@お腹いっぱい。:2006/03/16(木) 16:08:24
>>706
FreeBSD で man date を確認すると
% を使った詳細の書式は載っていない。
man strftime ならたぶんどの OS でも載ってるっしょ。
711名無しさん@お腹いっぱい。:2006/03/16(木) 16:09:06
712700:2006/03/16(木) 16:14:40
>>709
>>703>>705 はおれじゃないよ。
713名無しさん@お腹いっぱい。:2006/03/16(木) 16:14:58
>>710
いきなり man strftimeしても、質問者にとっては、
それがdateで使えるとはわからない。
載っているのはC言語なので、最初の数行読んで「違う」「ガセネタだ」と
思うだろう。

man strftimeとか言わずに、
>>701 みたいに date +%y%m%d と、直接回答するのが
もっとも価値が高い回答ではないだろうか。
714名無しさん@お腹いっぱい。:2006/03/16(木) 16:21:42
この板最近回答者への要求きついね。
回答控えようかな。
715名無しさん@お腹いっぱい。:2006/03/16(木) 16:47:32
FreeBSDでman dateでこれだけ載ってりゃ十分じゃ内科医
--------------------------------
yy 西暦の省略表現です。西暦の 10 の位と 1 の位です (1989 年なら 89、06 なら 2006)。
〜中略〜
使用例
以下のコマンド:
date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
は、下のような表示を行ないます。
DATE: 1987-11-21
TIME: 13:36:16
716名無しさん@お腹いっぱい。:2006/03/16(木) 16:52:51
だから今のコンテキストでは、%y が載ってないのはクズ
717名無しさん@お腹いっぱい。:2006/03/16(木) 16:59:42
確認してみたが、SolarisとLinuxのman dateでは %yの他、%の書式解説が載ってるぞ。
遠回しなman書いてるFreeBSDはクズ。
718名無しさん@お腹いっぱい。:2006/03/16(木) 17:01:55
手元の Solaris9 の man にはないようだが……。
719名無しさん@お腹いっぱい。:2006/03/16(木) 17:06:55
date(1)には書式文字列はstrftime(3)に載っているっ
て書いてあるけど。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.

つーか、質問者以外が難癖つけすぎ。
720名無しさん@お腹いっぱい。:2006/03/16(木) 17:08:10
というか、Solarisの場合manは非標準で、標準はアンサーブックとかに変わったし、
Solarisスレでは二言めには docs.sun.com読め、なので、manは標準じゃないのだろう。
721名無しさん@お腹いっぱい。:2006/03/16(木) 17:10:52
>>719
だからぁ、それはFreeBSDの場合なんだって。
そもそも、dateコマンドで行けるかどうかの情報すらない段階で、
man strftimeでは意味が通じないよ。

元が「dateの書式が知りたい」という質問なら
man strftimeでもわかるけど。

実際にはそうじゃない。
722名無しさん@お腹いっぱい。:2006/03/16(木) 17:21:47
質問者の >>699 は、8桁日付の date +%Y%m%d については知っている。
これを、6桁にしようと、awkのsubstr関数を使うことを考えていた。

この段階で、質問者は「dateコマンドだけではできない」と
考えていたと推定できる。

すると回答としては、まず、「dateだけでできるんだよ」ということを
教えてやらないといけない。

ところが、ここで「man strftime」などと回答すると、
「dateの出力をstrftimeというコマンド(←実際にはない)で加工する」
あるいはawkを考えているため「awkにstrftimeという関数がある?」
などと、誤った方向に誘導してしまう。

だから、manなどで回答するのではなく、

`date +%y%m%d`

と一言いえば済むことだったのだ。
723名無しさん@お腹いっぱい。:2006/03/16(木) 17:33:12
回答者は date でできるのが分かってたんだから、man を良く嫁で良かったんじゃないのか。
直接、答えを教えるのは良くないよ。
724名無しさん@お腹いっぱい。:2006/03/16(木) 17:38:09
manで回答する香具師って、実際に動作確認せずに回答してるだろ。
オレはその点が気になる。
シェルスクリプトとして動作確認してるなら、
回答は直接のコマンドラインになるはず。

直接答を書くというか、動作確認のためにそれは必要なこと。
725名無しさん@お腹いっぱい。:2006/03/16(木) 17:38:45
なんで701はこんなに必死になってるんですか?
726名無しさん@お腹いっぱい。:2006/03/16(木) 17:43:37
>>714
元々モマエは役に立ってないから
イエローで首括って良いよ
727名無しさん@お腹いっぱい。:2006/03/16(木) 17:52:51
>>724
仮に動作確認のために動かしても、マニュアルに載ってることは答えを
直接書くべきじゃない。回答者の学ぶ機会を奪うのか?
728名無しさん@お腹いっぱい。:2006/03/16(木) 17:54:15
>あるいはawkを考えているため「awkにstrftimeという関数がある?」
>などと、誤った方向に誘導してしまう。

GNU awk にはあるよ。その man でもちゃんと strftime(3) に誘導してる。
729名無しさん@お腹いっぱい。:2006/03/16(木) 17:56:39
>>728
awkにstrftimeがあるのは知ってるよ。
だからこそ紛らわしいと言ってるんだ。
dateでできるのにわざわざawkでやると無駄だろ。
しかも、awkのstrftimeでdateみたいに表示させるの、
結構記述量多くなるよ。
730名無しさん@お腹いっぱい。:2006/03/16(木) 18:00:42
余談だけど、
awk 'BEGIN { print strftime("%y%m%d") }'
だね。

確かに、こんなこと書くより、

date +%y%m%d
の方がエレガントだね。
731名無しさん@お腹いっぱい。:2006/03/16(木) 18:06:32
>>727
>回答者の学ぶ機会を奪うのか?

確かに、「回答者」こそいい回答方法を学んで欲しいよねw
man回答は最低。
732680:2006/03/16(木) 21:08:35
すみません。>>680 がまだ解答が付いてないんですが、
よろしければこれをネタに、解答者バトルをお願いします。
733名無しさん@お腹いっぱい。:2006/03/16(木) 21:19:53
こんなUNIXを打ってください
sh -c 'for i in *; do mv $i `echo $i | tr a-z A-Z`; done'
734名無しさん@お腹いっぱい。:2006/03/16(木) 21:24:16
>>733
逆に大文字に変換してるのはわざと?
あと、sh -c が無駄。
cshユーザーは居ないという大前提があるので、
sh -c する必要なし。
735名無しさん@お腹いっぱい。:2006/03/16(木) 21:33:23
>>734
> 逆に大文字に変換してるのはわざと?
素でまちがえただけよ
736名無しさん@お腹いっぱい。:2006/03/16(木) 21:35:48
もっとハデなバトルネタきぼん
737680:2006/03/16(木) 21:41:44
>>733
ありがとうございます。733のUNIXを打つと途中まで行けるんですが、
My Document.txt というファイルがあるところでエラーになります。
こういうファイルも対応できるUNIXの打ち方はありませんか?
738名無しさん@お腹いっぱい。:2006/03/16(木) 21:50:22
「UNIXを打つ」ってすげぇ表現だな
739名無しさん@お腹いっぱい。:2006/03/16(木) 21:53:02
>tr a-z A-Z
あれ?
[]がいるんじゃね?
740名無しさん@お腹いっぱい。:2006/03/16(木) 21:55:12
>>739
man tr
[]はいらねーよ。正規表現じゃないんだから。
741名無しさん@お腹いっぱい。:2006/03/16(木) 21:59:52
もまいら、ちゃんと動作チェックしてから書き込め。
それとも手元のPCがWinで、すぐにUNIXが打てないのかな?
742名無しさん@お腹いっぱい。:2006/03/16(木) 22:13:04
SysVの古いバージョンの tr だと [ ] が要ったらしい。
でも、Solarisの tr でも [ ] なしで動くので
[ ] はもう要らないのだろう。
743名無しさん@お腹いっぱい。:2006/03/16(木) 22:25:26
solaris8のマニュアルだと、
/usr/bin/trの場合は、[]がいるみたいだぞ。
/usr/xpg4/bin/trの場合はいらんみたいだが。
744名無しさん@お腹いっぱい。:2006/03/16(木) 22:35:09
Solaris9の/usr/bin/trだと [ ] なしで動いた。
manはインスコしてないので未確認。
manってうぜー。
現物確認が一番。
745名無しさん@お腹いっぱい。:2006/03/16(木) 23:01:05
manぐらい入れとけよ
746名無しさん@お腹いっぱい。:2006/03/16(木) 23:04:52
Solarisでは、「manは将来のリリースではサポートされない」みたいな記述を
何年か前に見たから、インスコしないことにしている。
LinuxのmanをNFSマウントしてそれを読んでるが、
それでだいたい間に合ってしまうんだよ。
747名無しさん@お腹いっぱい。:2006/03/16(木) 23:20:24
Linuxのmanって、なんか古い記述が残ってたり、テキトーなのが多くないか?
Solarisのmanの方が全然いいぞ
例えばThread-SafeかどうかSolarisのは全部書いてあるし
748名無しさん@お腹いっぱい。:2006/03/16(木) 23:21:34
>>746
聞いたことないなあ。"troff形式のマニュアルページ"もしくは
AnswerBook(もうリリースされてないけど)の間違いじゃないの?

ttp://docs.sun.com/app/docs/doc/819-0305/6n2o826je?a=view
ここにも載ってないし。
749名無しさん@お腹いっぱい。:2006/03/16(木) 23:59:48
>>747
> Linuxのmanって、なんか古い記述が残ってたり、テキトーなのが多くないか?

日本語の man はそういうの多いね。

--help オプションとかがあるコマンドなら
そっちで確認した方が確実だね。
750名無しさん@お腹いっぱい。:2006/03/17(金) 00:33:46
>>749
manも--helpオプションも間違ってて、
ソース読まざるをえないことが数度あった。

bashとかのでかいmanはよみにくいな。
751名無しさん@お腹いっぱい。:2006/03/17(金) 00:37:04
かといって、zshとかperlみたいなのもな
752名無しさん@お腹いっぱい。:2006/03/17(金) 00:43:18
-gつきでコンパイルしてあれば--sourceでソースが表示されるというのを標準にしよう
753名無しさん@お腹いっぱい。:2006/03/17(金) 00:52:25
perl は独自に分割されてていまいちわからん。
ああいうのなら info の方がいい。
754名無しさん@お腹いっぱい。:2006/03/17(金) 01:18:20
オマエら能書きは良いからUNIX打てよ
755名無しさん@お腹いっぱい。:2006/03/17(金) 01:20:07
>>746,747
Solarisのmanは、docs.sun.comと同じソースで、
かなり前からSGMLドキュメントがオリジナルになっている。
アンサーブックの時代にそうなった。

/usr/man/sman*
756名無しさん@お腹いっぱい。:2006/03/17(金) 06:56:13
で、>>737 に対応したUNIXは誰も打てないのかよ?
757名無しさん@お腹いっぱい。:2006/03/17(金) 07:16:05
しょーがねーなあ。少し上の方みりゃ分かると思うんだが。
for i in *; do mv "$i" "`echo "$i" | tr a-z A-Z`"; done
758名無しさん@お腹いっぱい。:2006/03/17(金) 07:18:36
誰か俺の心を揺さぶるようなUNIXを打ってくれ!
759名無しさん@お腹いっぱい。:2006/03/17(金) 07:24:11
UNIXを打ち込んでくれー!!
760名無しさん@お腹いっぱい。:2006/03/17(金) 07:32:58
つーか>>737 は普段windowsをクリックしてるんだろうけど
なんで突然UNIXを打たなきゃなんなかったのか気になる
761名無しさん@お腹いっぱい。:2006/03/17(金) 08:19:02
>>745
Solarisのインストール時に、最小インストールを選択すると manは入らないよ。
サーバー専用機などで Xが不要の場合、
End Userインストールより下には最小インストールしか選択肢がなく、
それを選んで manなしになっているマシンは多い。
762名無しさん@お腹いっぱい。:2006/03/17(金) 08:20:40
manぐらい入れとけよ
763名無しさん@お腹いっぱい。:2006/03/17(金) 08:53:22
manにtinを入れるってか。
764名無しさん@お腹いっぱい。:2006/03/17(金) 09:08:36
10台、100台とあるマシンに、同じmanのコピーをインストールするのは無駄。
しかも、manは実行ファイルでもあるまいし、サーバー専用機の場合、
サーバー機にloginしてmanを読むこと自体無駄。

あ、だからdocs.sun.comなのか。
765名無しさん@お腹いっぱい。:2006/03/17(金) 10:41:41
>>764
NFSでman積めば?
766名無しさん@お腹いっぱい。:2006/03/17(金) 11:05:40
セキュリティの関係でNFSを使えないサーバーもある。
767名無しさん@お腹いっぱい。:2006/03/17(金) 11:09:48
>>766
情報を後出しされてもなぁ
じゃmanサーバ立てて都度読みに行けば?
768名無しさん@お腹いっぱい。:2006/03/17(金) 11:22:58
>>764
けち臭いこというなw
769名無しさん@お腹いっぱい。:2006/03/17(金) 11:45:58
使わない実行ファイルだって山ほど入ってるだろうに
770名無しさん@お腹いっぱい。:2006/03/17(金) 11:55:43
まったくだ。昔のsun3とかの時代ならそりゃもうケチケチ使ってたよ。
find / -type f -atime +365 -exec rm -f {} \;
でも実行しとけ
771名無しさん@お腹いっぱい。:2006/03/17(金) 12:07:54
"Core System Support"で入れて、デフォでは入らない manを、
多数のマシンに pkgadd して回るなんて面倒なことはできない。
デフォで入らなかったというのはそれはそれで意味があるのだろうし、
あえてデフォの状態をいじりたくないというのもある。
772名無しさん@お腹いっぱい。:2006/03/17(金) 12:10:40
なら入れなきゃいいじゃん。
それをシェルスレで主張する意味がわからん。
773名無しさん@お腹いっぱい。:2006/03/17(金) 12:10:48
man co.jp
774名無しさん@お腹いっぱい。:2006/03/17(金) 12:13:17
シェルゆうな
775名無しさん@お腹いっぱい。:2006/03/17(金) 12:30:59

そうだよ、入れなきゃいいんだよ。
オレは入れるなとは主張していない。
「manくらい入れろ」と言ってる >>762 とかに
反論してるだけ。
776名無しさん@お腹いっぱい。:2006/03/17(金) 12:45:43
入れなくてもいいけど、man嫁って言われて切れるなよ
777名無しさん@お腹いっぱい。:2006/03/17(金) 13:01:09
言っとくけど、man入れてないオレは回答者側。
このスレで質問したことは一度もない。
回答は多数。

初心者の質問に、誰かが man嫁と回答してるのを見て、
その直後にもっとずばりの回答をしてるのがオレ。
manなんかで回答するんじゃないぞ。
778名無しさん@お腹いっぱい。:2006/03/17(金) 13:29:25
manぐらい入れとけよ
779名無しさん@お腹いっぱい。:2006/03/17(金) 13:30:42
manはそのマシンに入っているから価値があるんだろ。
780名無しさん@お腹いっぱい。:2006/03/17(金) 13:31:28
質問者はみんな man 入れてるよ。
781名無しさん@お腹いっぱい。:2006/03/17(金) 13:51:05
はやくUNIX書けよ
782名無しさん@お腹いっぱい。:2006/03/17(金) 13:58:49
>>777
> 初心者の質問に、誰かが man嫁と回答してるのを見て、
> その直後にもっとずばりの回答をしてるのがオレ。
質問者が調べる機会を奪っちゃいかんよ。
783名無しさん@お腹いっぱい。:2006/03/17(金) 14:25:41
>>777
でもオマエmanの入れ方解らないで教えてもらったじゃん
784名無しさん@お腹いっぱい。:2006/03/17(金) 16:11:11
僕にもmanの入れ方教えてくださいm(_ _)m
785名無しさん@お腹いっぱい。:2006/03/17(金) 17:15:07
結局manが使えないバカの再教育からUNIX打たないとダメか
786名無しさん@お腹いっぱい。:2006/03/17(金) 21:56:29
>>777
どのようにして、その先入観を打ち破る事が出来るのか。本当に悩ましい
787名無しさん@お腹いっぱい。:2006/03/17(金) 22:14:27
>>786
そのネタもう古い。もっと新しいの頼む。
788名無しさん@お腹いっぱい。:2006/03/17(金) 23:57:09
ずばりの回答か・・・ま、ほんとにずばりならいいが。
789名無しさん@お腹いっぱい。:2006/03/18(土) 00:07:22
ずっぽりの回答
790名無しさん@お腹いっぱい。:2006/03/18(土) 00:18:15
相変わらずレベル低いなw
791名無しさん@お腹いっぱい。:2006/03/18(土) 12:04:50
ここはmanについて考えるスレかよ!
man入れるか入れないかは別として回答としては>>701が一番良いと思うけどな。
>>699の人はある程度調べた後に質問したように見えるし、調べる方向が間違いつつあるようにも見える。
そういう人にはそのものずばりの回答を出せば、その人は自分で man date で回答を確かめる事をすると
思うよ。
792名無しさん@お腹いっぱい。:2006/03/18(土) 12:28:56
>>791
だから?
要するに君はここが相変わらずレベル低いと言いたかったわけだね
793名無しさん@お腹いっぱい。:2006/03/18(土) 13:22:42
>>791
ジサジエも飽きたから何か変わったUNIXを振ってくれよ
794791:2006/03/18(土) 13:35:17
>>793
俺は701では無い。
manも入れてる。
ねたは無い。
795名無しさん@お腹いっぱい。:2006/03/18(土) 13:39:28
十代に若返ってナオンとずっこんばっこんできるスクリプトをお願いします
796名無しさん@お腹いっぱい。:2006/03/18(土) 14:01:41
>>795

#!/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
797名無しさん@お腹いっぱい。:2006/03/18(土) 14:03:36
動かしていると、自然にディレクトリ中にスクリプトが増えていくのはワームですか。
798名無しさん@お腹いっぱい。:2006/03/18(土) 14:13:13
バグです
799名無しさん@お腹いっぱい。:2006/03/18(土) 14:37:08
>>796
ありがとうございます。
早速実行してみましたが、
53歳だと、dateの実行のところでエラーになって
16歳に戻れません。
53歳以上にも対応したUNIXを打つ方法はありませんか?
800796:2006/03/18(土) 14:44:14
>>799
楽観的な仕様と引数の範囲チェック無しで作成してしまいました。

>>793さん、変わったUNIXが振られましたのでよろしく。
801名無しさん@お腹いっぱい。:2006/03/18(土) 14:47:10
>>794
典型的な自作自演の告白乙
ココではそんなお約束は書かなくてもおk
802名無しさん@お腹いっぱい。:2006/03/18(土) 21:09:36
よしきた、俺にまかせろ!
俺は801では無い。
manは入れてない。
いつもずっぽり。
803名無しさん@お腹いっぱい。:2006/03/18(土) 21:18:06
Sambaで coding system = hex で運用されていたサーバーがあります。
これを、coding system = euc に変更したいので、
hexでエンコードされた「:」入りの日本語ファイル名をすべて
EUCに変換したいのですが、
どういうシェルを書いて、どういうUNIXを打てばいいでしょうか?
804名無しさん@お腹いっぱい。:2006/03/18(土) 22:07:30
書かんでよい。よってスレ違い。
http://www.samba.gr.jp/project/contrib/smbchartool.html
805名無しさん@お腹いっぱい。:2006/03/18(土) 22:23:41
>804
それ、、、以前使ったら、シンボリックリンクも全部おいかけられて、
1つのファイル名を何度も何度もコード変換されて、全部の日本語
ファイルが化け化けになったw
806名無しさん@お腹いっぱい。:2006/03/18(土) 23:07:48
じゃあ、
http://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` \;
807名無しさん@お腹いっぱい。:2006/03/18(土) 23:14:32
>>806
findの -execのところに ` ` 書いても期待通りに動作しないと思うぞ。
808名無しさん@お腹いっぱい。:2006/03/18(土) 23:59:27
find実行される前に展開されんだろ
809名無しさん@お腹いっぱい。:2006/03/19(日) 00:18:50
>>798
うーん、795の意図を正確に処理したら、
子プロセスがたくさん出来て困るんですけど。
810名無しさん@お腹いっぱい。:2006/03/19(日) 01:37:00
すいませんが、お力を貸してください
実行されたらあるディレクトリがあるか調べて
そのディレクトリが存在していれば○○
存在していなければ停止

このようなシェルスクリプトはどう書けばいいのでしょうか?
できればbashとshの両方が知りたいです
811名無しさん@お腹いっぱい。:2006/03/19(日) 01:47:49
>>810
man test
812名無しさん@お腹いっぱい。:2006/03/19(日) 04:34:39
>>810

if [ -d あるディレクトリ ]
then
○○
else
停止
fi
813名無しさん@お腹いっぱい。:2006/03/19(日) 06:04:35
>>810

A = 'ps ax | grep あるディレクトリ | wc -l'

if [ $A ]; then
○○
else
停止
fi
814名無しさん@お腹いっぱい。:2006/03/19(日) 06:05:20
>>810街がえっタ

A = 'ls | grep あるディレクトリ | wc -l'

if [ $A ]; then
○○
else
停止
fi
815名無しさん@お腹いっぱい。:2006/03/19(日) 09:02:40
>>813-814
何がしたいんだ? >>812の正解のあとで間違った答えを出して
816名無しさん@お腹いっぱい。:2006/03/19(日) 09:26:29
で、>>806 だと不正解なわけだが、誰も正解はわからないのかな?
817名無しさん@お腹いっぱい。:2006/03/19(日) 09:26:39
>>813
君も man test
818名無しさん@お腹いっぱい。:2006/03/19(日) 09:32:34
>>811 man で回答するのヤメレ。

>>812 正解。

>>813-814 初心者かな? >>812 の正解を参照汁。
それだとディレクトリがなくても wc -l の結果の 0 が Aに入るので、
ifで常に結果が真になる。grepでの判定も曖昧。
そんなことしなくても [ -d hoge ] でできることを覚えろ。
819名無しさん@お腹いっぱい。:2006/03/19(日) 09:34:42
>>811,817
おまえら一生manだけ読んでろ。manを読むばかりで手を動かさない机上の空論者だな。
820名無しさん@お腹いっぱい。:2006/03/19(日) 09:40:23
>>808
はぁ?
>>806 はfind実行する前に ` `が展開されるよ。
しかも、find の -exec のあとは直接のコマンドであって、
シェルスクリプトではないため、
-execの実行時には一切のシェルの解釈を受け付けない。
だから、仮に ` ` がfindの実行前に展開されていないとすると、
逆に -exec の時に ` ` がエラーになる。
いずれにしても、>>806 は大間違い。

俺は正解を知ってるが、回答者バトルのために敢えて書かない。
わかるモン居たら書いてみろ。
821名無しさん@お腹いっぱい。:2006/03/19(日) 09:50:16
エレガントなずっこんばっこんスクリプトまだー?
822名無しさん@お腹いっぱい。:2006/03/19(日) 10:45:01
>>820
熱くなりすぎ。>>808>>807への突っ込みだと取ったんだが。
823名無しさん@お腹いっぱい。:2006/03/19(日) 13:05:49
>>807 の指摘は正しい。
それに突っ込んでる >>808 は間違い。
おおもとの >>806 が間違いなのは言うまでもないが。
824名無しさん@お腹いっぱい。:2006/03/20(月) 12:00:36
>>818
私英語苦手・・・・じゃなくて、日本語苦手。
825名無しさん@お腹いっぱい。:2006/03/20(月) 14:43:21
ほげ
826名無しさん@お腹いっぱい。:2006/03/20(月) 16:27:41
ぴよ
827名無しさん@お腹いっぱい。:2006/03/20(月) 16:36:01
>>824
アンカー先間違えてる?
818にそう言っても話が繋がらないのだが・・
828名無しさん@お腹いっぱい。:2006/03/20(月) 16:51:18
つながらなくて困るようなスレの流れじゃないし。
829名無しさん@お腹いっぱい。: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を得るのでしょうか。
830名無しさん@お腹いっぱい。:2006/03/20(月) 21:40:01
>>829
Q1 何故、findの機能を調べようとしないんだ?
Q2 何故、そのスクリプトエンジンの機能を調べようとしないんだ?
831名無しさん@お腹いっぱい。:2006/03/20(月) 22:28:06
またman読めよらしいな
832名無しさん@お腹いっぱい。:2006/03/20(月) 22:33:50
>>830,831
そういうお答えはご遠慮願います。
ちゃんとわかる方のみ、ご回答よろしくお願いします。
833名無しさん@お腹いっぱい。:2006/03/20(月) 22:38:06
>>829
一問目は、man shかman bashして、
パス名展開(Pathname Expantion) のところ読んでね。
834名無しさん@お腹いっぱい。:2006/03/20(月) 22:44:35
>>833
>>829 の1問目は、「一発で3種類のファイル数を(それぞれ)求める方法」
らしいから、それは shの「パス名展開」を読んでも解決にならないだろ。
835名無しさん@お腹いっぱい。:2006/03/20(月) 22:47:22
また「知ったかman厨」か。
836名無しさん@お腹いっぱい。:2006/03/20(月) 22:48:35
>>832
死ねよ。クズ。
837829:2006/03/20(月) 22:49:10
>>830
忠告ありがとうございます。

findの方は -o -name の追加でなんとかなりました。
ファイル入力の方、ファイル名がスクリプト内で取得可能ならexecでどうこう出来る、
というのを見つけたのですが、肝心のファイル名をどうやって知ればいいのかわからんです。
なんか検索ヒント下さい。
838名無しさん@お腹いっぱい。:2006/03/20(月) 22:52:35
>>834
「それぞれ」で無くてもよかったのだけど、その場合一発で出来るんですかね。
839名無しさん@お腹いっぱい。:2006/03/20(月) 22:54:22
>>829
1問目:

「一発で」というなら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みたいにして使う。
840名無しさん@お腹いっぱい。:2006/03/20(月) 22:57:06
>>838
「それぞれ」でなくていいなら、
find . -name '*.c' -o -name '*.cpp' -or -name '*.cc' | wc -l
で一発。
841名無しさん@お腹いっぱい。:2006/03/20(月) 22:59:19
このスレ的にはawkは邪道?
842名無しさん@お腹いっぱい。:2006/03/20(月) 23:02:07
スクリプト言語だからなあ。でも実際、シェルスクリプトの一部として
使われてるって現実もあるし。微妙な所か。
843829:2006/03/20(月) 23:12:56
みなさんどうもありがと。

>>839
while read var
して$varを全部echoしてみたのですが、最初の値が0になっている。こういうものなの?
一つ目を無視すれば済むのだろうけど。
844名無しさん@お腹いっぱい。:2006/03/20(月) 23:18:14
>>843
おそらく、whileループの「外」でechoしてるんだろう、とエスパーしてみる。
while readする場合にはちょっと癖があって、
while文の部分がサブシェルで実行されるので、
varに値を入れても、
whileループを抜けると消えてしまう(←ちょっと不正確な表現)んだよ。
うまく工夫してそれを避けるしかない。
845名無しさん@お腹いっぱい。:2006/03/20(月) 23:19:32
じゃ、こんなのは?

find . \( -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行で書く必要は無いのか?
846名無しさん@お腹いっぱい。:2006/03/20(月) 23:20:04
>>843
この場合は while readを使わずに、
set `cat`
で読み込め。
これで、引数で起動したのと同じように
そのまま $1 $2 ... に代入されるよ。
847845:2006/03/20(月) 23:20:14
名前消えたけど845=841です。
848829:2006/03/21(火) 00:06:34
>>844
なんかよく分からないけど0が消えました。
さっき全く同じコードの筈なんだけどな。
入力ファイルの頭が0だった、なんて事は無いです。
while read var
do
echo $var
done
で0無しで動きました。不安なので再現狙ってみます。

>>845
長いからスクリプト書いた方が とか
でも一行で書けるものなんだと驚いたのも確か

>>846
うまいこと行きました。便利ですねこれ。さんくすです。


みなさんありがとうございました 
849名無しさん@お腹いっぱい。:2006/03/21(火) 00:10:20
>>829
ちょっと作ってみた

--
find . -type f | egrep '\.(c|cc|cpp)$' | \
  rev | cut -d. -f1 | rev | sort | uniq -c | sort -nr
--

egrepの部分に集計したい拡張子追加してね。
850名無しさん@お腹いっぱい。:2006/03/21(火) 00:37:22
>>849
rev | cut -d. -f1 | rev
の部分、面白いと思うけど、
プロセス3つも使うの無駄っぽいから、俺なら、

sed 's/.*\.\(.*\)$/\1/'
にするかな。
851名無しさん@お腹いっぱい。:2006/03/21(火) 00:49:35
>>850
それならもっと簡単に書ける。
sed 's/.*\.//'
852名無しさん@お腹いっぱい。:2006/03/21(火) 00:55:46
なるほどー。「man嫁」じゃなくて、ちゃんと具体例で解答すると
アイデアが膨らんで、スレのレベルが上がるねぇー。
853名無しさん@お腹いっぱい。:2006/03/21(火) 01:07:00
質問者のフォローが良かったんだな
訊き捨ての香具師にはman嫁でじゅーぶん
854名無しさん@お腹いっぱい。:2006/03/21(火) 01:41:26
スレのレベルが上がる…プッwwww
855名無しさん@お腹いっぱい。:2006/03/21(火) 01:45:48
>>849
egrep のところは find -regex を使った方がお手軽だと思う。

>>850-851 のアイディアも加えるとこんな感じ?

find . -type f -regex '.*\.\(c\|cc\|cpp\)' | sed 's/.*\.//' | sort | uniq -c | sort -nr
856名無しさん@お腹いっぱい。:2006/03/21(火) 02:41:54
-regex って、OS 依存だから、ポータブルなシェルスクリプトに
したいんだったら、egrep 使った方がいいよ。
OS 依存でいいなら構わんが。
857名無しさん@お腹いっぱい。:2006/03/21(火) 02:53:14
>>856
egrepってOS非依存か?
858名無しさん@お腹いっぱい。:2006/03/21(火) 03:35:45
もちろん非依存だよ。まあ当然 UNIX 系 OS に限るけどね。
859名無しさん@お腹いっぱい。:2006/03/21(火) 03:47:17
>>856
-regex って GNU 拡張だったんだ。
憶えておくよ。

egrep と grep -E ってどっちがポータブルなの?
860名無しさん@お腹いっぱい。:2006/03/21(火) 03:50:09
-regex は 4.4BSD 系 find にもあるから、GNU 拡張というよりは
もう少しポータブルだけどね。4.4BSD 系 OS のマニュアルには、
拡張機能だと明記してあるんだが。

egrep と grep -E では、egrep の方がポータブル。
861名無しさん@お腹いっぱい。:2006/03/21(火) 07:38:29
相変わらずラベル低いなw
862名無しさん@お腹いっぱい。:2006/03/21(火) 09:39:23
>>855,856
findの -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を省略していいなら、その後の \( \) も省略できる。
863名無しさん@お腹いっぱい。:2006/03/21(火) 11:19:30
ここの馬鹿どもはPOSIXとか知らんのか?
864名無しさん@お腹いっぱい。:2006/03/21(火) 11:25:04
>>863
よし、存分に語れ。
865名無しさん@お腹いっぱい。:2006/03/21(火) 11:29:26
>>863
それはそれは…是非ご教授願いたい。
866名無しさん@お腹いっぱい。:2006/03/21(火) 11:40:07
>>863
POSIX!何ですかそれは!是非ご啓示ください!!
867名無しさん@お腹いっぱい。:2006/03/21(火) 11:46:58
POSIXを読むのは有料だし、
実際の各種OSで使われているシェルやコマンドは、
POSIXと同じではない。
だから、そもそもPOSIXと同じではない各種OS間のポータビリティを
考えるなら、POSIX云々ではなく、実際に各種OSでの状況を調べて
対応するのが実践的で現実的。
868名無しさん@お腹いっぱい。:2006/03/21(火) 13:34:46
opengroup.org キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
869名無しさん@お腹いっぱい。:2006/03/21(火) 14:09:32
> POSIXを読むのは有料だし、

登録は必要だけど、無料だよ。
ttp://www.unix.org/version3/online.html
870名無しさん@お腹いっぱい。:2006/03/21(火) 14:38:19
>>867
POSIX新聞?うちは取らないよ。
871名無しさん@お腹いっぱい。:2006/03/21(火) 15:47:04
>□お約束
>・特記なき場合はbourne shがデフォルトです。

今どき、bourne shをデフォルトにしているのなんて、
Solarisくらいしかないじゃん。
872名無しさん@お腹いっぱい。:2006/03/21(火) 15:54:56
>>871 Linux板に帰れ
873名無しさん@お腹いっぱい。:2006/03/21(火) 16:04:46
いや、ゴミが帰ってきても困るんだが。
874名無しさん@お腹いっぱい。:2006/03/21(火) 16:08:57
>>860
> egrep と grep -E では、egrep の方がポータブル。

嘘おっしゃい。
875名無しさん@お腹いっぱい。:2006/03/21(火) 16:09:18
du -a と find . -type f だと、やっぱり find の方が速い?
876名無しさん@お腹いっぱい。:2006/03/21(火) 16:30:18
スクリプトでは難しいけど、カレントディレクトリにあるディレクトリ数分のthreadを作ってパラレルにfind
するようなプログラム作るとめっさ速そうなんだけど。無理?
877名無しさん@お腹いっぱい。:2006/03/21(火) 16:41:16
> 嘘おっしゃい。

Linux とか 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を使用してください
878名無しさん@お腹いっぱい。:2006/03/21(火) 16:48:05
>>877
Solarisだと/usr/xpg4/bin/grepにしか-Eオプションは無くて/usr/bin/grepでは-Eは使えない。
他のOSでも使えるようにgrep -Eをスクリプトに書くのはちょいめんどくさいな。
879名無しさん@お腹いっぱい。:2006/03/21(火) 16:54:26
>>867
まずはPOSIXを読めな? ごたくはそれからだ。
880名無しさん@お腹いっぱい。:2006/03/21(火) 17:01:07
>>876
pthread使ったファイル検索プログラムがButenhofのpthread本に
載ってたような。
881名無しさん@お腹いっぱい。:2006/03/21(火) 18:53:18
POSIXの仕様に合わせると、現実の仕様に合わない罠。
>>877 見ても、POSIXよりも autoconfの方がよほど現実的というところか。
882名無しさん@お腹いっぱい。:2006/03/21(火) 21:15:57





              相変わらず

883名無しさん@お腹いっぱい。:2006/03/21(火) 21:27:27
>>882



        鬱ですねぇ。
884882:2006/03/21(火) 22:48:52
>>883
鬱で引きこもりですけど何か?
僕のクラッキング武勇伝でも聞くかい?
885名無しさん@お腹いっぱい。:2006/03/22(水) 02:14:10
スクリプトキディってやつか。語ってみる?
886名無しさん@お腹いっぱい。:2006/03/22(水) 09:40:58
よ、よし、俺のハッキングデビューはWinNuke。
その後は究極のProxy★ガブリエナイで優雅にproxy生活だったさ!!
887名無しさん@お腹いっぱい。:2006/03/22(水) 18:01:04
読み方 : スクリプトキディ
分野 : セキュリティ > ネットワーク


 インターネット上で公開されている操作が簡単なクラックツールを利用して、興味
本位の不正アクセスを試みる「幼稚な」クラッカー。
クラックツールは既に広く知られているセキュリティホールを悪用するように作成されているため、
セキュリティパッチを確実に適用することで、ほとんどのスクリプトキディによる攻撃は防止できる。
クラックツールを使えば深い知識や高度な技術がなくても簡単に攻撃を行なうことができるため、
数の上ではクラッカーのほとんどはスクリプトキディであると言われる。
888名無しさん@お腹いっぱい。:2006/03/23(木) 15:38:21
一番汎用性があるシェルスクリプトは Bourne Shell で書かれたもの
という理解でよろしいでしょうか?
889名無しさん@お腹いっぱい。:2006/03/23(木) 15:39:59
>>884 何気聞きたい
890名無しさん@お腹いっぱい。:2006/03/24(金) 02:30:15
>>888
いえ Korn Shell です。
891名無しさん@お腹いっぱい。:2006/03/24(金) 07:37:06
Debianだと checkbashisms なんてコマンドがあったりするな。
まあそんなに汎用性気にするならPerl使えという気もするが。
892774:2006/03/24(金) 07:55:17
【日韓・野球】「ホームラン記録等には八百長疑惑もある王貞治(ワン・ジョンチ)、監督として成功」…韓国紙 ★4 [03/21]
http://news18.2ch.net/test/read.cgi/news4plus/1143149170/
893名無しさん@お腹いっぱい。:2006/03/24(金) 08:08:44
>>888
一番移植性が高いのはBourne Shellということで合ってる。
当たり前過ぎて誰も答えなかっただけ。

>>890
初心者が本気にするかも知れないから、そういう嘘書くのやめろ。
894名無しさん@お腹いっぱい。:2006/03/24(金) 09:31:20
>>893
では移植性の高さを定量的に比較し提示してください。
895名無しさん@お腹いっぱい。:2006/03/24(金) 09:42:42
>>894
誰もが常識として知っていることをあなたに説明して教える筋合いはない。
知りたければ自分で知ろうとする努力をしなさい。
896名無しさん@お腹いっぱい。:2006/03/24(金) 09:45:05
>>895
つまり根拠なき妄言てことですな。自白乙。
897名無しさん@お腹いっぱい。:2006/03/24(金) 09:48:12
>>896
大丈夫。みんな妄想してるから。
898名無しさん@お腹いっぱい。:2006/03/24(金) 10:42:36
まあ、釣りだろうけど、
「kshが移植性が一番高い」などとマジで言ってるなら重症だぞ。
ヨソでそんなこと言って恥かくなよ。
899名無しさん@お腹いっぱい。:2006/03/24(金) 10:50:45
罵り合いで盛り上がっているところ申し訳無いが、
汎用性と移植性は違う気がする。

汎用性は用途の広さだよね。
それならどのシェルもほとんど変わらない気がする。
900名無しさん@お腹いっぱい。:2006/03/24(金) 10:53:40
>>894
$ 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 ?
901名無しさん@お腹いっぱい。:2006/03/24(金) 11:18:12
おぃおぃ
お前のマシンに当該シェルがあるかどうかなんて聞いちゃいねー
902名無しさん@お腹いっぱい。:2006/03/24(金) 11:25:36
>>901
そのとおりだが、漏れもpdkshなんて使わんからアンインストールしてるよ。
903名無しさん@お腹いっぱい。:2006/03/24(金) 11:29:27
>>901
はぁ?
どんなホストでも、誰のホストでも、
デフォで動くというのが「移植性」の必須条件なわけだが。
904名無しさん@お腹いっぱい。:2006/03/24(金) 11:31:39
んなこたーない
905名無しさん@お腹いっぱい。:2006/03/24(金) 11:34:37
>>903
そういう標準化の為に色々大人が事情をつくるのよ
どんなUNIX95のホストでもとか
POSIXに準拠したホストでもとか

906名無しさん@お腹いっぱい。:2006/03/24(金) 11:50:29
>>905
だからPOSIXって実際には使えないわけですね。
907名無しさん@お腹いっぱい。:2006/03/24(金) 13:38:49
準拠ってことばを知らないなら辞書でしらべなよ(^_^;)
908名無しさん@お腹いっぱい。:2006/03/24(金) 13:57:13
>>890
たくさん釣れましたね。
確かに、本当にKorn Shellが移植性が高かったら良かったかも知れませんね。
でも現実にはもう遅いですね。
909名無しさん@お腹いっぱい。:2006/03/24(金) 14:24:02
腎虚
910名無しさん@お腹いっぱい。:2006/03/24(金) 21:56:42
言葉遊び乙
911名無しさん@お腹いっぱい。:2006/03/24(金) 22:03:57
打倒米帝
912名無しさん@お腹いっぱい。:2006/03/24(金) 22:21:31
【設問1】
次の各項目を、その可能性が高い順番に並べよ。(10点)

(1) IPv6が普及する
(2) UNIX環境においてUTF8がEUCよりも普及する
(3) kshが最も移植性の高いシェルとして普及する
913名無しさん@お腹いっぱい。:2006/03/24(金) 22:45:38
(2)>>>>>>>>>>>>>>>>(1)>(3)
914名無しさん@お腹いっぱい。:2006/03/24(金) 22:48:19
(4) 俺が童貞を卒業する
915名無しさん@お腹いっぱい。:2006/03/24(金) 22:57:20
>>914
本当にやる気が有ればいつでも捨てれるはずだ
916名無しさん@お腹いっぱい。:2006/03/24(金) 22:58:53
>>912
どれも可能性ほぼゼロ。
よって、どの順に並べても正解。


UTF8は、全角記号の横幅問題が解決しない限り、実際問題使えない。
917名無しさん@お腹いっぱい。:2006/03/24(金) 23:08:27
φ=(2)>>>>>>>>(1)>(3)>>>>>>(4)

でFA?
918名無しさん@お腹いっぱい。:2006/03/24(金) 23:16:50
xterm -cjk_witdh じゃ駄目なの?
919名無しさん@お腹いっぱい。:2006/03/24(金) 23:32:06
そりゃ一番機能が低いのが一番移植性が高いだろ。CPM-80のcommand.comの移植性が一番高いでFA。
920名無しさん@お腹いっぱい。:2006/03/24(金) 23:43:22
それこそがunix philosophyだという話もある
921名無しさん@お腹いっぱい。:2006/03/24(金) 23:55:22
>>919
いい加減なことぬかすな、CP/Mにはcommand.comなど無い。
922名無しさん@お腹いっぱい。:2006/03/25(土) 00:24:05
そういうことなら自動販売機が一番移植性高い。
923名無しさん@お腹いっぱい。:2006/03/25(土) 00:24:49
オナホでもおでんでも売れるものな
924名無しさん@お腹いっぱい。:2006/03/25(土) 00:27:59
今こそS-OS復権
925名無しさん@お腹いっぱい。:2006/03/25(土) 00:46:37
OS-9!OS-9!
926名無しさん@お腹いっぱい。:2006/03/25(土) 01:03:03
2>1>>3>>>>>>>>>>>>4
ぐらい
927名無しさん@お腹いっぱい。:2006/03/25(土) 01:25:48
(2)>>(1)>=(4)>>[越えられない壁]>>(3)
が漏れの印象
928名無しさん@お腹いっぱい。:2006/03/25(土) 01:54:43
>>923
オナホの自販機ってあるんだ。さすがだれにも相手にされなくなった
ご老体さまがたですなw
929名無しさん@お腹いっぱい。:2006/03/25(土) 02:01:54
dtkshとか、pgbashとか、ああいうの他にないんですか?
930名無しさん@お腹いっぱい。:2006/03/25(土) 02:01:56
(1)>>>>>>>>>>>>>>(3)>(2)
2はUNIXではムリでそ
犬はUNIXじゃないし〜
1は連邦政府の動向見ると実現しそう
日本は後追いで普及ということになるだろうけど
3はよく分からないけどLinuxの鳥ベンダ次第
システム用の各種スクリプトはXMLでラップする方が普及すると思うので
シェルの差っていうのは余り意識せず済むようになると思うケド
4は心がけ次第
931名無しさん@お腹いっぱい。:2006/03/25(土) 02:02:09
オナホってそこらの女より刺激が強くて気持ちいいよ?
932名無しさん@お腹いっぱい。:2006/03/25(土) 02:07:56
おでん缶うまうまだよもん
933名無しさん@お腹いっぱい。:2006/03/25(土) 02:33:55
>>925
OS-9ってshell 差し換えできましたっけ。

934名無しさん@お腹いっぱい。:2006/03/25(土) 12:29:58
コマンドの標準入力がファイルを入力する時、
command < file
というのと、
command '< file'
というのと、両方ありますよね。
どう違うんですか?
935名無しさん@お腹いっぱい。:2006/03/25(土) 12:54:58
>>934
日本語でおk
936名無しさん@お腹いっぱい。:2006/03/25(土) 13:03:49
ジュワワワジュワワ、
ジュワジュワジュジュワワワワワ?
937名無しさん@お腹いっぱい。:2006/03/25(土) 13:04:55
>>933
AV Riderはシェルを換えられるというデモの意味もあった。
938名無しさん@お腹いっぱい。:2006/03/25(土) 13:17:49
>>935-937
知らないなら茶々入れるなよ!
939名無しさん@お腹いっぱい。:2006/03/25(土) 13:22:08
> 両方ありますよね。
ありません
940名無しさん@お腹いっぱい。:2006/03/25(土) 13:27:14
実際にあるから聞いてるのっ!
941名無しさん@お腹いっぱい。:2006/03/25(土) 14:02:21
command < file
はcommandへの引数は無し、標準入力はfileになる。
command '< file'
はcommandへの引数は一つで、それは '< file' という文字列。標準入力は変わらず。
だから、2つの書き方でやろうとしていることは全く違う。

実際にあるなら、その行を変更無しにそのままコピペしてみな。
942名無しさん@お腹いっぱい。:2006/03/25(土) 14:08:27
'< file' じゃなくて `< file` なんじゃないの?
で、bash依存なのでお引き取りください。
943名無しさん@お腹いっぱい。:2006/03/25(土) 14:50:56
で、bash依存だとなんで引き取らなきゃいけないの?
944名無しさん@お腹いっぱい。:2006/03/25(土) 14:58:01
>>943
つべこべ言うなニート
945名無しさん@お腹いっぱい。:2006/03/25(土) 14:59:19
bashスレ行け池沼
946名無しさん@お腹いっぱい。:2006/03/25(土) 14:59:30
>>943
bash依存だとUNIXがぶちにくいんじゃない
947名無しさん@お腹いっぱい。:2006/03/25(土) 15:42:32
bashはUNIXではない。
948名無しさん@お腹いっぱい。:2006/03/25(土) 15:54:52
もちろんNetBSDです。
949名無しさん@お腹いっぱい。:2006/03/25(土) 17:50:14
historyがUNIXだと表示されますが、
シェルにすると出ません。
UNIXとシェルでは何か違いがあるのでしょうか?
950名無しさん@お腹いっぱい。:2006/03/25(土) 18:07:01
>>949
英語でおk
951名無しさん@お腹いっぱい。:2006/03/25(土) 18:46:24
When history is on UNIX, it is displayed,
but when it is made into shell, it doesn't.
Is there any difference between UNIX and shell ?
952名無しさん@お腹いっぱい。:2006/03/25(土) 18:50:41
>>951
>Is there any difference between UNIX and shell ?

Yes.
953名無しさん@お腹いっぱい。:2006/03/25(土) 19:00:24
>>952
Thanks. Tell me why and how to make it work.
954名無しさん@お腹いっぱい。:2006/03/25(土) 19:03:12
(いぶまさとうの声で) yes, a little.
955名無しさん@お腹いっぱい。:2006/03/25(土) 19:07:05
The history command is very bash specific. You should go back now !!
956名無しさん@お腹いっぱい。:2006/03/25(土) 19:18:39
(いぶまさとうの声で) シンナーに気をつけろー
957名無しさん@お腹いっぱい。:2006/03/25(土) 21:19:40
>>942
んなこたない。`< file` は kshでも使えるぞ。
958名無しさん@お腹いっぱい。:2006/03/26(日) 00:43:12
テンプレをup-to-dateなものに修正したので、
ここに↓に上げておきます。
次スレ立てる人はコピペしてください。

オレの環境からだとなぜか立てられないので・・
959名無しさん@お腹いっぱい。:2006/03/26(日) 00:43:48
シェルスクリプト総合 その6


シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>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 でトレースしましょう。
960名無しさん@お腹いっぱい。: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/
961名無しさん@お腹いっぱい。: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
962名無しさん@お腹いっぱい。:2006/03/26(日) 00:49:52
□関連書籍と関連リンク:
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/

□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
 シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
 使い方の質問などはスレ違いなので無用に願います。

□シェルスクリプトでよく使うコマンド:
制御・条件判定系: [,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
963名無しさん@お腹いっぱい。:2006/03/26(日) 00:51:03
□最近のシェルスクリプト本(1)

(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/
964名無しさん@お腹いっぱい。:2006/03/26(日) 00:51:45
□最近のシェルスクリプト本(2)

(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/
965名無しさん@お腹いっぱい。:2006/03/26(日) 00:52:41
以上でーす。
966名無しさん@お腹いっぱい。:2006/03/26(日) 01:13:30
テンプレ長くなったなあ。

名著厳選ってのならともかく、シェル本網羅ってのは
尼損で検索すればいいだけだしテンプレとしては要らないんでないの。
967名無しさん@お腹いっぱい。:2006/03/26(日) 01:14:24
>>966
▼遅い
968名無しさん@お腹いっぱい。:2006/03/26(日) 03:52:11
いい加減長いし、Wiki でも作る?
969名無しさん@お腹いっぱい。:2006/03/26(日) 04:01:11
次スレで刈り込めばいいんじゃね。
970名無しさん@お腹いっぱい。:2006/03/26(日) 08:33:16
>>959
>  Linuxユーザは/bin/shの正体がbashなので特に注意。

→bashであることが多いので

ashなデストリも増えてる。
971名無しさん@お腹いっぱい。:2006/03/26(日) 08:40:10
>>966
確かにこのリスト、アマゾンの「最近の出版年月の順番」なだけのような…

俺のお奨めは、

詳解 シェルスクリプト アーノルド ロビンス (著), ほか
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/
972名無しさん@お腹いっぱい。:2006/03/26(日) 08:49:28
過去スレも長くなってきたら省略するか最後に回すかした方がいいな。
その2とか参照する暇人はいないだろう。
973名無しさん@お腹いっぱい。:2006/03/26(日) 09:21:01
>>970
くだらん言い訳してないでLinux板にbashスレでも立て てお け
974名無しさん@お腹いっぱい。:2006/03/26(日) 10:41:42
もうあるよ。
975名無しさん@お腹いっぱい。:2006/03/26(日) 11:51:48
>>957
zshでも使えるね。「bash依存」で片付けられないわけか。
976名無しさん@お腹いっぱい。:2006/03/26(日) 12:05:45
>>970
ちょっと話は変わるけど、
ashって、バージョンによって echoが echo -eを含んでいたり、いなかったり、
バージョンによってtypeコマンドが実装されていなかったり、
letコマンドの動作がbash/zsh/kshとは違ったり、、と
ashはashで変なところがあって違和感ない?
977名無しさん@お腹いっぱい。:2006/03/26(日) 12:36:28
>>976
FreeBSDだけの話するなよw
978名無しさん@お腹いっぱい。:2006/03/26(日) 12:59:51
>>977
FreeBSDだけじゃないだろ。
979名無しさん@お腹いっぱい。:2006/03/26(日) 13:05:21
愛から和ズレベルヒクイナw
980名無しさん@お腹いっぱい。:2006/03/26(日) 13:30:31
981名無しさん@お腹いっぱい。:2006/03/26(日) 13:32:45
ashはNetBSDのもの。
確かに、バージョンによって変種多杉。
982名無しさん@お腹いっぱい。:2006/03/26(日) 13:35:04
で、>>949 は誰もわからないのですか?
983名無しさん@お腹いっぱい。:2006/03/26(日) 13:37:41
中国語でおk
984名無しさん@お腹いっぱい。:2006/03/26(日) 13:37:47
>>981
FreeBSDはいろいろ手入れてるぞ、確か。
985名無しさん@お腹いっぱい。:2006/03/26(日) 13:39:54
>>982
質問の意味がわからない。
986名無しさん@お腹いっぱい。:2006/03/26(日) 13:41:04
>>984
Debianのashもいろいろ手を入れてる。
同じashのつもりだとハマる。
987名無しさん@お腹いっぱい。:2006/03/26(日) 13:46:15
pdkshとkshもいろいろ違う。
988名無しさん@お腹いっぱい。:2006/03/26(日) 13:46:52
bashよりはまとも。
989名無しさん@お腹いっぱい。:2006/03/26(日) 13:51:28
おまえらのashで、`< file` は使えますか?
990名無しさん@お腹いっぱい。:2006/03/26(日) 13:58:07
POSIX的には `< file` が使えないといかんのか。
991名無しさん@お腹いっぱい。:2006/03/26(日) 14:02:07
Bourne Shell的には `< file` なんて使えちゃダメ。
992名無しさん@お腹いっぱい。:2006/03/26(日) 14:04:11
だったら、Bourne Shell的には ashで $(command) が使えるのもおかしいよね?
993名無しさん@お腹いっぱい。:2006/03/26(日) 14:07:42
Bourne Shell的にはSolarisの/bin/shが一番マトモ。
994名無しさん@お腹いっぱい。:2006/03/26(日) 14:10:06
ashはash。shはsh。
995名無しさん@お腹いっぱい。:2006/03/26(日) 14:32:34
sh同士はそんなに違わない。ash同士は結構違う。
996名無しさん@お腹いっぱい。:2006/03/26(日) 14:47:47
997名無しさん@お腹いっぱい。:2006/03/26(日) 14:48:57
ashって、Fedoraではすでに削除されてるじゃん。
998名無しさん@お腹いっぱい。:2006/03/26(日) 14:52:10
999名無しさん@お腹いっぱい。:2006/03/26(日) 14:54:34
ashのautoconf化、./configure; make一発キボン。BSD makeイヤン。
1000名無しさん@お腹いっぱい。:2006/03/26(日) 14:54:58
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。