[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 22:57 / Filesize : 109 KB / Number-of Response : 480
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 20:58:04 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>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 でトレースしましょう。

シェルスクリプト総合 その10
pc11.2ch.net/test/read.cgi/unix/1202725267/

2 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:01:00 ]
□過去スレ:
シェルスクリプト総合 その10
pc11.2ch.net/test/read.cgi/unix/1202725267/
シェルスクリプト総合 その9
pc11.2ch.net/test/read.cgi/unix/1187130302/
シェルスクリプト総合 その8
pc11.2ch.net/test/read.cgi/unix/1171517324/
シェルスクリプト総合 その7
pc11.2ch.net/test/read.cgi/unix/1157601611/
シェルスクリプト総合 その6
pc11.2ch.net/test/read.cgi/unix/1143302182/
シェルスクリプト総合 その5
pc11.2ch.net/test/read.cgi/unix/1137801629/
シェルスクリプト総合 その4
pc11.2ch.net/test/read.cgi/unix/1131026501/
シェルスクリプト総合 その3
pc11.2ch.net/test/read.cgi/unix/1124889646/
シェルスクリプト総合 その2
pc11.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
pc11.2ch.net/test/read.cgi/unix/1101820646/

□関連スレ:
sed
pc11.2ch.net/test/read.cgi/unix/1085730992/
正規表現
pc11.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
pc11.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
pc11.2ch.net/test/read.cgi/unix/1102921590/

3 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:02:04 ]
□初心者向けリンク
「誰にでも」シリーズ
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/

□入門者向け書籍:
プロフェショナルシェルプログラミング
www.amazon.co.jp/exec/obidos/ASIN/4756116329/
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
www.amazon.co.jp/exec/obidos/ASIN/4797321946/
UNIXシェルプログラミング徹底解説
www.amazon.co.jp/exec/obidos/ASIN/4822280489/
入門Kornシェル
www.amazon.co.jp/exec/obidos/ASIN/4873110149/
入門bash
www.amazon.co.jp/exec/obidos/ASIN/4900900788/

□参考リンク:
UNIXの部屋 (沢山のコマンドの簡単な紹介など)
x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
www.opengroup.org/onlinepubs/009695399/utilities/contents.html

4 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:05:30 ]
□最近のシェルスクリプト本(1)

(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
amazon.co.jp/o/ASIN/4797326522/
(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
amazon.co.jp/o/ASIN/4798008842/
(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
amazon.co.jp/o/ASIN/4822282090/
(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
amazon.co.jp/o/ASIN/4797327286/
(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
amazon.co.jp/o/ASIN/4774122610/
(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特
別 (著)
amazon.co.jp/o/ASIN/4872802349/
(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
amazon.co.jp/o/ASIN/4797330635/
(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
amazon.co.jp/o/ASIN/4774123625/


5 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:06:37 ]
□最近のシェルスクリプト本(2)
(2005/07) UNIX シェルスクリプト辞典 川井 義治 (著)
amazon.co.jp/o/ASIN/4798109231/
(2005/08) シェルスクリプト ポケットリファレンス bash編 宮原 徹 (著), 川原 龍人 (著)
www.amazon.co.jp/o/ASIN/4774124818/
(2005/12) 図解でわかるLinuxシェルスクリプト・正規表現 小泉 修 (著)
www.amazon.co.jp/o/ASIN/4534040067/
(2006/01)詳解 シェルスクリプト アーノルド ロビンス (著), ネルソン・H.F. ベーブ(著), Arnold Robbins (原著), Nelson H.F. Beebe (原著), 日向 あおい (翻訳)
www.amazon.co.jp/o/ASIN/4873112672/
(2007/3) Linuxシェルスクリプトユーザー便利帳―bash2/bash3対応 伊藤 幸夫 (著), 寒川 陽美(著)
www.amazon.co.jp/o/ASIN/4798015954/
(2007/9) ゲームで極める シェルスクリプトスーパーテクニック 山森 丈範
www.amazon.co.jp/o/ASIN/4774132020/
(2007/10) UNIX/Linuxシェルスクリプトマスタリングハンドブック 野川 准子
www.amazon.co.jp/o/ASIN/4798017957/


6 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:07:57 ]
□関連書籍と関連リンク:

FreeBSD Hypertext Man Pages
www.freebsd.org/cgi/man.cgi

Linux JF (Japanese FAQ) Project.
www.linux.or.jp/JF/

Unix Programming Frequently Asked Questions 日本語訳
www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html

UNIXプログラミング環境
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


7 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:08:37 ]
シェルにはAシェル系、Bシェル系、Cシェル系、と種類があるようですが、
僕のPCのシェルはXtermというものみたいです。
これは、シェル系に当てはめると何シェル系なんでしょうか?

8 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:15:51 ]
>>7
X系。  

9 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 22:18:01 ]
>1 乙 >2 追加したほうがいいかもしれない関連スレとただし書き

LinuxユーザはLinux板へ

シェルスクリプト総合@LINUX Part4
pc11.2ch.net/test/read.cgi/linux/1210999497/

10 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:11:21 ]
>>7
端末(端末エミュレータ)とシェルは別の存在。
あなたは端末エミュレータの中でシェルを動かしているはず。

echo $SHELL




11 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:16:58 ]
solarisのdfとかduで、サイズをギガ表記にしたいんだけどスクリプトでちょちょいとできないですかね?

12 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:18:21 ]
solaris10以降は、-hオプションがついてる。

13 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:42:41 ]
-hがないんですよ
バージョンは失念しました

14 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 06:46:50 ]
SolarisのdfってBLOCKSIZEはみないのか?

15 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 08:37:13 ]
$(command) 1より `command` が推奨なのってなんで?

16 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 08:45:55 ]
SunOSとかNEWS-OSとかでも動くから

17 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 09:44:41 ]
1 が不要だから。

18 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 11:53:48 ]
コマンドをパイプで複数実行する際に最初のコマンドでエラーだったら
その後のパイプ以降は実行しないというのは可能ですか?

19 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 12:17:42 ]
パイプってのは、あるコマンドを実行してそれが終わったら出力を
次のコマンドに流して、という仕組みではない。
どうしてもそういうことがやりたければパイプを使わない。

commandA > tmpfile.$$ && commandB < tmpfile.$$

# unix ではなく dos のパイプはこういう仕組みだったりする。

20 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 23:27:43 ]
シェル用語では、コマンド1個だけでもパイプラインと言う。
パイプライン1(=command1)がエラーなら
パイプライン2(=command2)を実行しないのなら、
command1 && command2
でよい。
>>18 は command1 と command2 の標準入出力を、
pipe(2)でつなぐとは言っていないのだから。



21 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 23:36:39 ]
こじつければ(形式的には)個々はパイプラインかもしれないが、
「パイプで複数実行」には到底ほど遠いだろう

22 名前:名無しさん@お腹いっぱい。 [2008/05/22(木) 21:37:11 ]
質問させてください。
a.txtファイルにbbbと言う文字があった場合、その文字を完全に削除するにはどうしたらいいでしょうか?

-----
aaa
bbb
ccc
-----

例えばa.txtの内容が上ようなとき、下のように置換したい。よろしくお願いします。

-----
aaa
ccc
-----

23 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 21:46:57 ]
grep -v bbb a.txt>b.txt

24 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 22:03:03 ]
>>23
すみません。それをa.txtに保存したいです。

25 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 22:13:05 ]
(rm a.txt; grep -v bbb > a.txt) < a.txt


26 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 22:42:55 ]
$ sed -e '/bbb/d' -i '' a.txt

27 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 22:43:28 ]
>>25
すみません。iノード番号を変えずに保存したいです。

28 名前:22本人です ◆wSaCDPDEl2 mailto:sage [2008/05/22(木) 22:50:27 ]
>>26
ありがとう!sedでやりたかったです。
でもsedは使えるはずなのにエラーが出てしまいました。
エラー「sed: を読み込めません: そのようなファイルやディレクトリはありません」
バージョンが違うのでしょうか?ちなみにLINUXでやってます。

29 名前:22本人です ◆wSaCDPDEl2 mailto:sage [2008/05/22(木) 22:53:42 ]
あ、できました。
sed -i '/bbb/d' a.txt
みなさん初心者にも親切に教えてくれてやさしいですね。
ありがとうございました。

30 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 23:24:52 ]
>>29
おいおい、
sed -i '/bbb/d' a.txt
だと i-node番号変わるぞ。i-node番号変えちゃ駄目(>>27) じゃないのか?



31 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 23:30:06 ]
それは俺の創作だ。正直すまんかった。

32 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 23:34:24 ]
>>22 >>27
iノード番号を変えずに a.txtを修正する方法の正解の md5を貼っておくぞ。
25fe9a9dfa4248593f6aa361db01a222

さあ、オマエラ考えてみろ。

33 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 00:30:59 ]
cat a.txt > tmp; sed '/bbb/d' tmp > a.txt; rm tmp

34 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 00:39:56 ]
なんでiノード番号変わっちゃだめなの?

35 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 06:44:52 ]
>>33
一時ファイル作っちゃ駄目

36 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 06:49:17 ]
>>34
a.txtが他のファイルとハードリンクしていた場合、
sed -i とかだとハードリンクが切れてしまう。

37 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 09:35:47 ]
printf "g/bbb/d\nwq\n" | ed a.txt

38 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 11:25:56 ]
>>36
sed -iって、viなんかで編集するのとは違う理屈で動いているってことかな?

39 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 23:19:47 ]
GNU sedのソースを見てみたが、inplace編集では、テンポラリファイルを
開いて書き込んだのちリネームしているね。
sed-4.1.5/sed/execute.c:658 (開く方)
sed-4.1.5/sed/execute.c:712 (閉じる方)



40 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 16:21:15 ]
オーナーを保存できないじゃないか



41 名前:名無しさん@お腹いっぱい。 [2008/05/25(日) 08:58:02 ]
カレントディレクトリに、
hoge-1.22.3.tar.gz
hoge-1.23.tar.gz
hoge-1.24.1.tar.gz
fuga-3.31.1.tar.gz
fuga-3.5.4.tar.gz
:

みたいなソースのtarボールがたくさんあります。
これらのファイルのファイル名を見て、
最新バージョンだけ残して、最新以外のファイルを削除するシェルは
どうやったら発行できますか?

なお、タイムスタンプは当てにならないので、
あくまでファイル名だけで判断してください。

42 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 09:09:54 ]
シェルってゆうな。クズ。
発行ってゆうな。クズ。

43 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 09:23:44 ]
定番の突っ込み乙。で回答は?

44 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 09:35:44 ]
>>42
ウチの会社でシェって呼ぶ人もいるよ

45 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 10:19:39 ]
>>43
そもそも最新バージョンとそれ以外を同じところに溜めたのが間違い。


46 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 12:39:54 ]
パッケージ名の定義、バージョンの新旧の定義をしろ。

47 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 13:18:17 ]
>>46
お前自身の定義でいいから答えてみろよw

48 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 14:06:29 ]
断る。

49 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 15:06:27 ]
×断る。
○能力不足のためできない。

50 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 15:38:11 ]
「答えられないなら黙ってろ」というポリシーは変えたのか? www



51 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 15:54:09 ]
>>45-46 >>48
答えられないなら黙ってろ

52 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 17:39:31 ]
ぽまいら へるぷ!

hoge0501-0000.wav
hoge0501-0100.wav
hoge0501-0900.wav

の複数ファイルをmp3で小さくしたいのですよ
hoge0501-0000.wav →  hoge0501-0000.mp3

ってか0000の部分を0000のままにしたいのですが…
なんかいい知恵を!!! おながいします
lameとかgogoの使い方は大丈夫ですw

53 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 17:51:01 ]
>>52

infile=hoge0501-0000.wav
outfile=`basename $infile .wav`.mp3

あとは lameとかで $infile と $outfile を参照。

54 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 18:04:34 ]
>>52 おお、ファイル名そのものを変数としるのね

dクス! さっそくやってみます!!

55 名前:便乗炭/びんじょうたん mailto:sage [2008/05/25(日) 22:20:47 ]
あのぉ〜。。。。。

>>53 を連続で処理するには?

56 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/25(日) 22:32:03 ]
for infile in "$@";do outfile=`basename $infile .wav`.mp3; 変換する ;done

57 名前:便乗炭! mailto:sage [2008/05/26(月) 00:17:11 ]
>>56 ご丁寧にありがとうございます orz szo ヘコヘコ

58 名前:名無しさん@お腹いっぱい。 [2008/05/27(火) 18:01:23 ]
質問です。
if文で現在起動中のデーモンを確認するにはどうしたらいいでしょうか?


59 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 18:14:00 ]
>>58
pc11.2ch.net/test/read.cgi/linux/1211384088/211
の人?

60 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 18:14:58 ]
そんな事どうだっていいだろうがカス



61 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 18:18:01 ]
図星かw

62 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 18:51:36 ]
>>59 >>61
わからないなら黙ってろ

63 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 19:07:31 ]
>>60>>62
君も黙ってなよw
言ってることは同意だけど。

64 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 19:09:55 ]
pgrepは戻り値返すよ。
if pgrep hoge; then
何か
fi
で桶。

65 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 20:15:40 ]
>>64
ありがとうございました

66 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 21:20:30 ]
>>64
pgrep で確認してるのであって、if で確認してるわけじゃないと思うが。

67 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/27(火) 21:34:58 ]
>>66
本人がいいって言ってるんだから、それがすべて

68 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 01:35:31 ]
>>66
Cでも何でも条件で確認して、ifはその結果で分岐するだけだと思うが。

69 名前:名無しさん@お腹いっぱい。 [2008/05/28(水) 21:18:30 ]
1から100までの乱数を得るとかってでないですかね

70 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 21:22:39 ]
>>69
echo $((RANDOM*100/32768+1))



71 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:07:29 ]
ありがとうございます
変数であるんですね
ちなみに32768というのは?

72 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:09:29 ]
2の15乗。15bit乱数だから。

73 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:10:32 ]
bash依存乙w

74 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:28:12 ]
だからksh由来だと何度(ry

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:29:03 ]
>>73-74
わからないなら黙ってろ

76 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 22:45:00 ]
純正シェルだとどうやるの?

77 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 23:09:49 ]
純正ってナニ?

78 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 23:16:10 ]
bshじゃないか?
bashじゃ無いオリジナルの

79 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 01:10:09 ]
むかし、Bee Shell(ミツバチシェル)ってのを使ったことがあるせいか、
Bourne Shellのことはshか/bin/shと書いた方がいいような気がする。


80 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 02:18:20 ]
sh が bashのリンクになってるのって最近のlinuxだけ?



81 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 03:11:30 ]
>>79
HP-UXやAIXはksh改変版が使われている。
なんで、kshで拡張された便利機能もほとんど使えるようになっている。

82 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 05:28:36 ]
>>80
UbuntuやDebianの/bin/shはdash

83 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 06:45:40 ]
能書きはいいから、純正シェルでのやりかた答えろ

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 07:08:01 ]
>>66>>83
なんなの、この屑は


85 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 07:24:03 ]
純正シェルなんて言葉どこで覚えてきたんだ?

86 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 07:27:42 ]
>>85
わからないなら黙ってろ

87 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 07:28:49 ]
はーーーーーーい

88 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 07:34:09 ]
>>83
echo $$

89 名前:69 mailto:sage [2008/05/29(木) 10:47:07 ]
すいません
>>79をループして繰り返すと
3
20
43
70
81
10
15
49
60
87
みたいに1から100の間で増えて戻って増えてを繰り返します
この規則性をなくせないですか?

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 11:10:35 ]
>>89
echo $(($(head -c 2 /dev/urandom | od -An -d)*100/65536+1))



91 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 12:59:00 ]
おお
意味はまったく理解不能ですがこれでいけそうです
ありがとうございます

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 13:20:20 ]
>>90
OS依存、GNU依存、bash依存乙。

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 13:24:26 ]
>>92
わからないなら黙ってろ

94 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 13:34:33 ]
純正シェルではどうやるの?

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 16:32:15 ]
純正シェルでは

rm /bin

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 17:05:04 ]
>>95
わからないなら黙ってろ

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 17:14:20 ]
>>96
わからないなら黙ってろ

98 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 18:14:00 ]
わからないならオナってろ

99 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 22:09:56 ]
>>92
いちいち五月蝿いよ。
よりポータブルに直したい奴は、直して自分で書けばいいよ。

100 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 23:02:12 ]
>>99
>1
> bash/zsh/ksh/ashなどに依存する場合は明示しましょう。

って事なんじゃね。
つまり嫌味を言いながら実はこの決まりを代行してるツンデレ。

あと>92-94は>73-76の74が足りないな。おしい。



101 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 23:12:48 ]
>>100
わからないなら黙ってろ

102 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/29(木) 23:14:45 ]
うるさいのが一人いるなッ

103 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 00:38:12 ]


104 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 00:42:35 ]
でも、言ってることは正しいな
書くべきだよねえ

105 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 06:43:58 ]
>>101
わかっているから黙ってない

106 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 07:57:37 ]
>>100
明記できる奴は明記すればいい。
ポータブルに直せる奴は直せばいい。

>>92みたいな屑が一番邪魔。

107 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 08:45:48 ]
質問者が環境をちゃんと書けばいいんだよ。

108 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 08:50:20 ]
質問者の環境にかかわらず、純正シェルで動くことが条件。

109 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 09:59:15 ]
質問テンプレ

使っているOS名・バージョン: (※LinuxユーザはLinux板へ)
使っているシェルの名前・バージョン:
使っているシェルのフルパス:
移植性: 上記環境で動けば十分 / 多くの環境で動かす必要がある

110 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 10:12:44 ]
GNU/Linux, *BSD使い始めたころから補完ができるってだけの理由で特に理由もなくBash使ってるけど
他に何か良いShellないかな。
Bashに特に不満はないけど。




111 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 10:28:30 ]
zsh使ってみれば

112 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 10:28:37 ]
>>109 氏からの回答が欲しい場合は >>109 に従ってね。
でも俺はエスパーだから、OSとかバージョンとか書かなくても回答できちゃうよ。
気軽に質問してね。もち、Linuxユーザーの質問もOK。

113 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 11:14:08 ]
エスパー>>112からの回答が欲しい場合はエスパースレへ。
pc11.2ch.net/test/read.cgi/unix/1207042632/

前任のエスパーは質問者の環境壊して再インストールさせる低レベルだったけど、
>>112はそんなアホじゃないだろうと期待。

114 名前:名無しさん@お腹いっぱい。 [2008/05/30(金) 11:41:59 ]
カレントに移動しないと起動できないソフトがあります。
これを、カレントを移動しなくて済むようにするシェルはできませんか?
>>109 さん以外の方、回答をよろしくお願いします。

115 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:39:40 ]
CentOS bin/bashの条件式での質問です。

前提としまして、file1、file2、file3、file4という似たファイル名が
複数あるとします。
そこで条件式内で、[ -e file* ]
というようなfileから始まるファイルに一致させたいのですが
どのように記述したら宜しいのでしょうか?

116 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:40:52 ]
>>115
シェルスクリプト総合@LINUX Part4
pc11.2ch.net/test/read.cgi/linux/1210999497/

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:44:34 ]
>>115
そういう場合はlsの戻り値を使う。

if ls file* > /dev/null 2>&1 ; then
hoge
fi


118 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:45:16 ]
>>116
わからないなら黙ってろ

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 13:48:09 ]
>>116
スレ間違えてしまいすいません、誘導ありがとうございます。
>>117
lsの戻り値を条件式で使えたとは盲点でした。多少分からない
箇所がありますので調べつつ挑戦します。ありがとうございました

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 14:10:40 ]
>>118
わかっちゃいるけどやめられない



121 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/30(金) 20:38:57 ]
>>114
普通に、

#!/bin/sh
cd /path/to/hoge
exec ./hogesoft "$@"

で桶。cdしてしまうように見えるが、シェルスクリプト自体が別シェルなので
カレントディレクトリは実行時のディレクトリから変わらない。

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 03:49:40 ]
こんなスクリプトを書いてプロセス監視&常時起動させていますが、
数時間走らせると、★の行を食ったまま、停止してしまいます。 orz
原因&解決策か、もしくはタイムアウトを設定する方法を
ご教示いただけませんでしょうか。。

#!/bin/sh
while true
do
★ret=`ps -ef | grep "collector.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge.php &
fi
sleep 1
done


123 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 06:14:58 ]
pgrepないの?

124 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 07:19:56 ]
>>122
まず、wc -lしたりretに代入したりしてるのが無駄。
grepは戻り値返すから、

if ps -ef | grep "collector.php" | grep -v grep > /dev/null; then

で桶。

125 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 07:34:52 ]
>>122
発想を転換しろ。
もし、php /hoge.phpを起動して、落ちたら再度起動、ってやりたいだけなら、

while :
do
php /hoge.php
done

だけでOK。&は付けない。sleepもpsも必要なし。

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 17:03:52 ]
>>123,124
ありがとう、おっしゃる通り。
試してみます。

>>125
惜しい。
実はhoge.phpは1種類ではなく、3種類存在します。
実際はret〜fi間が、3個あり、hoge1.php〜hoge3.phpを対象にチェックしています。
>>122のコードで、collector.phpとhoge.phpは同一です。コピペミススマソ。
#!/bin/sh
while true
do
★ret=`ps -ef | grep "hoge1.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge1.php &
fi
★ret=`ps -ef | grep "hoge2.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge2.php &
fi
★ret=`ps -ef | grep "hoge3.php" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
php /hoge3.php &
fi
sleep 1
done

hoge1.php の終了を待たずに hoge2.php や hoge3.php の
プロセスチェック&起動を行いたいため、末尾に&を付けている次第です。

hoge1.php〜hoge3.php毎にシェルスクリプトを3個作成すれば
>>125の通りで期待が叶いますが、それはそれで無駄な感じがしまして。

127 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 17:23:55 ]
>>126
シェルスクリプトひとつでできる。
while文の最後のdoneに &を付けるのがポイント。


while :
do
php /hoge1.php
done &

while :
do
php /hoge2.php
done &

while :
do
php /hoge3.php
done &


128 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 18:12:48 ]
>>127
げ、すげぇ。できました。。プロセスが3つ立ち上がるのですね。
ありがとうございます!!
シェルスクリプトすごいっすねぇ。。。感動。

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 18:53:56 ]
質問: grep の -q オプションってどの grep(1) でも使えたっけ?

130 名前:名無しさん@お腹いっぱい。 mailto:age [2008/05/31(土) 18:55:12 ]
年中無休発狂妄想爆裂憤死寸前粘着真性キチガイ包茎池沼病気猿男(狂猿)◆QfF6cO2gD6による気違いカキコの続き:

初心者もOK! FreeBSD質問スレッド その95
pc11.2ch.net/test/read.cgi/unix/1210728872/706-708,710,712

706 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:24:19
AAとコピペばっか

707 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:25:33
アク禁報告を誰もしてないのが不思議w
してても無視されてるのか

708 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 16:31:15
>>704
假性ですが何か?

710 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 17:45:14
粘着キチガイ男(狂犬)をアク禁にしたらリアルに無差別殺人起こす可能性が高いからな。

712 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/05/31(土) 17:59:51
ビビって書き込み止めたのか?と煽ってみる
--------------------------------------------------------------------------------------------
UNIX板のあちこちのスレッドを荒らしている凶悪メンヘラ・真性キチガイ猿粘着◆QfF6cO2gD6。
いつも荒らしを憎むようなレスをするが、実際に荒らしているのは自分。
気色の悪い年中無休発狂粘着真性キチガイ包茎池沼病気猿男(狂猿)◆QfF6cO2gD6があちこちのスレに
遂に理解できないような基地害カキコをし始めた!気持ちが悪い…。



131 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:09:54 ]
>>129
unlike GNU grep, traditional grep did not conform to
POSIX.2, because traditional grep lacked a -q option and
its -s option behaved like GNU grep’s -q option. Shell scripts
intended to be portable to traditional grep should avoid both -q
and -s and should redirect output to /dev/null instead.

132 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:11:42 ]
ヘブライ語でおk

133 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:24:58 ]
要約すると、-qオプションがない古いgrepもあるから、
grep hoge > /dev/null にした方が移植性が高いってこと。

134 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:36:58 ]
>>131 >>133 Danke schoen

135 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/31(土) 19:48:04 ]
Bitte schöen

136 名前:名無しさん@お腹いっぱい。 [2008/06/01(日) 08:07:21 ]
質問です。
5から10までの数字をランダムに、しかも2桁に揃えて表示させたい。
空欄を埋めてください。

#!/bin/sh

空欄

echo $randtime

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 08:12:38 ]
>>136

randtime=`expr 0$((RANDOM*6/32768+5)) : '.*\(..\)'`

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 16:33:54 ]
rand() {
    dd if=/dev/random bs=1 count=2 2>/dev/null | od -A n -t u
}
randtime=$(printf "%02d" $(( 5 + $(rand) % 6 )))

139 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 17:01:40 ]
純正シェル、かつ、printf(1)なし環境でも動く方法:

randtime=`expr 0\`expr \\\`date +%S\\\` % 6 + 5\` : '.*\(..\)'`

` `が3重ネストしてるので注意。

140 名前:名無しさん@お腹いっぱい。 [2008/06/01(日) 19:57:10 ]
(;ω;)たちけて〜
#!/bin/sh
i=0
while [ $i -le 23 ] ;do
time=`printf $i"%02d\n"`
i=`expr $i + 1`
echo $time
done

↓結果↓  ↓目的↓
000       0000
100              0100
200              0200
        ・・・略
1000            1000
1100            1100
        ・・・略
2300            2300

0000〜2300 最初から出力4桁にしたいでつ・・・ 
どこがおかしいのかおせいて〜(;ω;)ブワッ



141 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:02:40 ]
printf "%02d00\n" {01..23}

142 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:18:41 ]
>>140
i=0;while [ $i -le 23 ];do printf '%02d00\n' $i;i=`expr $i + 1`;done


>>141
bash依存失格。

143 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:33:37 ]
seqが使えるなら
seq -f "%02g00" 0 23

awkで書くなら
awk 'BEGIN { for (i = 0; i < 24; i++) printf("%02d00\n", i) }'

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:51:55 ]
printfがないOSもある。

i=0;while [ $i -le 23 ];do expr 0"$i"00 : '.*\(....\)';i=`expr $i + 1`;done

145 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 20:58:05 ]
exprはどこにでもあるの?

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 21:05:12 ]
exprもないOSのために、
純正シェルで、内部コマンドのみで実現。

z=0;set -;while [ $# -le 23 ]; do [ $# -ge 10 ] && z=; echo $z$#00; set "$@" d; done

147 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/01(日) 23:56:19 ]
>>140でつ

>>141 エラーが出てしまった・・・・・・{01..23}の書き方はzshらしいです
>>142 でけた!
>>143 sedあります! あ、seqか 出来た出来たです!
>>144 printfあるけどその方法もでけた!
>>145 Linux/FedoraとCentには入ってましたSunOSや*BSDは存じ上げません
>>146 set の使い方がにくいですw

>>142-146 Grateful !!

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 00:13:39 ]
cat -n とか nl とか使う手もあるよね

149 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 01:37:46 ]
Bシェルで質問です。
あるディレクトリのstyファイルの文字コードを全てnkf -sで変換するシェルを作りたいのです。
しかし、全てのファイルに対して操作する方法がわかりません。
つまり、
nkf -s *.sty > *.sty2
mv *.sty2 > *.sty
rm *.sty2
みたいなことがやりたいんですが、この部分どうしたらいいのでしょうか。

150 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 01:58:11 ]
>> 149

for i in *.sty; do nkf -s $i > $i.sjis; mv $i.sjis $i; done




151 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 01:59:07 ]
find使う

152 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 09:07:16 ]
>>149
シェルってゆうな。クズ。

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:15:53 ]
>>149
nkf -s --overwrite *.sty

154 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:19:34 ]
シェルってゆうなってうるさい奴ってなんなの?バカなの?
スクリプトのスレなんだから分かるだろうが。氏ねよめんどうくせえ

155 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:23:38 ]
HDDのバックアップを効率的に行なうシェルを発光したいんですが、
初心者でも簡単にできますか?

156 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:25:29 ]
スルーできないやつってなんなの?

157 名前:名無しさん@お腹いっぱい。 [2008/06/02(月) 11:27:00 ]
お助けください。
.(ドット)で区切って後ろから1番目と2番目を抜き取るにはどうしたらいいでしょうか?

例えば
aaa.bbb.ccc.dddをccc.dddに置換したいです。

158 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:30:19 ]
>>157
sed 's/[^\.]*\.[^\.]*\.//'
cut -d. -f3-

159 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:32:03 ]
あ、前2つを削るんじゃなく後ろ2つを残すのか。

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:33:56 ]
>>157
hoge=aaa.bbb.ccc.ddd
expr $hoge : '.*\.\([^.][^.]*\.[^.][^.]*\)'

と言うシェルが発酵できます。



161 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:48:33 ]
純正シェル、内部コマンドオンリーバージョンを求めるなら、

hoge=aaa.bbb.ccc.ddd

IFS=.
set $hoge
while [ $# -gt 2 ]; do shift; done
echo $1.$2


162 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:52:17 ]
echo "aaa.bbb.ccc.ddd" | sed -e 's/^\(.*\)\.\([^\.]*\)\.\([^\.]*\)$/\3.\2/'

163 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 11:53:41 ]
ごめん。なんで \2 \3を入れ替えたんだろう?w
echo "aaa.bbb.ccc.ddd.eee" | sed -e 's/^\(.*\)\.\([^\.]*\)\.\([^\.]*\)$/\2.\3/'

164 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 12:38:02 ]
腐ってやがる 早すぎたんだ

165 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:11:19 ]
>>155
rsyncかddでググれ。
話はそれからだ。

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 13:18:04 ]
>>165
発光は?

167 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:16:08 ]
echo ^G

168 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:22:42 ]
vbell限定だた

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:24:11 ]
while :
do
xset led 1
sleep 1
xset -led 1
sleep 1
done

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:35:15 ]
for hoge in *.*.*
do mv $hoge $(echo $hoge |awk -F. '{print $(NF-1)"."$NF}')
done



171 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 17:36:25 ]
あ、違った

172 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 19:32:14 ]
banner をもっと長い文字列で使いたいんですが

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:28:24 ]
そうですか

174 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:34:12 ]
自分で発光したシェルをコマンド化するにはどうするんですか?
もしかして、コンパイルとか打つんですか?

175 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:39:12 ]
そーでーす

176 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:45:14 ]
ふたつのテキストファイルがあったとします。
テキストファイルの中の文章は単語が改行で区切られています。

$ cat 1.txt
apple
book
cat
desk
earth
fuck

$ cat 2.txt
april
born
cook
dinner
engine
fuck

1.txt と 2.txt で完全一致しているものを抽出するシンプルな方法を
探しています。何か良い方法ありませんか?

177 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:55:33 ]
sortしたものをdiffやcommに食わせるのが簡単だけど。
並べ替えアウト?


178 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 21:59:29 ]
それぞれ、中身に同じ行がないなら、
sort 1.txt 2.txt | uniq -d
かな

179 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 22:02:55 ]
>>177OKです。
>>178完璧です。ありがとうございました。

180 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 00:15:13 ]
sh -c 'echo $1' a b c
で、b が出るのは正常?



181 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 00:39:14 ]
正常

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 02:06:40 ]
>>158 >>160 >>161
ありがとうございました!感謝!

183 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 03:43:47 ]
質問です。
aaa=`commando1`
bbb=`commando2`
このような「``」内のコマンドを1つにまとめるにはどうしたらいいでしょうか?

例えば
#!/bin/sh

temp=`ls -l $1`
pram=`echo $temp | cut -d " " -f 6-8`
echo $pram

tempとpramで分けてるものを1行でまとめたいです。

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 04:07:13 ]
ネストすればいい。

185 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 06:53:17 ]
>>183
ネストする必要ない。というか、tempに入れる必要ない。

pram=`ls -l $1 | cut -d " " -f 6-8`

186 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:01:25 ]
>>184
一般論の話だろ。
その例に限れば、それでいいけど。

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:44:26 ]
POSIXシェルを仮定して「$()」使うのが正解。

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:08:58 ]
>>187
アフォか

189 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:12:22 ]
>>183
一般論として、

aaa=`command1`
bbb=`command2 $aaa`

なら、

bbb=`command2 \`command1\``

で桶。


190 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:17:54 ]
>>188
なんで?



191 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:19:05 ]
純正シェルで動かないから。
>>189 という正解があるのに、わざわざポータビリティを落す $()を使う必要ないから。

192 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:21:04 ]
>>191
可読性が落ちる。

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:22:50 ]
>>192
それはシェルに慣れてないお前だけ。

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:23:46 ]
3重、4重のネストが必要なときはどうするのだ? www
大半のシステムで使用できる$()を避けて可読性を劣化させる必要は無い。
このスレに巣食っている原理主義者以外は$()使うのが正解。

195 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:12 ]
>>181
一般論として仮定しちゃって良い?


196 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:13 ]
可読性を言うなら、むしろネスティングを避けて
一旦別変数に入れる方式の方がいいぞ。
>>183 の質問の逆をやれってことね。

197 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:24:53 ]
>>194
Solarisは大半のシステムじゃないのかい?

198 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:27:12 ]
Solaris?なにそれ、おいしいの?

199 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:34:17 ]
Solarisを見落としていた >>194 の負けだな

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:36:22 ]
>>194
3重ネストは \\\`command\\\`
4重ネストは \\\\\\\`command\\\\\\\`

何か問題ある?w



201 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 13:41:28 ]
Solarisならば、普通kshかxpg4シェル。

202 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 20:09:41 ]
質問させてください。

テキストファイルの内容が以下のようになっています。
日付 文字列

上記文字列に改行コードが存在する場合、以下のようになります
20080602 aaabbbccc
20080602 dddee
ef
ff
20080602 ggghhhiii

これをこのように正しく変換するにはどうしたらいいでしょうか?
20080602 aaabbbccc
20080602 dddeeefff
20080602 ggghhhiii






203 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 20:18:28 ]
202の続き

とりあえずない頭を絞って先頭文字が「2008」でない行に|を入れて以下のような
レイアウトにし

例)
20080602 aaabbbccc
20080602 dddee
|ef
|ff
20080602 g
|gg
|hhhi
|ii

過去ログにあったコマンドを参考に以下のコマンドを実行しましたが
「(rm a.txt; sed 'N; s/\n|//; P; D' > a.txt) < a.txt 」

例)
20080602 aaabbbccc
20080602 dddeeef
|ff
20080602 ggg
|hhhiii

と、いった感じですべて変換することができません。

よろしくお願いします。

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 20:41:47 ]
>>202
これでどうだ。
頭に余分な空行が出るのは無視してね


while read line
do
set $line
if [ $# = 1 ]; then
echo -n $1
else
echo
echo -n $1 $2
fi
done < file.txt
echo


205 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 21:33:33 ]
>>204
ありがとうございます。

すみません。わたしの記載漏れになりますが文字列の中にはスペースも存在します。
詳しく言いますとこの文字列とはSQLなのです。
なので「select * from table」のようになります。

せっかく考えて頂いたのにすみませんでした。



206 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 21:38:11 ]
後出し乙。これで回答を得られることはないであろう。

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 21:46:02 ]
わしが代わりに答えてあげよう。
正解のmd5じゃ。
9c42265ebade7ace4e45b75b8d41f7ab

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 22:45:18 ]
初心者な質問ですいません。
自分で書いたシェルをコマンドとして発光するにはどうするんですか?

209 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 22:47:26 ]
発酵させるには、ながーい時間がかかるよ

210 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 23:22:26 ]
>>207
お題を自分で解いた(かもしれない)だけで、答えたことになってないよな




211 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 06:27:08 ]
>>207
そのmd5逆算したところ、確かに動きました。感謝です。

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 07:33:03 ]
すげぇなおい

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 11:28:09 ]
>>202
どっちも書き方として邪道かつ汚いけど結果オーライなら。

cat $SQL_FILE | awk '{ if(/^20[0-9]+ /) { printf "\n"; } printf $0; } END { printf "\n" }'
cat $SQL_FILE | perl -ne 'chop; print "\n" if(/^\d{8}\s/); print; END{ print "\n" }'

214 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 15:08:22 ]
全然シェルスクリプトじゃない件

215 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 15:17:43 ]
#!/bin/sh

awk '{ if(/^20[0-9]+ /) { printf "\n"; } printf $0; } END { printf "\n" }'

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 15:22:33 ]
awkスレと聞いて

217 名前:215 mailto:sage [2008/06/04(水) 15:27:14 ]
まぁ >>6 にも入ってるし、sed awk はテキスト処理では欠かせないな。
>>213 は、改行コードの扱い方が珍妙で、よく出来てると思った。

218 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 23:33:14 ]
192168000001 を 192.168.0.1 に変換するスマートな方法を教えてください。
一オクテットが、3 ケタずつに区切られています。

219 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 23:43:18 ]
echo 192168000001 |
sed 's/.../& /g' |
awk '{print $1+0 "." $2+0 "." $3+0 "." $4+0}'


220 名前:202 mailto:sage [2008/06/04(水) 23:45:50 ]
>>213
ありがとうございます。

出来ました。
なるほど改行コードを削除することに躍起になっていましたが、
マッチした時だけ前に改行コードを付けるというやり方もあるんですね。
なかなか思いつかない発想だったので勉強になりました



221 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 23:54:42 ]
echo 192168000001 | sed 's/.../&./g;s/¥.0*/./g;s/¥.¥./.0./g;s/¥.$//'

s/¥.00?/./ とか書きたいにゃー。


222 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 00:02:30 ]
echo 192168000001 | sed 's/.../& /g;s/ $//;s/ /./g'

223 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 05:47:11 ]
sh -c 'echo fugafuga'

eval 'echo fugafuga'
が異なるのは、どのような時なのでしょうか。
fugafugaの部分は任意です。

224 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 06:33:34 ]
>>220
おいおい、>>213 の改行付加の発想は >>204 と同じだぞ。
>>204 の時点でその方法に気づけ。
>>204 を改良して、スペースが入った場合の問題は対処できる。
awk/perlなどのシェル以外のものを使わずにね。

225 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 06:37:46 ]
>>223
たとえば、

set hoge
sh -c 'echo "$@"'

と、

set hoge
eval 'echo "$@"'

は異なる。

226 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:30:52 ]
すいません
スペース区切りの文字列をカンマ区切りに変えたいんですが、
スペースが一つとは限りません

a hoge
b ge
c h

これを
a,hoge
b,ge
b,h

こんな感じです
bashでできないですか?
awkも使えます

227 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:33:22 ]
すいません
条件がもう一つ
カラム数は固定じゃないです

228 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:33:44 ]
sedは禁止?

sed 's/ */,/g'

229 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:35:50 ]
while read line
do
    set -- $line
    echo -n $1
    shift
    for i in "$@"
    do
        echo -n ,$i
    done
    echo
done

230 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:40:56 ]
>>228
ダウト。試してから書き込めよ。



231 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:42:08 ]
>>230
試したよ。
何で2ch読んでる?

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:45:44 ]
何をどう試したんだ

233 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:47:20 ]
>>228
echo 'aaa bbb ccc' | sed 's/ */,/g'
,a,a,a,b,b,b,c,c,c,



234 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:48:54 ]
$ echo 'aaa bbb ccc' | sed 's/ */,/g'
aaa,bbb,ccc

235 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:49:14 ]
sedなら正解は、

sed 's/[ ][ ]*/,/g'
だな。

236 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 14:50:50 ]
>>234 をコピペして実行してみろw

$ echo 'aaa bbb ccc' | sed 's/ */,/g'
,a,a,a,b,b,b,c,c,c,

この問題を避けるには、>>235 が正解。

237 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 15:05:50 ]
「この問題」って、専ブラを使わずに煽る○○がいる問題って意味だな

238 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 15:27:44 ]
で、>>226は納得したのか?

239 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 00:58:06 ]
>>235
これの意味がよくわからんのだが・・・
なんでこれでいいの?

240 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 01:19:14 ]
[ ] の意味と>>230がキレた理由はわかるかね?



241 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 01:23:10 ]
>>239
解説するのも野暮だが…
>>230,>>232はスペースが2個あることに気付かず醜態を晒してしまったわけだが、
>>235のように書いておけば見落とし確率が下がって嬉しいという記法。

242 名前:239 mailto:sage [2008/06/06(金) 01:37:14 ]
>>240
>>241

すまん
shなんだけどlinux(fedora8)
じゃだめなんかな?

sh-3.2$ echo 'aaaaaa bbbbbbb ccc' | sed 's/[][]*/,/g'
,a,a,a,a,a,a, , , , , , , , , , , , , , ,b,b,b,b,b,b,b, , , , , , ,c,c,c,
sh-3.2$

243 名前:239 mailto:sage [2008/06/06(金) 01:39:25 ]
自己解決
[]じゃなくえ[ ]だったわ
あほだおれ

244 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 04:51:10 ]
あの夜、俺は初めて彼女とMMXした。
「もうそろそろiiyama? 君のI/ODATAを確かめたいんだ。XT」
MITSUMIあうと、彼女のMECはALBATRONとしていた。
緊張した俺は焦り彼女のソケット478をAOpenしようとした。
「ちょ、ちょっとRADEON!何をSis」もう俺は既にエレコム。
Sound Blasterのホックを外すとはちきれそうなPioneerがBarracuda
でもBIOSTARは意外と玄人志向だった。
「恥ずかしいわ。あまりミネベア・・・」
SCSIをTORICAるとKEIANをSOLTEKした痕がアルファデータ。
あそこはSUPERMICROだった。OMEGAドライバも少し鼻についた。
しかし、彼女のCREATIVEを刺激しつつ俺のセレロンを
彼女のSerial-ATAからASUSに這わせると、「FireWire〜ン」
「もう、ATI」「COREGA欲しいんだろ?」「早くリテール」
俺は激しくTSUKUMO。「インテルはいってるっ!IEEE!1394!」
「あぁ・・・もうDell!」

245 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 06:19:56 ]
OFSのあるawkなら、
awk 'BEGIN { OFS=","} { $1 = $1; print $0 }'

246 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 06:32:12 ]
>>241
見落としたのじゃなくて、本当に(HTML解釈上で)複数のスペースが
1個のスペースで表示されてしまうから、「>>228 >>234 をコピペしても動かない」が正解。
>>235 のように書き込めば、コピペしてもちゃんと動く。
醜態を晒したのは >>228 >>234 の方。

ちなみに、宣ブラ使ってもやっぱり >>228 >>234 のスペースはひとつだよ。

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:07:53 ]
ダサい専ブラ

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:20:28 ]
たしかにダサい専ブラだな。

249 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:31:46 ]
ブラウザ依存も、Bash依存同罪。
ポータビリティ考えて書き込めよ。

250 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:41:33 ]
いつのまにか落ちてたので、立てました。

zsh その5
pc11.2ch.net/test/read.cgi/unix/1212677877/



251 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:45:33 ]
sed -r 's/ +/,/g'
の方が良くね?

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:49:28 ]
どこのsedだよ

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:50:10 ]
/bin/sed

254 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 08:51:37 ]
$ type sed
sed is a shell builtin

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 09:02:22 ]
大半のシステムで使用できる sed -r を避けて可読性を劣化させる必要は無い。
このスレに巣食っている原理主義者以外は >>251 使うのが正解。

256 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 09:20:12 ]
自分が読めない = 可読性が低い

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 10:01:25 ]
sed 's/  */,/g'
これなら文句はねえよな?

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 10:09:26 ]
>>257
>>228と同じじゃん。
文句あるみたいよ。

259 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 10:11:21 ]
>>258
>>228とは違う。こっちはちゃんと&nbsp;を使ってるんだが
まだ空白がつながって見えるかな?

ナマの空白をつなげたら、HTML仕様的にはくっつくのが当たり前だよ

260 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 11:49:01 ]
>>226
tr -s ' ' ,
でいけないか。



261 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/06(金) 20:02:12 ]
sed 's/ * /,/g'

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/07(土) 10:18:23 ]
>>254
いいな

263 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/08(日) 02:28:12 ]
結婚を考えていた彼女が処女じゃなかったんです7

1 :最強の負け組み:2008/03/01(土) 05:37:53 ID:YrfLoASe
ショックでした。
もしやもしやと思っていたのですが
面と向かって告白された時は目の前が真っ暗になりました。
「処女とかそんなの関係ない!」
そう自分に言い聞かせてきましたが、やはり限界がきてしまい
彼女に別れを告げました。
知り合いに言うと
「は?そんなくっだらない事であんないい子と別れたの?
ばっかじゃね?もうあんな子絶対知り合えないぞ?」
とボロかすに言われました。
頭では判っているのに心で理解できないんです。
私自身、もう頭の中がぐちゃぐちゃで訳がわかりません。
彼女を傷つけてしまったのでしょうか?
別れの時、彼女は黙って頷き
「じゃあね」
と笑って去っていきました。
もう私には彼女の気持ちがどうなのか
あの微笑がなんだったのか理解できないのです。
やはり私は馬鹿な事をしたのでしょうか?

264 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/08(日) 05:17:54 ]
>>263
echo じゃあね
: -P
exit


265 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 01:04:38 ]
ふともも画像が100〜400x810pxくらいのサイズであったとします。
横幅が1440pxを超えないように画像を結合するスクリプトを書きたいのです。
結合する画像の組み合わせは特別に指定しません。
横幅が1440以下でかつなるべく大きければ何でもいいです。

たとえば、画像は40枚とします。
1.jpg 300x810
2.jpg 300x810
3.jpg 300x810
4.jpg 300x810
5.jpg 300x810
6.jpg 300x810
**************
40.jpg 200x810

だとしたら、1,2,3,4 を結合させて image1.jpg (1200x810px)を作ります。
それ以降も同様なことを繰り返します。

お願いします。

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 01:23:06 ]
ふともも画像について詳しく

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 01:51:05 ]
うん、画像のふとももが実際どうなのかによって対処法も違うよね。

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 05:26:55 ]
おまいら少しは協力してやれよw

で、画像の件なんだがね。。。


269 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 10:51:46 ]
画像のサンプルがないことにはどうにもならん。

270 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 11:56:21 ]
>>265
いわゆるナップサック問題なので、最適解を求めるのはシェルスクリプトには荷が重い。



271 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 12:23:52 ]
>>270
最適解じゃなくていいから、指定サイズ以下に並べられる
シェルを書いてうpしてください。

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 13:08:20 ]
最適じゃなくていいなら
頭から順にならべて1440を越えたら次に行けばいいだけじゃん。

273 名前:265 mailto:sage [2008/06/09(月) 13:08:54 ]
サンプル画像です。
素材に対する文句はいっさい受け付けません。
home2.dip.jp/upload100_download.php?no=28514 mai
最近大量に脚画像つくったのがこれしかなかったので。

>>270
そうですか。
でも、しばらく回答を待ちます。

>>271
脚画像をならべるスクリプトは需要があるようですね。

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 14:02:24 ]
>>272
2次元だから、最適じゃなくても単純にはいかないだろ。

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 22:31:54 ]
ここは楽しい
モーレツインターネッツ教室でつね
ワッフルワッフル

276 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 22:41:50 ]
X軸方向に複数画像並べるだけで、Y軸方向には画像は並べない(1枚だけ)という仕様なの?

277 名前:265 mailto:sage [2008/06/09(月) 22:49:54 ]
>>276
そうです。

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 22:56:48 ]
条件後出し乙。
だったら質問するまでもない簡単な問題じゃん。
アフォらしいから回答するの辞めた。

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/09(月) 23:14:13 ]
便乗質問します。
X座標のドット数も、Y座標のドット数も可変の画像ファイルが複数あります。
これを、引数指定のX/Y座標の画面サイズに収まるように、
なるべく多く、なるべくすき間なく画像を並べるようなシェルを発光してください。

なお、実際の画像結合処理は別コマンドにやらせるので、
入力としては、各画像ファイルのファイル名とX/Yサイズが書かれたテキストファイルの

$ cat input.txt
1.jpg 300 200
2.jpg 530 250
3.jpg 410 180
4.jpg 640 480

を入力として、

$ hoge input.txt 1200 1280
とやると、
出力として、

1.jpg 0 0
2.jpg 300 0
3.jpg 0 300
:

みたいに、画像を配置するべき座標を画像の左上のオフセットで指定して
出力できればいいです。

最適配置にする必要はありませんが、当たり判定はちゃんとやって、
画像が重ならないようにしてください。

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 00:02:57 ]
いつからここは
エロ画像処理スレッドになったんでしょうか。



281 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 00:04:47 ]
しかも画像も貼らずに質問とは。

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 01:46:24 ]
ImageMagick で一発?


283 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 14:18:30 ]
シェルスクリプトでやる意味があるのか分からない。
ってのは禁句でしたかな。

284 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 19:31:40 ]
>>283
ぶっちゃけシェルスクリプトの最大の利点は手軽さなので、
わざわざ人に1から10まで聞くという手間をかけてまでシェルスクリプトでやる理由はないな。


285 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 19:42:03 ]
普段からシェルを使い慣れてないならあえて選ぶ意味はないような.

286 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 21:32:49 ]
じゃなくて、人に聞いてるんじゃなくて、オマエラに「お題」を出してるんだよ。
シェルで発光する方法を考えて、おおいに盛り上がってくれ。

287 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 21:36:09 ]
はい次の質問どぞ

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 21:37:08 ]
シェルで発光する方法まだーーーー???

289 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/10(火) 21:46:34 ]
>>288
はいよLinuxオンリーだが

setleds +num +caps +scroll

で発光できる

290 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 09:37:20 ]
お疲れさまでした。
では、次の課題です。

シェルで発酵する方法について考えましょう。



291 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 10:01:50 ]
ところで「シェルを発行する」っていうのはなにか決まった言いまわしなのか?
普通はこんな言いかたしないと思うんだけどこのスレではよく見る気がする

292 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 10:12:17 ]
pc11.2ch.net/test/read.cgi/unix/1202725267/860のネタからでしょ

293 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 10:29:40 ]
>>292
それのさらなる元ネタはあるんだろうか

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 11:15:26 ]
>>293
ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 12:11:11 ]
issue とか perse とか英語でも色んな言い方するよねえ

296 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/12(木) 12:17:40 ]
>>293
pc11.2ch.net/test/read.cgi/unix/1187130302/312

297 名前:名無しさん@お腹いっぱい。 [2008/06/14(土) 08:48:18 ]
引数指定のディレクトリを頂点として、それ以下のサブディレクトリを含む
ディレクトリツリー中のシンボリックリンクを探し、
そのシンボリックリンクそれぞれについて、
冒頭のディレクトリツリー内を指しているか、
それとも、ディレクトリツリーの外を指しているのかを
判断するシェルを発行してください。

なお、シンボリックリンクの先に実際にファイルがない場合もありますが、
実際にファイルがあるかどうかに関係なく、あくまでシンボリックリンクの
内容のPATHだけで判断してください。
(ブロークンリンクだからといって外部と判断してはいけないということ)

以上、お願いします。

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 09:03:06 ]
作ったシェルスクリプトを僕のPC上で発行しました どうぞ

299 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 16:32:04 ]
ここってさ、人にシェルスクリプト書いてもらうスレだったっけ?

300 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 16:35:34 ]
>>299
>>1
>スクリプトのお勉強・自慢・腕試しなどにどうぞ。
だそうなので、腕試しのお題を出しているんじゃない?




301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 18:40:09 ]
できないなら黙ってろの人最近来ないね。

302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 18:50:22 ]
>>298-299
わからないなら黙ってろ。

303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 19:00:44 ]
>>301
召喚士現る。


304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 19:02:21 ]
>>301
君、腕良いね

305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 19:05:04 ]
お題としてはなかなかいいんじゃない?
symlink読んでリンク先のフルパスに変換する関数を書くあたりがキモかな。

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 19:09:49 ]
>>305
わからないなら黙ってろ

307 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 19:48:53 ]
$RANDOM って癖があるのは仕様なんすか?
俺の環境でecho $((RANDOM*10/32768))を
出力させ続けると0と8がやたら多いw

なんかハードウェアのノイズを拾って数値化してるとか
いうのは読んだことあるけど。。。(実装によるとは思うけど)
これってもうしょうがないんすかね?

立派なアルゴリズムをもった乱数生成器とまでは
いかないものの、そこそこ精度が高い(?)乱数を
シェルコマンドで作るってできないすかね??

308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 20:06:23 ]
>>307
>>90

309 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 20:11:25 ]
/dev/*はOS依存なので、
メルセンヌツイスターあたりをシェルスクリプトで実装する方向で。

310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 20:26:02 ]
/dev/urandomはOS依存じゃないだろ。



311 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/14(土) 23:12:06 ]
>>297
ちょっと考えると簡単なようで、実はすごく難しいんじゃないかと思う。
find(1) + readlink(1) を使って基本的な判定はできる。
んが、ディレクトリへのリンクがあったり、意図的に難解なリンクが
作成されてたりすると非常に厄介じゃね?

具体的には、
../../../usr/local/../local/etc みたいなのとか。このぐらいなら、
dirname(1) + cd + pwd(1) でまだ何とかなりそう。

じゃあ今度は、
/usr/local -> /var/local という(変な)環境で、
/usr/local/etc/a.conf -> ../etc/b.conf とかなっちゃってると、
/usr/local/etc 内にあるようで実は /var/local/etc にあるということになる。

漏れのオツムじゃ解はよくわかんね。パス正規化ツールみたいなのあると
面白いかもね。

312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/15(日) 00:44:25 ]
シェルを発行だとか純正シェルだとか、
このスレは読んでて正直気恥かしくなる

313 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/15(日) 00:46:06 ]
>>312
わからないなら黙ってろ

314 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/15(日) 00:57:49 ]
>>312
もしかしてここがネタスレだと分かってなかったのか?

315 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/16(月) 22:34:33 ]
まあ叩き台ってことで、こんな感じ?

#!/bin/sh
base="`readlink -f $1`"
find $base -type l -print | while read i
do
 echo "`readlink -f $i` $i"
done | grep ^$base


316 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 01:43:42 ]
なんかシェルでゲーム作りたいんだけど
画面のクリアとかってどうやればいいの?

317 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 02:26:15 ]
clear

318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 10:07:08 ]
realpathは使わないの?

319 名前:名無しさん@お腹いっぱい。 [2008/06/17(火) 10:25:04 ]
#!/bin/csh -f

set com=$0

if ($#argv < 1 || $#argv > 3) then
echo Usage:$com start_line total_lines '[file_name]'
exit 1
endif
if ($#argv == 2) then
set s=$1
set t=$2
tail +$s | head -$t
else
set s=$1
set t=$2
set f=$3
cat $f | tail +$s | head -$t
endif

exit 0
echo ------------------

これだとエラーがでます。どなたか改良してください。お願いします。

320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 10:35:51 ]
>>319
以降はこちらへ

csh初心者質問コーナー
pc11.2ch.net/test/read.cgi/unix/1094041299/



321 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 16:55:34 ]
>>310
Solaris8 は標準では /dev/u?random はなかったはず。
Sun がパッチを配ってたので事実上あるような扱いだったけど。
Sol7 だとそれもなくて、フリーのデバドラをインストールしてた。


322 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/17(火) 16:58:56 ]
すでにEOLですからw

323 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/23(月) 21:24:15 ]
カンマ区切りcsvからhogeというカラムとその右4カラムを切り出したい
ただしhogeが何カラム目にあるかは不定
というのはちょちょいとできないですか?

324 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/23(月) 21:33:07 ]
フルスペックのcsvをシェルスクリプトで扱うのは荷が重い
ちょちょいでは無理

325 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/23(月) 21:36:17 ]
>>323
こういうことか?


#!/bin/sh

IFS=,
while read line; do
set $line
while [ $# -gt 0 ]; do
if [ "$1" = hoge ]; then
echo "$1","$2","$3","$4","$5"
break
fi
shift
done
done


326 名前:名無しさん@お腹いっぱい。 [2008/06/23(月) 22:09:52 ]
「,」を含む文字列で発狂するから駄目。

327 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/23(月) 22:53:43 ]
""ん中に改行まで入ることあるしな

328 名前:323 mailto:sage [2008/06/23(月) 22:57:51 ]
>>325
おお完璧です
どうもありがとうございます。
IFSってawkの変数かと思ってましたけど、shでも同じなんですね


sh-3.2$ cat a.csv
,,,,,hoge,,1,11,3,3nd
,,,,,,,,,,,,,,,,,,,,,,,,,,,,hoge,,1,11,3,3nd
,,,,,1,fds,3,hnd
,g b,,,,,,hoge,,1,11,3
a ,,,,,,,,,,hoge,,1,13,d
sh-3.2$ cat a.csv | ./kkkk
hoge,,1,11,3
hoge,,1,11,3
hoge,,1,11,3
hoge,,1,13,d
sh-3.2$



329 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/23(月) 23:00:57 ]
質問者が「おお完璧です」と言った後の >>326-327 が不憫。

330 名前:323 mailto:sage [2008/06/23(月) 23:02:39 ]
>>326
>>327
さすがにそんなに意地悪な仕様ではないんで問題なしです。
欲を言うならシェルを作らず手で打てるレベルのものがいいなぁ・・というくらいです。



331 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/24(火) 11:26:40 ]
シェルってゆうな。クズ。

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/24(火) 11:46:49 ]
>>331
よう、久しぶりw
相変わらず怒ってんなあwww

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/24(火) 15:07:43 ]
ゆうって言うな。クズ。

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/24(火) 15:11:50 ]
シェルで発酵する方法まだーーーーーーーーーーー??????

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/24(火) 15:28:14 ]
CPUヒートシンクの上に、藁に包んだ大豆を載せ
while :;do :;done


336 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 07:27:59 ]
FAN止めないと乾燥するな

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 07:35:42 ]
水冷にすればいいんじゃね?

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 11:45:53 ]
hoge1.txt に日付のテキストが数百行あります。
----------------------
$ cat hoge1.txt
Fri, 16 May 2008 09:39:25 +0900
Sun, 18 May 2008 09:30:21 +0900
Mon, 02 Jun 2008 08:15:45 +0900
----------------------

フォーマットを下記のように年月日のみに変えて hoge2.txt に書き出すシェルスクリプトを作りたいのです。

----------------------
2008.5.16
2008.5.18
2008.6.2
----------------------

sed や awk を使うのか?ということまではわかってきたのですが、初心者なもので詰まってしまっています。どなたか ご教示お願いいたします。


339 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 11:50:21 ]
ここでGNU date でやり方書くやつがでて、
Linux厨乙!的な流れですね、わかります。

340 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 11:51:01 ]
GNU dateがあるとして、
while read x; do
date --date="$x" '+%Y.%-m.%-d'
done < hoge1.txt



341 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 11:51:34 ]
Linux厨乙!

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:20:32 ]
× …hoge2.txt に書き出すシェルスクリプトを作りたいのです。
○ …hoge2.txt に書き出すシェルを発行したいのです。

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:21:46 ]
BEGIN{
m["Jan"] = 1
m["Feb"] = 2
...
m["Dec"] = 12
OFS = "."
}
{ print $4, m[$3], $2+0 }


344 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:27:11 ]
>>343
それ間違ってるよ。動作確認してから書くこと。

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:47:44 ]
はて、うちの手元では動いてるけど、環境依存な部分あるかな?

346 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:48:19 ]
Mon,

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:51:31 ]
>>344 うちでも動いてる。
>>346 Mon, は関係ないだろ

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 12:52:40 ]
月の名前と曜日の名前の区別がつかないんですね、わかります

349 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:02:27 ]
で、そろそろ純正シェルでの解法を誰かが投稿する時間だな

350 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:08:17 ]
>>338
本当に日付は >>338 のフォーマットしかないと限定していいの?
だったら >>343 でも動くだろうけど、
中には、
Mon Jun 2 08:15:45 JST 2008
みたいな行もあるという仕様じゃないの?
だったら、
(今のところ) >>340 が正解。



351 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:09:45 ]
ずいぶん勝手な解釈だな。

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:11:05 ]
#!/bin/sh
month() {
    case "$1" in
    May) echo 5;;
    Jun) echo 6;;
    esac
}
cat <<END |
Fri, 16 May 2008 09:39:25 +0900
Sun, 18 May 2008 09:30:21 +0900
Mon, 02 Jun 2008 08:15:45 +0900
END
while read line
do
    set -- $line
    echo $4.`month $3`.$2
done

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:13:38 ]
ああ echo $4.`month $3`.`expr $2 + 0` かな。

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:15:05 ]
いや、>>344 は、>>343 をシェルで実行しようとしたんじゃないだろうか?
どこにも○○○だとは書かれてないから。

355 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 13:31:19 ]
>>350
だったら、4桁数字だったら西暦、
2桁数字だったら日付、
Jan Feb等に一致したら月、
それ以外のフィールドは無視、というように
全フィールドをチェックすればできるな。

356 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 14:22:51 ]
338です。
あっという間にたくさんのレスが。ありがとうございます。

>>340
>>343
>>352
ありがとうございます。
#!/bin/sh
の後に書いてやってみていますが、まだうまくいきません。
基本的な書き方がわかっていなさすぎなんでしょうね。

>>350
日付のフォーマットはこれだけ限定です。

過去スレ等、さらに読みに行ってきます。
本当に皆さんありがとう。



357 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 14:31:41 ]
>>355
だったら
↓だな。

#!/bin/sh

while read line; do
for f in $line; do
case $f in
[0-3][0-9]) d=$f;;
[1-2][0-9][0-9][0-9]) y=$f;;
Jan) m=1;; Feb) m=2;; Mar) m=3;; Apr) m=4;; May) m=5;; Jun) m=6;;
Jul) m=7;; Aug) m=8;; Sep) m=9;; Oct) m=10;; Nov) m=11;; Dec) m=12;;
esac
done
printf '%d.%d.%d\n' $y $m $d
done


358 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 14:43:10 ]
宗教的に問題ないなら GNU date 入れちゃいなよ。
便利だよ。

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 14:44:15 ]
宗教上の理由でそれは出来ません

360 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 14:46:23 ]
ならしょうがない。



361 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 19:29:20 ]
輸血と献血とGNU date は家訓で禁じられてます

362 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 20:25:21 ]
perlで我慢しる

$ cat <<END | perl -ane 'use Date::Parse; $t = str2time($_); ($s,$m,$h,$d,$M,$y) = localtime($t); print $y+1900 . "." . $M . "." . $d . "\n"'
Fri, 16 May 2008 09:39:25 +0900
Sun, 18 May 2008 09:30:21 +0900
Mon, 02 Jun 2008 08:15:45 +0900
END
2008.4.16
2008.4.18
2008.5.2


363 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 20:27:13 ]
use Date::Parse;
($s,$m,$h,$d,$M,$y) = strptime($_);
print $y+1900 . "." . $M+0 . "." . $d+0 . "\n";


364 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 21:12:11 ]
>>362
純正シェルでの >>357 の回答の後にperl出しても意味ないなぁ。

365 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 22:43:18 ]
perlやGNU dateの方が書式に寛容

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/25(水) 22:47:29 ]
perlが入っててもDate::Parseが入ってない環境が多いから動かない環境が多い。

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/26(木) 01:57:12 ]
純正シェル(笑)

368 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/26(木) 02:04:04 ]
シェルってゆうな。クズ。

369 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/26(木) 02:05:33 ]
貝殻

370 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/26(木) 02:12:50 ]
ゆうなって言うなこのクズ



371 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/26(木) 03:07:08 ]
稲村

372 名前:265 mailto:sage [2008/06/26(木) 17:31:41 ]
bashのshはシェルの略なので
これからはbaと呼ぶことにします。

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/27(金) 10:24:30 ]
338、356です。
勉強始めたばかりで適切なスレを見つけるのもままならない。
質問した後に、スレ違いだったようだと反省している。
実はbashでやっているんだが・・・ってこれを最初に言うべきだったんだね。
皆さんにいただいたヒントでなんとかしようとさらに勉強するつもりだ。
ほんとに親切な人が多いスレで感激しているよ。
頑張ってみる。ありがとう。

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/27(金) 10:27:48 ]
まだ出来てないのかよ。

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/27(金) 10:32:36 ]
>>373
>>357 をコピペして、適当なファイルに保存(ファイル名hoge)する。
$ chmod +x hoge
$ ./hoge < hoge1.txt
2008.5.16
2008.5.18
2008.6.2

ここまで書かないとわからなかったのかな?
パーミッションとか、リダイレクトとか、./ を付けることとか、、

376 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/27(金) 10:36:14 ]
パーミッションとかわからければ、テキストファイルとして保存して
$ sh hoge < hoge1.txt
でいいし。

377 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/27(金) 10:47:21 ]
>>375
できましたっ!
みんな、ありがとう!


378 名前:名無しさん@お腹いっぱい。 [2008/06/28(土) 16:35:09 ]
ホストをIPに変換するシェルを発行する時、
getentを使いたいのですが、getentって純正シェルでも使えましたっけ?
あと、他にgetentが使えないシェルはありますか?

379 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 16:58:49 ]
ホストの人かコンピューターをプロトコルに変換するシェルを開発されるスーパーハカーの方ですねわかります

380 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 17:48:26 ]
>>378
外部コマンドならシェルの種類は関係ないでしょ。



381 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 18:18:22 ]
zshではシェル関数になっていた > getent


382 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 18:21:22 ]
それは俺の知らないzshだ

383 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 18:25:32 ]
>>381
それは漏れの知らないzshだ

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 18:27:34 ]
ashでは not foundって言われた > getent

385 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 18:31:13 ]
/usr/share/zsh/4.2.6/functions/compaudit の中に

[[ -x /usr/bin/getent ]] || getent() {
if [[ $2 = <-> ]]; then
grep ":$2:[^:]*$" /etc/$1
else
grep "^$2:" /etc/$1
fi
}

と書いてあった。コマンド実体がない場合にちょー簡略版を定義してるのね。


386 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 21:36:48 ]
>>385
その定義だと、コロンで区切られてる前提になってるから、
passwdとgroupにしか使えないね。 (hostsには使えない)

387 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/28(土) 21:47:04 ]
getent hostsって微妙だからな。
libresolv直接叩いているアプリも結構あるし。

388 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 03:08:38 ]
行中にIPアドレスらしき文字列が含まれていたら、それを出力するって
こんな感じで問題ないですかね? もっと綺麗に書ける気もするが・・・
# 1行に1つしか含まれてないと仮定して問題なしです。

text='0.0 192.168.0.1 0.0'
regex='[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*'

echo "$text" | grep "$regex" | sed -e "s/.*[^0-9]\($regex\).*[^0-9]*/\1/"

389 名前:388 mailto:sage [2008/06/29(日) 03:13:28 ]
全然ダメだったorz 教えてください。

390 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 03:30:41 ]
echo $text | grep -E -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'

-oなんてオプション他のgrepにあるか知らないけど



391 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:32:03 ]
>>388
grepとsedを一緒に使うのは無駄。sedだけでできる。

sed '/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/s//\1/'

392 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:34:43 ]
すまん、-n p 忘れた。訂正。

sed -n '/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/s//\1/p'

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:35:43 ]
sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/s//\1/p'

の間違いだろ。初心者はもっと謙虚なレスを書きなさい。

394 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:38:27 ]
>>392
それだと頭の数字が食われることがある。

sed -n '/[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/s//\1/p'

とした方がいい。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:40:50 ]
だからぁ〜、sedはスレ違い。

>>393 は何を言いたいんだ? (392のあとで)

396 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:43:09 ]
と言うか、>>393 の頭の 's/ の部分ですでにsed文法エラーじゃん。
初心者はちゃんと動作確認してから書きなさい。

>>394 が正解。

397 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:50:09 ]
>>394 でも、
hoge123 192.168.123.45

みたいな入力があると失敗する。続きは sedスレでやってくれ。

398 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:52:24 ]
sed -n '/.*\(\<[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\>\).*/s//\1/p'

で改善されるか?

399 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 09:54:07 ]
模範解答の発行まだー??

400 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 10:04:16 ]
398 で桶



401 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 21:24:06 ]
sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/p'

402 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/29(日) 21:44:44 ]
>>401
>>397 の指摘で失格

403 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/30(月) 01:27:41 ]
よほどパフォーマンスに差がありでもしないかぎり、
書き易く読み易いようにすればいい。

404 名前:388 mailto:sage [2008/06/30(月) 01:39:46 ]
みなさま色々とありがとうございました。

>>398
ちゃんと処理できるみたいですし、このスレでも良い評価なので
これを使ってあげようかと思います。感謝してください。

この処理は、あるとても重要な国家プロジェクトで使用されます。
コメントで Powered by 398 と入れておきますね。

405 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/30(月) 01:59:48 ]
なわけねーだろ

406 名前:名無しさん@お腹いっぱい。 [2008/07/02(水) 17:31:55 ]
誰かお願いします。
wk=f
配列にa b c d とそれぞれ入ってるとして
ループでぐるぐるっと、wkと一致するものを探したいんですが、
もし一致するものが無かった場合の終了条件って、どうしたらいいですか。

407 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:41:16 ]
日本語でおk

408 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:42:11 ]
純正シェルに配列はない。配列に相当する別の処理をしているなら、
その処理方法を明示して質問し直した方がいい。

409 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:43:56 ]
>>406
多少エスパーして回答。
ループにwhileを使うんじゃなくて、
forで配列の要素分ループすれば、たとえ一致するものが無かった場合でも
ループはちゃんと終了するから問題なし。

410 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:48:51 ]
ループの返り値ってことなら、breakとかを使わん限り最後のコマンドの実行結果になるから、
ループの最後にfalseを置いとけばいいんじゃないかね。
成功した場合はbreakで抜ける、ということならば、だけど。




411 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:51:11 ]
>>406 の日本誤訳:

以下のようなシェルを発行しようとしたのですが、
もし一致するものが無かった場合、うまくいきません。
どうすればいいですか?

#!/bin/bash

wk=f
array=(a b c d e)

i=0
while [ ${array[i]} != $wk ]; do
((i++))
done


412 名前:名無しさん@お腹いっぱい。 [2008/07/02(水) 17:57:26 ]
皆様あざーっす!
とりあえず今、KSHって何だって事から教わりました。怒鳴り含み。
ちょっと参考にして、考えます。皆暖かいアドバイスども!

413 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 17:59:21 ]
突然何を言い出すんだ?

414 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 18:08:51 ]
キチガイ警報

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 22:22:49 ]
作成したいファイル名が書かれたtxtのリストから、
ファイルを作成するにはどうすればよいでしょうか?

たとえばテキストの中身に、
hoge
foo
bar

とあったとして、
hogeとfooとbarというファイルを作成したいのです。

416 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 22:34:11 ]
>>415
touch $(cat txt)

417 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/02(水) 22:46:52 ]
>>416
なんでこれでできるのかわからないですができました
ありがとうございます



418 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 02:22:28 ]
>>416 それだと大量だった場合に引数溢れのエラーにならないかな?

419 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 02:25:14 ]
>>418
じゃあ
cat txt | xargs touch

420 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 03:05:13 ]
cat txt|while read FNAME
do
touch $FNAME
done
べたですがw



421 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 07:17:23 ]
>>419
xargsは使っちゃいけないコマンド。

>>420
それだと catが無駄。touchがむだ。

while read FNAME
do
> "$FNAME"
done < txt


422 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 07:19:13 ]
>>416
bash依存、失格。

> `cat txt`

423 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 07:23:31 ]
>>421
415とは関係ないんだけど
パイプでxargsに渡すときに空白をエスケープするにはどうすればいいの
例えばfindで見つけたパスに空白が含まれてた場合とか

424 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 07:49:19 ]
>>423 テンプレ>>6

425 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 07:55:01 ]
>>424
テンプレにあったとは
すいませんでした

426 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 08:02:10 ]
テンプレにはないが、find -print0 | xargs -0 するんじゃなくて、
find -exec +
するのが今後のお勧めだな。-exec の後ろ、\; じゃなくて + ね。

これでxargsは完全に不要!

427 名前:名無しさん@お腹いっぱい。 [2008/07/03(木) 11:31:21 ]
質問です。
case文でwhile文を使用する時
case "$a" in
"a.c")
while[ $flag = false || $i -ne 10 ] ; do
処理1
done
の時、doneの跡に;;でおkですか?

428 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 11:56:24 ]
>>421がFAだけど、敢えてxargs -0で。

cat list.txt | perl -ane '{ chop; printf("%s%c", $_, '\0'); }' | xargs -0 touch


429 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 11:57:44 ]
>>426
この+でappendって、最近のfindはどれにもあるの?

430 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 11:58:53 ]
純正findにないから使っちゃだめ



431 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:18:04 ]
>>430
純正findにもあるんだなぁ、+ が。よって find -exec + で FA。

432 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:31:00 ]
xargs を使っちゃいけない理由キボンヌ
便利だし早いからコマンドラインで結構使うんですが・・・

433 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:31:12 ]
純正find にないのは -print0 の方ですね。

434 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:40:55 ]
純正なんとかっていう意味の曖昧な言い方は止めろ
今はPOSIX準拠かどうかの話をしてるようだが、
純正シェルは古い/bin/shの話だったりでわからん

435 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:45:23 ]
>>432
$ printf "This is\na test.\n"
This is
a test.
$ printf "This is\na test.\n" | xargs -n 1 echo
This
is
a
test.
$ printf "This is\na test.\n" | perl -ane 'chop; printf("%s%c", $_, '\0');' | xargs -0 -n 1 echo
This is
a test.
$


436 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 12:46:31 ]
& >>6 (>>424は読んだ?)

437 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 13:03:20 ]
>>435
なるほど、理解しますた。分かってれば使えないことはないですな。

438 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 16:40:13 ]
まぁ実験して動いたらそれでまずOK。
でその後にリファイン(リファクタリング?) 
これが大事。

439 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 17:28:35 ]
>>6
> (スペースなどを含むファイル名を正しく処理するため、
> findは -print0、xargsは -0オプションを常に付けることを推奨
> ただし、Solarisでは未対応。どうするんだろ?)

$ cat print0
#! /bin/sh
while read x; do
printf "%s\0" "$x"
done

$ find 〜 | print0 | xargs -0 〜

でいいんじゃね?
# printfは許してね。

440 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 18:16:12 ]
>>439
いや、だから、Solarisでも find dir -exec hoge + が使えるんだよ。
よってprint0云々は一切不要。



441 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 18:21:41 ]
>>439
ファイル名に \ が含まれていた場合、readが誤動作する(違うファイル名とみなされる)
Solarisの xargsには -0 オプションがない。

で、>>440 の方法で解決。

442 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 18:58:56 ]
トレースしてみた。

strace -f find /tmp -exec file {} + 2>&1
execve("/usr/bin/file", ["file"..., "/tmp"..., "/tmp/.ICE-unix"..., "/tmp/mysql.sock" ...,
おお、すげぇ。ちゃんと引数まとめて実行してるね。

strace -f find /tmp -exec file {} \; 2>&1
execve("/usr/bin/file", ["file"..., "/tmp"...], [/* 21 vars */]) = 0
execve("/usr/bin/file", ["file"..., "/tmp/.ICE-unix"...], [/* 21 vars */]) = 0
execve("/usr/bin/file", ["file"..., "/tmp/mysql.sock"...], [/* 21 vars */]) = 0
こっちは1個ずつ実行するから大量だとクソ遅い。

勉強になりまつた。

443 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 19:55:30 ]
やっぱ速さってみんな気になるん?
しっかりきっちり動けば、速度は問題ないって思ってる俺は未熟?
いかにもベターってのはやらないけどー。

444 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 20:03:16 ]
テクいことして読み難くなるなら多少遅くても分かりやすく書く

445 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 20:08:46 ]
>>442
straceって、、Linuxかよw

446 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/03(木) 23:57:40 ]
>>443
必要な時に必要なことをやる。当たり前のこと。
後の話はマ板でやって。

447 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 01:32:47 ]
cronで毎日回しているプログラムの処理時間が
16時間越えたらちょっと悩む

448 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 08:05:24 ]
kshでユーザIDのリストを計表にして印刷したいんだけど
こんなの作った人いますか?
どこかにサンプルありませんかね。OSは、AIX5.3です。


449 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 08:27:34 ]
>>448
計表の正確なところがわからんが、

while read user pass uid rest; do echo $uid $user ; done < /etc/passwd

ってことか?
あと、必要なら sort -n をかましてね。
kshじゃなくて純正シェルでできるよ。

450 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 08:29:48 ]
>>448
あ、IFS設定抜けてた。

IFS=:; while read user pass uid rest; do echo $uid $user ; done < /etc/passwd



451 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 08:42:50 ]
ksh -c lpr < /etc/passwd

452 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:13:09 ]
FreeBSD 付属の wc は空白文字でパディングして結果を返すようです。

wc -l $file | sed "s/ /_/g"
_____340_/usr/bin/g++

Linux では次のようにして 340 という値を得ていたのですが、
FreeBSD では空白文字が出力されてしまいます。

wc -l $file | cut -f1 -d" "

FreeBSD 版 wc ではどうすればいいでしょう。
ltrim() みたいなものがありますかね。
それともいったん sh の変数に代入する?
それとも wc や cut には未知のオプションがある?
cut なんていう頑ななコマンドは使わないで、 sed 's/^ *\([0-9]*\) .*$/\1/' しろ?
お前 awk '{ print $1 }' も書けないのか?

bash をよく使うので、依存しているところがあったらごめんなさい。
awk はほとんど馴染みがありません。というか、
何かにつけて不遇の cut を使ってあげたい気持ちがあります…。

453 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:15:19 ]
>>452

echo `wc -l < $file`

454 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:28:33 ]
>>452
長文で cutを力説してるのに、
>>453 で cutすら必要ないというオチにワロタ

wc で、引数じゃなくて標準入力の場合はもともとファイル名が出ないので
cutとかで切る必要ないのと、スペースを取り除くにはシェルの ` ` を使うってことね。

455 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:33:53 ]
> それともいったん sh の変数に代入する?
質問者が用意した選択肢を誇らしげに答える>>453-454が憐れ。

456 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:38:03 ]
空白文字のパディング方式に、
暗黙の仮定を置いてまでcutにこだわる意味が全くわからん。
仕様の特殊化しても嬉しくない。

457 名前:452 mailto:sage [2008/07/04(金) 11:38:04 ]
いやいや

> wc で、引数じゃなくて標準入力の場合はもともとファイル名が出ないので

役に立ちました! 確かに笑った。

458 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 11:38:44 ]
>>455
おまえ、シェルスクリプト書いたことないだろ?

>>453 では一切「sh の変数に代入」は行なっていないがww

459 名前:452 mailto:sage [2008/07/04(金) 11:50:48 ]
>>456
いやいや、そうなんですよ。 cut ってつまり結局
他のコマンドと組み合わせるには中途半端なツールなんですよ。
単純でそれなりに覚えやすく、見込みのあるヤツだと思ってたんですが…
awk や bash は区切り文字を変えるだけでも結構タイプする印象が。

いや、変にこだわってごめんなさい。

460 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 12:06:44 ]
つ awk -F:



461 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/04(金) 15:50:34 ]
cut はデリミタの連続を指定できれば使える君に化けるんだがな。

462 名前:名無しさん@お腹いっぱい。 [2008/07/08(火) 07:58:27 ]
シェルスクリプトがCなどのプログラムより重い理由をうまく説明したいんですが

463 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 08:00:46 ]
>>462
インタプリタ型言語だから。
(fork/execが遅いと言うだけが理由ではない。
内部コマンドだけを使ってもCよりも遅いから)

464 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 10:52:14 ]
でも一番のボトルネックは fork, exec だと思うぞ

465 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:29:48 ]
プロファイルしてみると分かるが、文字列処理も結構コストが高い。
stat(2)せずにls -lしてからパターンマッチなど。
shは文字列がグルーになっているから。

466 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 14:57:58 ]
パイプとかバッククォートとかガンガン使うから、
それだけでシステムコール連発になっちゃうもんね。
文字列処理なのに write(2) とか使うわけだw

467 名前:名無しさん@お腹いっぱい。 [2008/07/08(火) 21:54:18 ]
レスありがとう
ちなみにパイプでコマンドつないだ場合って一つ一つ最後まで処理して次のコマンドに移るであってますかね?


468 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 21:56:21 ]
>>467
全然合ってない。それは MS-DOSのニセパイプの動作。

469 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 22:14:44 ]
>>468
詳しくおしえてください・・・

470 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 22:21:27 ]
>>469 シェル pipe dup2 とかで検索してみ。



471 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 22:50:12 ]
そんな検索語じゃわかるわけないだろ。
pipe(2)だって無限にバッファがあって、
入口が閉じるまで出口から出て来ない仕様になってる可能性だってあるわけで。

472 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 23:22:32 ]
無限の記憶装置は存在しないのでそんな可能性はゼロだな。

473 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 23:25:31 ]
MS-DOSのパイプ仕様を実装することも不可能だな。

474 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 23:36:10 ]
コマンド1 | コマンド2

本来のパイプだと、
コマンド1 の標準出力 = コマンド2の標準入力
になるような操作(dupとか)が裏で行われる。
コマンド1と2は同時に実行される。一時ファイルを介さない。

嘘パイプの場合は、
コマンド1 > 一時ファイル
コマンド2 < 一時ファイル
削除 一時ファイル
なだけ。


475 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 23:57:58 ]
例えば
cat ばかでかいファイル | head -1
だとcatもheadも同時に起動してheadはcat の出力が1行分でたらそれを出力します
そのときcatの処理が途中だったらどうなるんですか?

476 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/09(水) 00:11:11 ]
やってみろよ

477 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/09(水) 00:50:57 ]
>>475
バッファってしってるか?


478 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/09(水) 01:22:00 ]
>>475
catがwrite(2)を呼び出したときにheadが終了している(パイプが閉じている)とSIGPIPEくらって終了。

479 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/09(水) 02:16:51 ]
そのshigpipeを発行するのはパイプさん?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<109KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef