1 名前:名無しさん@お腹いっぱい。 [2007/02/15(木) 14:28:44 ] シェルスクリプトの総合スレです。 スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずは注意点、リンク、地鎮祭など(>>1-6 くらい)をご覧ください。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashなので特に注意。 ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルスクリプトのことをシェルってゆーな ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 前スレ シェルスクリプト総合 その7 pc10.2ch.net/test/read.cgi/unix/1157601611/
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 12:55:10 ] >>206 sort ファイル とは違い、この場合だと、 array[0]=Sapporo array[1]=Tokyo array[2]=Osaka array[3]=Nagoya array[4]=Fukuoka i=0 while [$1 -le 5] do echo ${array[$i]} let i=$i+1 done 読み込んだテキストファイルをこのような感じで出力させたいです。
208 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 12:58:49 ] 宿題は自分でやりましょう。
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 13:05:51 ] >>201 シェルスクリプトじゃなきゃいかんの? perlかなんか使った方が楽じゃない?
210 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 13:12:43 ] とりあえず、「順番に」が読んだ順にという意味であって 「整列させて」という意味ではないことは理解した。
211 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 13:16:34 ] while read word; do words=($words $word) done < 指定したファイル してあとは一緒。
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 13:43:20 ] >>209 perlじゃ駄目なんです。 >>211 echo -n "ファイル名を入力してください:" while read word; do words=($words $word) done < $word という事でしょうか?
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 14:02:36 ] 違う。
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 14:07:43 ] >>213 すいません・・・ どうやれば良いのでしょうか?
215 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 14:10:26 ] <の後ろに書くのは、>>207 のx echo -n "ファイル名を入力してください:" read source while .... done < $source あとは出力のためのループ
216 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 14:52:24 ] >>215 echo -n "ファイル名を入力してください:" read source while read word; do words=($words $word) done < $source cat $source | while read do echo $words let source=$source+1 done でやってみましたが、テキストの最初の文字列しか表示されません。 後半の出力ループがいけないのでしょうか?
217 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:06:49 ] ああ、ごめん、bashじゃなくzshでやってたわ。
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:12:44 ] bashで配列にpushする方法がわからん。 代わりに一パラメータで逃げてみた。 while read word; do set -- $* $word done < $source for word in $*; do echo $word done
219 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:18:07 ] 訂正 ×一パラメータ ○位置パラメータ あんど、こう書くらしい。 while read word; do size=${#words[@]} words[$size]=$word done < $source for word in ${words[@]}; do echo $word done
220 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:24:40 ] bash限定スクリプトは、以降はこちらへ ↓ pc11.2ch.net/test/read.cgi/linux/1154578200/ ここはBourneのみでよろしこ。
221 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:49:17 ] >>219 動作確認出来ました。本当にありがとうございました。 >>220 誘導ありがとうございます。 スレ違いで申し訳ありませんでした。
222 名前:名無しさん@お腹いっぱい。 [2007/03/08(木) 15:53:31 ] shです 教えてください #!/bin/sh COUNTER=0 while [ $COUNTER -lt 100 ]; do mv "$COUNTER".jpg /home/more/ let COUNTER=COUNTER+1 done こんな感じのとき最初の10までが1桁になってしまうのですが 01 02 03,,,, 行頭に0を付けた2桁で処理するのはどうすれば良いのでしょうか? 00-09と10-99でループをわけるしか無いのでしょうか?
223 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 15:59:51 ] 最近の環境ならprintf外部コマンドがあるんじゃない? mv `printf %02d $COUNTER`.jpg /home/more なければ mv `echo "0$COUNTER" | sed 's/0*¥(..¥)$/¥1/'`.jpg /home/more とか、 mv `echo "0$COUNTER" | rev | cut -b1,2 | rev` /home/more とか。
224 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:09:12 ] >>222 for COUNTER in `seq -w 0 99`; do : ...; done ↑でループすれば桶。 あと、letコマンドは純粋な shには無いぞ。
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:11:22 ] ただ、>>222 がやっていることをやるだけなら、 そもそもループすら不要で、 mv [0-9][0-9].jpg /home/more だけで一発。シェルは不要。
226 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:11:48 ] seqもあったりなかったり
227 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:12:07 ] >>223 ありがとうございました。 最終行でうまくいきました。 上の2個も含め手法を理解するように勉強してみます
228 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:15:29 ] (たとえば) [0-9][0-9] を展開しているのはシェルですぅ ので不要じゃないわよ>>225
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:16:49 ] >>228 お約束どおり釣れましたよ。おめでとう。
230 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:18:58 ] >>224-226 ありがとう。 実際にはdateから自動生成された莫大な 画像データを部分的に抽出しながら動画生成を 行うので 例に出したのより多少複雑に書き直します seqも実験してみます
231 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:20:11 ] touch [0-9][0-9].txt [root@localhost /tmp]$ ls [0-9][0-9].txt となります。 00.txtから99.txtを作りたいのですが…
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:20:18 ] BSDだとseqの代わりにjotだったかな。
233 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:23:11 ] zsh があるなら zsh -c 'touch {00..99}.txt' とか
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:26:04 ] 231は空のディレクトリで touch *.txt やったときに どういう結果になってほしいんだろう。
235 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:27:16 ] zsh -c 'touch {00..99}.txt' は、書かれてしまったから touch `seq -s ".txt " -w 99"`.txt
236 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:27:59 ] シェルってゆうな。クズ。
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:28:49 ] >>234 00.txtから連番で99.txtまでのファイルが欲しいんでしょ
238 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:30:36 ] >>236 いつものお約束も釣れましたよ。おめでとう。
239 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:31:17 ] シェルっていうな
240 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:35:08 ] >>233 >>235 ありがとうございました! zshって凄いですね。 でも、それに依存しないよう >>235 さんの方法を覚えます。
241 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:38:39 ] >>223 のprintf以外の方法だとちょっと無駄。 exprを使うのが定石。 expr 0$COUNTER : '.*\(..\)'
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:40:10 ] seqもない場合があるけどね
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:43:23 ] >>235 の seq、間違ってるよ。最後の .txtが余分なのと、"が1個余分。
244 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:46:42 ] >>235 よりも、 seq -f %02g.txt 0 99 の方がエレガント。
245 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:53:02 ] >>243 -sは間に挟む文字列だから最後の.txtがないと、 00.txt ... 98.txt 99 で終わってしまうぞ。 でも正解は>>244 。
246 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 16:57:54 ] >>244 確かにこっちなら完璧に出来ますね。 ところで %02g と言うのは何なんでしょうか?
247 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 17:06:19 ] >>246 man seq つーか man 3 printf
248 名前:201 mailto:sage [2007/03/08(木) 18:43:31 ] >>219 最後にもうひとつだけ質問させてください。 出力をする時に配列の反対(リバースオーダー)から出力をするのはどうやれば良いのでしょうか? 例えば、 Tokyo Osaka Nagoya とあったら Nagoya Osaka Tokyo と出力されます。
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 18:46:19 ] >>248 tac
250 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 18:51:21 ] for ... done | tac のようにパイプすればいいのではないでしょうか。 tacがない環境では、 for ... done | sed '1!G;h;$!d'
251 名前:201 mailto:sage [2007/03/08(木) 19:14:20 ] ありがとうございました。 これでなんとか単位が取れます
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 19:25:38 ] はぁ? 単位?? 宿題禁止なわけだが、、答えて損した、、
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/08(木) 19:46:30 ] 上で指摘されてるのに気付けよ
254 名前:名無しさん@お腹いっぱい。 mailto:@@@ [2007/03/09(金) 00:33:46 ] ファイルを1行ずつ読み込んで配列に入れたいとおもってまつ。 ↓みたいに書いてみたのですがエラーでちゃいます。なぜ?? #!/bin/csh set ALLCOUNT = 5 @ CT = 1 @ NO = 3 @ CN = "" while ( $NO <= $ALLCOUNT ) set CN[$CT] = `sed -n "$NO p " job.txt @ CT ++ @ NO ++ end
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 01:11:36 ] シェルスクリプトでは、sh だろうと csh だろうと、 配列を使おうと思った時点で負け。別の方法を探すべし。
256 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 01:17:09 ] >>254 >>201 と同じ学校の人?
257 名前:名無しさん@お腹いっぱい。 mailto:@@@ [2007/03/09(金) 01:19:14 ] >255 ダメっぽ? >256 いや趣味
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 07:50:56 ] cshの時点で負け。 それが宿題だとすると、そんな教官がいるような学校に 進学した時点で負け。
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 07:52:39 ] 思考停止論か
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 07:54:46 ] 宿題で「cshで書け」と指定されている場合以外に、 cshで書かなければいけない合理的な理由は存在しない。 趣味なら自分で研究すること。
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 17:07:47 ] シェルスクリプトならファイルが配列ってことで
262 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 19:22:22 ] インデックスによるアクセスが必要ならポジションパラメータ使うだろ。普通。
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/09(金) 21:47:41 ] 配列も、位置パラメータも 所詮人間がデータ構造を解釈しているだけの話。
264 名前:名無しさん@お腹いっぱい。 [2007/03/10(土) 21:31:59 ] 201が宿題やったせいで254も宿題思われてるのかw というより口だけで実は分からないだけですかおまいら。
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 21:37:01 ] >>264 宿題かどうかが問題なんじゃなくて、cshのスクリプトは論外ということ。 誰も答えるはずがない。
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 21:44:39 ] 自演乙
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 21:45:26 ] / / ,. -'"´ `丶、、 ヽ __l // / | \ \\ ゙、 / ̄ ̄ ̄ ̄ ̄ ̄ / :::|| / / / l l ヽ ヽヽド、 / l::::::::::|| / / / ! l ヽ ヽ ヽヽ ||:::::ヽ | l 十`` 十_ヽ 斤.::::::::||/ / //! ハ l ! ヽ ', ゙ヽ||::::::::勺 | レ d、 (_| _) |ll|i :::::::|| l l イ l /!l | ヽ ト、|、 ト、 l l、||::::::::}ll| | ┼‐、ヽ ┴┴ |ll|ヽ:::::|l !l |l!‐!‐ト、l ヽ | l | ヽ | l i l l||:::::::/!l| | ノ 月 l | |lll| `ー! l | l 」-=ミ|`ヽ ヽ | !-‐!‐|-l、|} l |r、〃|ll| | 二二`` l__ヽ L!l | l | 〃{ノ::::iヾ ヽ! ,. =-ミ、!ハ l !"´ |ll| | ノ _) {l |!l | ヽ `ー" ' トイ:::}ヾ | l | |ll」 | ─ァ ヽ |l !| `二ノ '| || | /\ l |', | /)|l l | ┼‐、ヽ l | ゙、 ` ´ /-イ| l | ノ !| \ ヽニヽ , ′/゙! l ∠ '⌒) | |ヽ、 ー / 〃 | ! | 「 ,.rr| 丶、 ,.. '´ト、 l′ ヽ ゚ l::l {:| ` ´ |::}} \______ _. -‐1::ヽ' -、 _,.. -‐ン::|ヽ、 _.. -‐ "´ |:::::::::`ゝヽ /rJ::'"´:::::::! ` 丶、
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 21:52:54 ] だいたい木曜辺りに宿題が出るのか?
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 22:04:01 ] 宿題は2chでやってもらうのが当たり前です。
270 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 22:11:17 ] 逆に、宿題を出す立場の人間です。 毎回、問題を出すのにネタが尽き気味で大変です。 宿題が出た人、どんどんその問題を書き込んでください。 一部変えて出題に使わせていただきます。
271 名前:名無しさん@お腹いっぱい。 mailto:hage [2007/03/10(土) 22:19:47 ] 2ちゃんを使わせない方法
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/10(土) 22:29:26 ] >>270 分かった。 うちで使うスクリプトを問題として出してやる。
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 10:34:35 ] >>270 tacをシェルスクリプトで書かせる。
274 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 10:47:03 ] >>273 そういえば、まだ bash の回答がない。 ttp://golf.shinh.org/p.rb?reverse+lines この問題にかぎらず、sh で参戦してる人が少ないのでおまいらもやってみてくれ。 おれもがんばってみる。
275 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 17:31:24 ] sedの解が出てるんだからそれを呼べばよいのでは。 何も無理してshだけで文字列操作するこたーないと思うけど。 #!/bin/sh f () { local l; read -r l && { f; echo "$l"; }; } f
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 18:28:56 ] >>275 readの -r オプションはbash依存。localコマンドは Bourneで使えない。 あと、再帰呼出しは重い。非再帰版の方がエレガント。 出題ネタにしたいので、回答は省略。
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 18:44:38 ] #! /bin/sh txt= IFS=' ' while read line do txt="${line} ${txt}" done echo -n "$txt"
278 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 19:10:00 ] >>276 CodeGolfが出ちゃったからbashism上等の答えになったんだと思う。
279 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/12(月) 19:18:19 ] localはどうか忘れたがread -rはPOSIXにもあったんじゃないか?
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 01:40:57 ] そーすpls
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 02:44:26 ] >>280 >>3 > POSIX: Shell & Utilities (標準規格) > www.opengroup.org/onlinepubs/009695399/utilities/contents.html
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 09:45:19 ] www.opengroup.org/onlinepubs/009695399/utilities/read.html なるほどね
283 名前:名無しさん@お腹いっぱい。 [2007/03/13(火) 20:53:58 ] awkについて質問します。 single quotation mark("'")をエスケープしたいのですが、 次のコードは×となります。 どなたか、どうやって、"'"をエスケープするのか 教えていただけますか? たとえば、 awk '{printf "\'%s\'", $2}' file として、 $2フィールドの値を 'AX' 'PY' 'CU' のように''で囲みたいのです。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 20:57:48 ] シェルレベルで '...' と ¥' からなる並びに見えるようにする。 '{printf "' ¥' '%s' ¥' '¥n", $2}' 見やすいように改行入れてみたが実際にはくっつけて記述。
285 名前:名無しさん@お腹いっぱい。 [2007/03/13(火) 21:15:45 ] >>284 できました! ありがとう。 なんでできるのか、もう少し詳しく 教えていただけないでしょうか?
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 21:48:08 ] awk に渡したい文字列を分解するだけだよ。 シェルの解釈する文字をエスケープしながらね。 だから、 '{printf "'"'%s'"'\n", $1}' などでもいい。
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 21:49:44 ] $1じゃなくて$2だったか
288 名前:名無しさん@お腹いっぱい。 [2007/03/13(火) 22:15:15 ] wgetの実行結果をファイルに書き込みしたいんですけど wget アドレス >>ファイル名 で実行して失敗しました。 どうしたらいいかわかりますか?
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 22:19:00 ] わかりますよ。
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/13(火) 22:25:01 ] wget --help
291 名前:名無しさん@お腹いっぱい。 [2007/03/14(水) 17:16:17 ] テキストファイルのある行が2chのdat形式かどうかを 正しく判別するにはどうすればいいでしょうか? grep -E ".*<>.*<>[0-9]+/[0-9]+/[0-9].* [0-9:.]+ ID:[a-zA-Z0-9+-/]+<>.*<>.*" こんな感じでひっかけようと思ったのですが、 何かの間違いでメール欄やレス欄に <> が まぎれこんでしまってる場合でもマッチしてしまいます。 やりたいことは、このようなゴミのまじった行を削除することなのですが どうするのがよいでしょうか?
292 名前:名無しさん@お腹いっぱい。 [2007/03/14(水) 18:47:38 ] あ、しまった。
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 21:33:18 ] > ゴミのまじった行を削除する 全部捨てたらいいんじゃないか。
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 22:54:48 ] 無理にシェルで書かんでもいいんでは。
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/14(水) 23:24:19 ] >>288 -O
296 名前:名無しさん@お腹いっぱい。 [2007/03/15(木) 03:28:47 ] >>270 宿題にするな。テストにしとけ。
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 09:45:11 ] ペーパーテストで一発完動のスクリプトかける奴なら即戦力だな。
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 23:41:20 ] ShellScriptの中でscpとsshを使用しようと思っているのですが 普通に構文を書くとパスワード入力等を求められると思うのですが 手動入力でなく、完全自動化にできないでしょうか? Shellは「sh」です。 OSはRedhatです
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 23:42:09 ] >>298 ssh-agent
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/15(木) 23:53:17 ] ssh-agent を使用するしか方法はないですか? 他のプログラムとかの絡みで使用できるか・・・・
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 00:12:20 ] リモートの.ssh/authorized_keyにローカルの公開鍵を書いとく
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 00:13:16 ] >>298 板違い。 【sed】シェルスクリプト総合@LINUX Part2【awk】 pc11.2ch.net/test/read.cgi/linux/1154578200/ むしろこっちか。 くだらねえ質問はここに書き込め! Part 142 pc11.2ch.net/test/read.cgi/linux/1173460712/
303 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 07:56:47 ] >>300 ssh-agentを知ってるなら質問するなよ!
304 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 08:32:48 ] 自分の鍵を暗号化しないでおくというのはどうだろう
305 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 08:33:30 ] パスフレーズを空にする。 ただし、秘密鍵を盗まれないように。
306 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 10:28:23 ] ssh-keychain は?
307 名前:306 mailto:sage [2007/03/16(金) 10:30:13 ] gentoo が作ってるやつな www.gentoo.org/proj/en/keychain/
308 名前:名無しさん@お腹いっぱい。 [2007/03/16(金) 22:01:18 ] >>298 expect
309 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/16(金) 22:13:13 ] 困ったときは〜expect
310 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/18(日) 18:56:13 ] expectって標準ではいってたっけ?
311 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/18(日) 22:20:49 ] なんの標準だかわからんけど 入ってないなら入れればいいじゃん。
312 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/18(日) 23:45:58 ] >>310 お馬鹿さん?
313 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/20(火) 00:15:56 ] 仕事の場合、そうホイホイと入れるわけにはいかないんだな
314 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/20(火) 00:34:23 ] じゃあしかたないな
315 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/20(火) 00:46:09 ] 必要ないものはホイホイ入れられないだろうが 必要あるなら入れなきゃいかんだろ。
316 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/21(水) 00:06:29 ] あたらしい言語処理系が入るというと嫌がられそうだから、 perlの小さなライブラリを追加といってExpect.pmでよくない? かなりプログラム臭くなるのでexpectに比べてはいけないが、次善の策ではあるはず。
317 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/21(水) 01:28:07 ] なんでexpect入れる話になってんだ
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/21(水) 01:51:29 ] 今回は>>298 からの流れ
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/21(水) 02:25:07 ] telnetならexpect使うのがいいだろうけど、sshとscpならパスなしのkeyを使うのが無難だと思うけどな。 パスなしでログインできるのが怖いなら、authorized_keysにcommandを書いて、できることを限定しておくといいよ。 スレ違いだったらすまん。
320 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/28(水) 01:47:01 ] sedで、最後の行から逆順に文字列検索していって、1件目を出力して終わらせることできるかな?
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/28(水) 02:04:06 ] cat hoge.txt | grep ほげ | tail -1
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/28(水) 02:30:58 ] >>320 awkでやれ awk '{line[NR]=$0}END{for(i=NR;i>0;i--){if(line[i]=="検索パターン") print line[i];}}' input.txt
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/28(水) 02:50:52 ] tac filename | sed -n '/hoge/{p;q;}'
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/29(木) 16:52:36 ] 二つのテキストファイルA.txtとB.txtがあります。 行数は同じでそれぞれの行が関係のある物になっています。 現在、その二つの行をそれぞれスペースで区切って接続を行いたく考えています。 A.txt 山田 山下 B.txt 太郎 二郎 AB.txt 山田 太郎 山下 二郎 A.txtとB.txtからAB.txtを作成する妙案などございましたらご教示いただけませんでしょうか? よろしくお願い致します。
325 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/29(木) 16:56:53 ] >>324 paste A.txt B.txt > AB.txt
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/29(木) 17:09:44 ] >>325 PASTE(1) 名前 paste - ファイルを行単位でマージする 大変失礼いたしました…orz シェルスクリプトとかそう言うレベルで無かったことをお許し下さい…。
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 09:37:33 ] b.txt の内容で 幸子の場合、a.txtが山田となっていたら 里中に変更する。という条件付きくらいにしとけば スクリプトでしなきゃいかんけどな。
328 名前:名無しさん@お腹いっぱい。 [2007/03/30(金) 15:20:07 ] ~/.forwardに記述して、メールを標準入力から読み込んで そのenvelope Fromを、実データのFromに置換して/usr/bin/vacation に渡すスクリプトを書きたいのですが・・・ sed -n 's/^From: [^<]*<\([^>]*\).*/\1/p'の内容を覚えさせておいて、 もう一度先頭から読み込んで置換すればよいと思いますが、 その方法がわからないのです。 微妙な内容なのでググるためのキーワードもいまいちで、ヒットしません。 別にsedでなくてpealやawkでもよいのですが、何かいい方法はありますでしょうか?
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 15:26:46 ] >>328 そのまま ・覚えさせる->ファイルに書く ・もう一度先頭から読み込んで置換する->そうする でいいんじゃないの?
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 16:01:32 ] URLが一行ずつずらーと並んでいるのですが 頭とケツにそれぞれ「”」を付けたいです。 何か良い方法は有りませんでしょうか?
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 16:08:36 ] sed 's/^/”/' | sed 's/$/”/'
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 16:17:30 ] >>331 パイプが無駄。一発でできる。 sed 's/\(.*\)/"\1"/'
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 16:24:13 ] pealのようなもの
334 名前:328 [2007/03/30(金) 16:31:53 ] >>329 難しく考えずに、そうすることにします。
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 16:44:44 ] >>331-332 ありがとうございます。 頑張ってsed覚えます。
336 名前:328 [2007/03/30(金) 17:10:27 ] >>334 と思ったら、メール出力から起動されるプログラムは きわめて弱い実行権限(nobody)しかないので、/tmpにさえ ファイルを作れません。(人間がテストしたときは巧くいきましたが・・) 権限を強めればセキュリティーリスクが増大するし、 やはり、スクリプトの中で記録と標準入力の再読み込みが必要な模様です。 まあ記録は置換文字列に変数を使えることが判ったので何とかなりそうですが、 「初めからもう一度実行」が途方に暮れてしまいますね。 何かよい方法ありますでしょうか?
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 17:14:32 ] ・nobody でも /tmp に書ける。 ・そもそも sendmail でも postfix でも .forward のファイル所有者と 同じ権限でプログラムが起動する。nobody にはならない。
338 名前:328 [2007/03/30(金) 18:36:24 ] >>337 なるほど では、ほかの原因を考察して見ます。 ありがとうございます。
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 22:30:53 ] >>335 sed 's/.*/"&"/' でもいいな。
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/30(金) 23:05:57 ] >>335 正規表現は使わない方が速いかな。 awkで、 awk '{print "\""$0"\""}'
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/03(火) 01:43:34 ] awkのsystem関数に与えるコマンド文字列の中で「"」や「'」って使える? 「\」を前に置いても駄目でした…
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/03(火) 02:26:06 ] >>341 system が起動しているシェルに食われたんじゃね?
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/04(水) 00:17:45 ] >>342 例えばこんな感じ。実際はこんなシンプルじゃないけど。 awk '{system("grep \"^$\" $1")}' input.file systemが食われたのか、systemの引数の中では引用符が使えないのか、切り分けができません。
344 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/04(水) 00:26:48 ] >>343 の例だと$1に何も入らないから、とか?
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/04(水) 01:00:44 ] >>344 あそっか、$1は""の外でした。。 awk '{system("grep \"^$\" "$1)}' input.file 本物は業務で使う予定だからコピペできないんだよね。
346 名前:名無しさん@お腹いっぱい。 [2007/04/07(土) 02:11:04 ] find /日本/関東/女/ mtime +7300でリダイレクトしたら彼女が出来た
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/08(日) 22:55:59 ] >>345 ちゃんと伝わっていなかったようで。 awkの中にシェルの変数の$1入れてもawkがもっていっちゃうからダメなんだって。
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/09(月) 22:22:34 ] >>347 そうか?普通に↓とか使えてるぞ? awk '{sum[substr($0,a,b)]+=substr($0,c,d);}END{for(n in sum)print n,sum[n];}' input.txt
349 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/10(火) 20:40:57 ] なんかかみ合わないんだけど、 >>343 や>>345 の例だと、$1をシェルがもっていっちゃって動かないだろうから、 本来やりたいことである >awkのsystem関数に与えるコマンド文字列の中で「"」や「'」って使える? の問題とは違ったところでハマっているでしょ、ってことを書いただけなんだけど。 ($1にはinput.txtを入れたいのだろうと推測) それに対して、$数字は awkで使用できるよ、と書かれても困っちゃうんだが。
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/11(水) 06:22:32 ] >>349 言いたいだろうことは理解するが、347がそれが伝わる書き方とは思えなかったぞ。 例えば、何を誰がもっていっちゃうと書いたか、347と349を比較してみ。
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 00:00:33 ] ふいんき(なぜか略)を悪くしたようで正直スマンカッタ
352 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 01:37:02 ] awkは読み込んだレコード全体を$0で参照できて、 フィールドセパレータ(デフォルト空白文字)で区切られたn番目のフィールドを $nで参照できるんだよな。 awk '{system("grep \"^$\" "$1)}' input.file で$1はinput.fileから読み込んだカレントレコードの1番目のフィールドを 参照すると。 $数字がawkで使えるのは良いとして結局"や'は system関数の引数の中で使えるのかどうか?
353 名前:名無しさん@お腹いっぱい。 [2007/04/13(金) 16:02:04 ] DebianとFreeBSDを使っていて、共通の.bashrcを参照しているのですが Debianを使っているときにはUTF-8を、 FreeBSDを使っているときにはEUC-JPを 環境変数LANGに設定するようにしたいのですが どのようにコードをかけばよいのでしょうか?
354 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 16:07:45 ] >>353 uname とか hostname あたり見るとか。
355 名前:353 [2007/04/13(金) 16:42:04 ] >>354 unameとif文を使えばできると思うんですけど それでsourceコマンドを実行したときに ちゃんとわりあたるかどうか・・・
356 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 16:54:07 ] >>355 おいおい、sourceなんて使わないよ。 あと、ifじゃなくてcaseを使うのが定石。 case `uname -s` in Linux) export LANG=ja_JP.UTF-8;; FreeBSD) export LANG=ja_JP.eucJP;; esac
357 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 16:55:19 ] 別に if 使ってもいいと思うけど、 なんで source が出てくるのかよくわからん。
358 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/15(日) 15:34:49 ] >>356 Cとかだとswtichは敬遠される傾向にあるけどな。
359 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/15(日) 17:19:24 ] お前の周りだけだろ。
360 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/15(日) 17:33:16 ] ifを使うとすると、 if [ `uname -s` = Linux ]; then export LANG=ja_JP.UTF-8 elif [ `uname -s` = FreeBSD ]; then export LANG=ja_JP.eucJP fi となって、unameの実行が2回になって無駄になる。 かと言ってunameを1回にしようとすると、 tmp=`uname -s` if [ $tmp = Linux ]; then export LANG=ja_JP.UTF-8 elif [ $tmp = FreeBSD ]; then export LANG=ja_JP.eucJP fi となって、シェル変数1つが余分に要るので美しくない。 よって、caseを使うのがモストエレガント。
361 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/15(日) 17:37:03 ] >>360 お前の美学はよくわかった。
362 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/15(日) 17:41:22 ] で、source はなんで出てきたんだ?
363 名前:名無しさん@お腹いっぱい。 [2007/04/16(月) 19:45:58 ] そうっすねぇ…。
364 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 19:58:24 ] 審議せずに却下
365 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 20:37:02 ] sh にそんなコマンドがないからか?
366 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 22:11:51 ] .があるじゃん。
367 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 22:42:57 ] . はあるけど source はないってオチなのかなと。
368 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 23:46:40 ] source がない sh ってたとえばどれ?
369 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 23:52:07 ] J
370 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:16:38 ] >>368 sh
371 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:41:10 ] >>370 どの OS の?
372 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/17(火) 00:47:25 ] >>371 普通のbshなら.しか使えない。 HP-UXやAIXのshは中身がkshなんで。
373 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/21(土) 02:11:17 ] zsh 4.3.4登場 - マルチバイト文字の対応を強化 journal.mycom.co.jp/news/2007/04/20/023/index.html
374 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/24(火) 14:20:37 ] /bin/zsh
375 名前:名無しさん@お腹いっぱい。 [2007/04/25(水) 21:35:53 ] シェルいい本知りません?初心者向けで
376 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 21:45:15 ] UNIXプログラミング環境
377 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 21:50:11 ] マジレスをおねがいします
378 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 21:52:27 ] どのへんが冗談だと?
379 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 21:55:09 ] 初心者向きじゃないし、内容が古い
380 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 22:01:27 ] 対案を出してから批判しろ
381 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/25(水) 22:06:43 ] 「試験に出るシェルスクリプト」
382 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/26(木) 00:34:12 ] >>381 その筋質問箱は付いてますか?
383 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/26(木) 04:36:49 ] Z80は最強だから大丈夫
384 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/26(木) 10:22:57 ] じゃあ「できるシゥルスクリプト」
385 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/02(水) 17:38:53 ] 英小文字からなる文字列の最初の一文字だけを大文字に変換するには どうすればよいのでしょうか? sedだと只それだけで一文字目の後ろに改行を挿入してホールドスペースに入れて、 y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ てなことして また連結して改行を削除みたいな、バカ手間が掛かるので投げ出してしまった。 もっと簡潔に出来たら良いなと思うのですが・・・
386 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/02(水) 17:42:25 ] >>385 echo aaa | sed 's/\(.\)/\U\1/'
387 名前:385 mailto:sage [2007/05/02(水) 18:01:30 ] >>386 それは。どこのsedですか? うちではそれはUaaaと出力します。\Uという正規表現はUそのものを表すようです。
388 名前:385 mailto:sage [2007/05/02(水) 18:42:47 ] ちょっと調べてみたらGNUのsedだと、>>385 の動作が出来るようです。 しかし、なんでもコマンドを高機能なやつに入れ替えるのもどうかと思うし、 使っているOSがGNUツール群を標準装備していないのもそれなりに理由があるだろうし 高々文字列変換で新たなツールを使うのには、消極的になりますね。
389 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/02(水) 19:11:07 ] echo "abc" | awk '{print toupper(substr($0,1,1))substr($0,2)}' echo "abc" | perl -pe 's/(.)/\U\1/'
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/02(水) 19:18:21 ] echo aaa | awk -v FS= -v OFS= '{$1=toupper($1);print}' はどう。
391 名前:385 mailto:sage [2007/05/02(水) 20:06:42 ] >>389 有り難うございます。 awkのsubstrで文字位置指定して、toupperで大文字に変換ということですね。 perlの方はgsedと互換な感じの構文ですね。(てかgsedが模倣した?) >>390 済みません。 awk: illegal statement input record number 1, file source line number 1 と成ります。 いずれにしてもいろいろと勉強になります。 >>386 ,>>389 ,>>390 の皆さん、ありがとうございました!
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/03(木) 02:41:58 ] GNU の sed でも y/a-z/A-Z/ みたいな表現できないんだよね。 互換性維持のためなんだろうけど。
393 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/03(木) 09:18:45 ] kshのコマンドヒストリで矢印キーが使いたいのだが、 emacsのCTRLキーはめんどい。 エロい人、設定のしかた教えてチョ。
394 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/03(木) 10:08:20 ] >>393 くだらない質問はここに書き込め!Part 52 pc11.2ch.net/test/read.cgi/unix/1176049968/
395 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/03(木) 18:24:22 ] >>393 bashつかえw
396 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/04(金) 16:26:20 ] cshで変数の中に空白文字で区切られた複数のワードからなる文字列が代入されてる。 例:「aaa bbb ccc ...」 各ワードに接頭辞と接尾辞を付加したいが、sedでできるかな? 例:「prefix.aaa.postfix prefix.bbb.postfix prefix.ccc.postfix ...」 ちなみにワード数は不定。 置換後の文字列長はLINE_MAX以下でないと駄目?
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/04(金) 16:44:54 ] はい、cshはスルー、次の方どうぞ
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/04(金) 16:56:59 ] こんなんでよい? bashだけど $ s="aaa bbb ccc" $ echo $s | sed -e 's/\([^ ]*\)/prefix.\1.postfix/g' prefix.aaa.postfix prefix.bbb.postfix prefix.ccc.postfix
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/04(金) 23:17:48 ] Gnomeなどのデスクトップ環境でxxx.shに何らかのファイルをドロップしたとすると、そのファイル名はどういった変数に格納されているのでしょうか。 tex処理を簡単にしたいと考えたのですが、これが分からずにつまっています。
400 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/05(土) 00:39:09 ] $1, $2, ...
401 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/05(土) 06:17:46 ] >>398 $1,$2...って9個までしか使えないんじゃ? 396は「ワード数不定」って言ってるから、10個以上もありうるだろ。
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/05(土) 06:21:09 ] ↑gオプション付いてるやん。何かみついてんだコイツ
403 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/05(土) 14:01:50 ] >>401 アホー >>400 は>>399 へのレスだ。
404 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/05(土) 23:04:16 ] >>399 多分、コマンドでこう起動したのと同じ扱いになっている思う。 $ xxx.sh < "abc.tex" スクリプト側でリダイレクトされる前のファイル名を 取得する方法が分かれば、どうにかなるんじゃないかな。
405 名前:名無しさん@お腹いっぱい。 [2007/05/06(日) 01:12:45 ] 画像変換するスクリプトを作っています。 スクリプ中で使用するコマンド(今回はmogrify)がインストールされているかどうか 調べるのに手っ取り早い方法ありますか? 今のところ思いつくのは、PATHから「:」で区切って1つづつ抜き出し、その直下に mogrifyがあるか「test -x」する方法です。
406 名前:405 [2007/05/06(日) 01:26:07 ] ちょっと自己解決 whereis使えばいいか。 whereisって見つからなくても0返すんですね・・・ whereis -b mogrifya | grep -v ':$' > /dev/null if [ $? ... って感じかな もっとスマートな方法ありましたらご教授ください。
407 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/06(日) 01:47:14 ] whichは?
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/06(日) 02:09:28 ] if which mogrify > /dev/null 2>&1 ; then ... は?
409 名前:名無しさん@お腹いっぱい。 [2007/05/06(日) 02:18:36 ] >407,408 whichか、なるほど 解決しましたありがとうございました。
410 名前:405 [2007/05/06(日) 02:45:19 ] たびたびすいません &&や||の後に複数のコマンドを書くにはどうすればいいのでしょうか? 見つからなかった場合、NGと表示しexitしたいのですが、 which mogrify > /dev/null 2>&1 && echo 'bc ok' || (echo 'bc NG'; exit 1) としてもミニシェルから抜けるだけなのです if文で書けばいいだけなのですが、勉強の意味でも知っておきたいのです。
411 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/06(日) 03:18:41 ] function echo_exit() { echo $* exit } とか定義しちゃえば?
412 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/06(日) 03:28:54 ] >>410 ... || { echo NG; exit 1; } は?
413 名前:410 [2007/05/06(日) 11:45:38 ] >411 いいですね。たくさんコマンド実行したいときに使わせていただきます。 >412 おー、意図したとおりになりました。今回はこちらを使わせていただきます。 ありがとうございました。 ちなみにcommand1が成功したときはcommand2、失敗したときはcommand3という時に、 command1 && command2 || command3 という書き方は問題ないですか? 動作は意図したとおりなんだけど、「|| command3」はcommand2の結果に かかってくるように見えるのでちょっと気持ち悪い・・・
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/06(日) 12:35:35 ] >>413 >command1 && command2 || command3 >という書き方は問題ないですか? command2が falseを返した時、command3まで実行されてしまうのが問題。 if - else の代わりにするなら、 command1 && { command2; true; } || { command3; } と書けば完全。command2や command3は、; で区切って複数コマンド可能。
415 名前:413 [2007/05/06(日) 14:40:39 ] >414 なるほど。 command2にはechoとかしか入れてなかったので気づかなかった・・・ 勉強になりました。ありがとうございます。
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/11(金) 23:38:51 ] tail -f ログファイル名 | awk -f 手続きファイル 上記コマンドを指定の条件をつけてwhileによる繰り返しでログを整形する シェルをつくりたいのですが、末尾に">>ファイル名"としても指定のファイル にリダイレクトできません。 while〜doneの後、シェルスクリプト実行時の末尾に>>を指定してもだめです。 出力は画面のままです。(通常のtail -fのイメージ) &でバックグラウンドで実行しても同様です。 tail -f で読み取っている内容を別のログファイルに出力するにはどうすれば よいですか?
417 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/12(土) 09:13:18 ] teeじゃだめ?
418 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/12(土) 10:06:11 ] シェルってゆーな。クズ。
419 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/14(月) 21:13:31 ] tail -f って終了しないじゃん
420 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 00:34:17 ] tee -a hoge.log
421 名前:名無しさん@お腹いっぱい。 [2007/05/15(火) 17:57:30 ] hoge%68%6F%67%65 のような文字列を %68%6F%67%65%68%6F%67%65 のように %表記に直すにはどうしたらよいでしょうか?
422 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 18:50:16 ] perlつかえ。
423 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 18:50:23 ] >>421 よく意味がわからんが、URLエンコーディングとかの話か?
424 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 19:05:07 ] >>423 よく意味がわからんなら答えなくていいよ。
425 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 19:25:20 ] >>421 s/hoge%68%6F%67%65/%68%6F%67%65%68%6F%67%65/g
426 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 19:27:18 ] >>425 できました!! ありがとう!!
427 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 19:28:00 ] 自演乙
428 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 01:53:36 ] ESP発揮して混じれ酢すると hogeを%表記しようとしたときに 右側の既に%表記されてる部分が さらに%表記に変換されてしまうことを 回避したいと思っているのではないかと
429 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:00:50 ] 一旦デコードしてからエンコードするのが確実だな
430 名前:201 mailto:sage [2007/05/16(水) 02:03:24 ] 01.jpg 02.jpg 03.jpg 04.jpg ... と沢山のファイルがあってfor文(じゃなくてもいいけど)により convert +append 01.jpg 02.jpg 03.jpg out1.jpg convert +append 04.jpg 05.jpg 06.jpg out2.jpg ... というように、3つずつ抜き出して一気に処理したいのですが、どうすればいいのでしょうか?
431 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:23:41 ] >>430 100個ずつとかだと別の方法を使うが、3個ずつならこんなもんか #!/bin/sh set -- ??.jpg i=1 while :; do case $# in 0) break;; 1) convert +append $1 out$i.jpg; break;; 2) convert +append $1 $2 out$i.jpg; break;; *) convert +append $1 $2 $3 out$i.jpg; shift; shift; shift; i=`expr $i + 1`;; esac done
432 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:27:07 ] set -- *.jpg i=0 while [ $# -gt 0 ]; do i=`expr i + 1` #式使えるならそれでも。 convert +append $1 $2 $3 out$i.jpg shift 3 done shiftの数引数ってBourne Shellでも使えるのかな。 使えないなら3回shift。
433 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:27:49 ] ああ、ちょうど3の倍数になっていない場合は考慮してなかったな。
434 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:28:55 ] ちょうど3の倍数になっていない場合はどうすんの?
435 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:29:55 ] /dev/null とかで補完
436 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 02:37:35 ] 名前欄は無視でお願い
437 名前:430 mailto:sage [2007/05/16(水) 02:45:01 ] おお、夜食食べている間にこんなにもレスが 3の倍数になっていないときは私自身考慮してませんでいした。 431さんの set だけ使ったことがないのですが、とにかく >431-435 で十分対処できそうです。 setも調べてみます ホントにありがとうございます。
438 名前:430 mailto:sage [2007/05/16(水) 02:46:51 ] よく見たら432さんもsetありましたね。 とにかくありがとう
439 名前:421 mailto:sage [2007/05/16(水) 11:12:47 ] >>422 シェルスクリプトで難しいならperlを使ってもかまいません。 >>423 URLエンコーディングならアルファベットはそのままだと思うのですが、 アルファベットも16進数表示したいわけです。 pukiwiki のバックアップをローカルに落とすのに、 ファイル名を知りたいんです。
440 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 11:21:18 ] >>439 pukiwikiスレあたりで「戻し方教えれ」って聞いた方がいいんじゃね?
441 名前:416 mailto:sage [2007/05/16(水) 23:44:33 ] ご返事いただきありがとうございます。 tail -f ログファイル名 | awk -f 手続きファイル 上記コマンドではawkによる整形結果を標準出力できる状態で、 さらにパイプでteeコマンドを実行してみましたがうまくログが 出力できませんでした。 名前付きパイプを作成し、オリジナルログの出力先を名前つきパイプにして 直接awkで名前つきパイプを標準入力状態にしても、tail -f のような画面に 標準出力はできますがファイルへのリダイレクトは無理でした。 難しいですねぇ。。
442 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/17(木) 00:48:16 ] tee の使い方間違ってるだけだろ
443 名前:ウサチャソ mailto:sage [2007/05/17(木) 00:52:02 ] >>441 tail -f をパイプすると、上手く動かないよ。 GNUのだとどうなんだろ? 「tail パイプ バッファリング」 でググると、それっぽい事いっぱいでてくるYO
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/17(木) 18:41:18 ] a.shに . b.sh として読み込まれるb.shが自分の名前がb.shであると知る方法はありますか?
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/17(木) 18:50:24 ] >>444 ない。 . で読む場合は $0もセットされないし。
446 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/17(木) 19:05:57 ] >>445 ありがとうございます。 あらかじめ埋め込んでおくしかなさそうですね…。
447 名前:416 mailto:sage [2007/05/17(木) 23:00:53 ] >>443 バッファの問題だったんですね。 通常のawkはやめて、gawkのfflush関数を使うことでうまくいきました。 ありがとうございました。
448 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 19:10:57 ] シェルスクリプトでログインログアウトを自動化するにはどうしたらいいでしょうか? もし良かったら数行のコマンドでレスお願いします。
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 19:15:55 ] >>448 何をやりたいのかもうちょい詳しく。
450 名前:448 mailto:sage [2007/05/18(金) 19:59:20 ] >>449 1.現在rootでログイン中。 2.testユーザーでログインして何か作業をする。 3.そしてまたrootに戻る。 これを自動化したいです。
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 20:03:21 ] >>450 su test 何か もしくは su - test 何か 違いについては man su 等を参照。
452 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 20:30:15 ] >>451 間違ってるよ。man su 等を参照するべきなのはオマエ。
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 20:59:46 ] >>450 sudoじゃダメなんか?
454 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 21:30:20 ] >>448 testユーザで実行するバッチファイルを作っておいて、 su - test -c バッチファイル で実行しる。
455 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/18(金) 21:35:19 ] バッチファイル バッチファイル バッチファイル バッチファイル wwww
456 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/19(土) 00:37:47 ] ほんとうにloginしたいならexpectを使うとか
457 名前:448 mailto:sage [2007/05/19(土) 03:04:26 ] rootでログイン中 expectでsu - testとして touch /home/test.txtを実行して 再度expectでsu - rootでrootになっても /home/test.txtは作成されてませんでした なぜでしょう?
458 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/19(土) 10:21:42 ] パーミッションじゃないの? /homeにtestユーザは書き込めないんでは。
459 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 04:33:32 ] 質問。 11.22.33を 33.22.11に文字を反転させたい。
460 名前:459 mailto:sage [2007/05/20(日) 04:42:15 ] 459は取り消し! 11.22.33を a[0]=11 a[1]=22 a[2]=33 のように配列に代入したい。 よろしくお願いします。
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 05:39:47 ] 宿題でつか
462 名前:459 mailto:sage [2007/05/20(日) 06:19:25 ] 宿題でつ
463 名前:459 mailto:sage [2007/05/20(日) 07:14:05 ] スレ汚してごめんなさいできまつた
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 21:56:12 ] テキストファイルに、ファイルの場所がずらずら書かれていて ----- /usr/local/etc/pussy001.jpg /usr/local/etc/pussy002.jpg /usr/local/etc/pussy003.jpg : ----- そこに書かれているファイルを指定した場所に移動させたいんです。 で、こんな感じで動くスクリプトを書きたいなぁと考えているんですが cat list.txt | grep jpg | mv.sh /work/pussy この mv.sh の書き方が分かりません。
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 22:02:27 ] >>464 mv `grep jpg list.txt` /work/pussy で、一発。・・・で、pussyってww
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 22:47:23 ] >465 残念ながら、ファイル名にスペースがあるとだめでした。 sh, tcsh, bashで試してみましたが、どれも同じです。
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 23:18:02 ] >>464 の例では、ファイル名にスペースが入ってないじゃないか。 そういう条件は先に例に含めて書くこと。 ファイル名にスペースがある場合のやり方ももちろん知ってるが、 わざわざ教える気にならないので俺はパス。
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 23:25:45 ] >>466 IFS=' ' mv `grep jpg list.txt` /work/pussy
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 00:42:01 ] (while read f; do mv "$f" dest/ ; done) < file >>467 ファイルの長さを考慮しないgrep戦法しか提示しなかった奴が そんな理屈をこねても見苦しいだけ。
470 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 06:22:05 ] >>469 残念ながら、ファイル名に \ があるとだめでした。
471 名前:名無しさん@お腹いっぱい。 mailto:sage read -r [2007/05/21(月) 10:38:53 ] じゃあ諦めな。
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 11:09:30 ] >>471 ファイル名の \ を考慮しないを考慮しないwhile read戦法しか提示しなかった奴が そんな理屈をこねても見苦しいだけ。
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 11:17:06 ] というか、>>469 って、元の質問の jpg で grepするの忘れてるじゃん。 テストだったら0点。
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 11:25:38 ] でもテストじゃないよ。
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 11:33:37 ] そういう香具師が、「それはケアレスミス。答えはわかってた」とか後で言うんだよな。
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 11:37:45 ] なんでそんな完璧にこだわるんだろ。 質問者のヒントになればいいじゃん。
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 16:16:07 ] 低能同士、仲良く!
478 名前:464 mailto:sage [2007/05/22(火) 00:44:46 ] すみません、御礼が遅れました。 という訳で >465 >468 >469 全て参考になりました。特にIFS=〜は初めて 知ったので成程と関心しました。 この場をお借りして厚く御礼申し上げます。
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 00:59:36 ] xargsは? grep jpg list.txt | xargs -i mv {} /work/pussy
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 12:09:35 ] >>479 空白が含まれているとダメだろ。
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 14:28:33 ] grep jpg list.txt | tr '\n' '\0' | xargs -0 -i mv {} /work/pussy
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 14:39:38 ] >>481 ファイル名に改行が含まれてるとだめだろw
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 19:06:13 ] sudo find / -name '*pussy*' -exec rm -rf \{\} \;
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 19:18:18 ] デリミタが改行なリストなんだから要素に改行は含められないんじゃ? 改行入りファイル名を考慮するならリストは改行文字以外で区切るべき だと思う.
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 19:20:20 ] ファイル名に改行を入れるアホなんてほっとけ(w
486 名前:ウサチャソ mailto:sage [2007/05/22(火) 21:00:22 ] 試しに作ってみた。 % touch aaaa^Maaaa % ls -lF aaaa*--r-- 1 ウサチャソ users 0 5月 22 20:58 aaaa 表示バグってるよ…
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 21:19:38 ] 改行と復改の区別ができないお子様は犬... 以下略
488 名前:ウサチャソ mailto:sage [2007/05/22(火) 21:37:01 ] >>487 改行のみ入れるのは面倒臭かったんだスマソ
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/22(火) 21:57:27 ] >>488 $ touch 'aaaa aaaa' だろ。 $ > 'aaaa aaaa' でも可。
490 名前:ウサチャソ mailto:sage [2007/05/22(火) 22:14:31 ] CTRL+Vが楽だったんで、つい… ちなみに、>>489 でも >>486 でもCygwinだと同じ表示。 -rw-r--r-- 1 ウサチャソ なし 0 May 22 22:10 aaaa?aaaa 今日始めて知った。
491 名前:ウサチャソ mailto:sage [2007/05/22(火) 22:15:58 ] あ゛っごめん、Cygwinは「--show-control-chars」が必要だった…。 スレ違いなんでもう消えます、スマソ
492 名前:名無しさん@お腹いっぱい。 [2007/05/24(木) 20:33:53 ] 質問します。 lsnrctl >>_EOF_ set log_file listener.tmp RET=$? if [ $RET -ne 0 ];then logger -t loglog -p local1.notice "切り替えに失敗しました" exit 1 fi exit _EOF_ という事をしたいのですがどうしてもsetコマンド以降エラーに なってしまいます。 対処法を教えていただけないでしょうか?
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/24(木) 20:51:21 ] 逆だ。 lsnrctl <<_EOF_
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/24(木) 20:55:16 ] あと、ヒアドキュメントの部分は、LSNRCTLのコマンドしか受け付けないぞ。
495 名前:名無しさん@お腹いっぱい。 [2007/05/24(木) 21:23:10 ] すいません逆に書いてました。 やはりLSNRCTLコマンドしか受け付けないですか・・・ う〜ん、どうしてもLSNCTLの中でシェルスクリプトの処理の記述を したかったのですが無理そうですね。 ありがとうございました。
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 07:13:03 ] 質問。 ファイルの最終から20行を削除したい。 どうしたらいいでしょうか?
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 07:46:41 ] >>496 wc で数えて、head で切り出すぐらいしか考え付かない
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 08:09:27 ] awk
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 08:33:29 ] tac なんてLinuxでもないかぎり標準装備じゃない罠 cat file | tac | sed '1,20d' | tac
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 12:43:49 ] 無意味なcat出た
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 14:05:40 ] tacが使えなければ sed '1!G;h;$!d' すればいいじゃない。
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 15:55:05 ] cat!出た!cat出た!得意技!cat出た!cat!これ!cat出たよ〜〜!
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 16:13:35 ] >>502 楽しそうだな
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 18:27:43 ] 俺は限界だと思った
505 名前:名無しさん@お腹いっぱい。 [2007/05/29(火) 00:14:45 ] tail つかって最後から20行みれ で、>>499 しる
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:58:13 ] 基本的にサブシェルはshを新たに起動するよりは動作が軽いですよね?
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 01:26:05 ] >>498 awkには入力ファイルの行数を保持する組み込み変数はないんじゃね? だから、結局wcでカウントしないとダメだったり。
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 01:47:08 ] は? awk '{a[NR]=$0}NR>20{print a[NR-20]}'
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:37:14 ] >>508 短くていいが、でかいファイル通すとメモリが…
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:54:34 ] 無理して一行でやるより、行舐めの回数が少ない方が好きだな。
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:57:15 ] >>510 ワンパスだし。消費メモリを考えればいいと思うが。
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 03:15:32 ] >>499 は論外。
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 09:33:18 ] awk '{if (FNR>20) print a[FNR%20]; a[FNR%20]=$0}'
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 10:12:43 ] 20行分だけバッファして遅延して出力させて ファイル末尾に到達したら終了させるとか。
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 19:07:30 ] >>514 書いてみよう
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 19:20:43 ] >>514 は >>513 がやろうとした事(間違ってるがw)
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 19:44:45 ] >>496 こういう場合、ed を non-interactive に使うのがいい。 最後20行ということは、$-19から $までだから、 echo '$-19,$d w outfile q' | ed infile ↑で桶。
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 21:46:07 ] sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'|sed -e '$d'
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 08:58:50 ] >>516 間違ってる?
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 19:17:11 ] 質問なんですが・・ #!/bin/sh - tmpfile=/tmp/program.$$ cat "$1" | tr ' ' '\n' > tmpfile while read word do grep ${word} "$2" | いろいろと処理・・・ done < tmpfile てな感じのスクリプトなのですが、 第一引数のファイル中に、例えば -i と言うような語があると grep がオプションと解釈するのか何なのか、直後に while ループが 終了してしまいます。 '${'"$word"'}' だと grep には ${word} として渡されてしまいます。 何とかシェルを騙して grep に '-i' として渡す方法は無いでしょうか? (渡す前に条件判断して先頭文字が - なら sed などで先頭に \ を 付加すると言うのも行けそうな気はしますが、出来れば余計なIFとか 変数とか無しで行きたいものです)
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 19:35:35 ] grep -e grep -
522 名前:520 mailto:sage [2007/05/30(水) 19:53:07 ] >>521 ありがとう。 シェルを騙さなくても grep の方で用意されていましたか、 良く考えりゃ当然ですね。
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/30(水) 21:22:55 ] オプション -- で、それ以降はオプションとは解釈しないってのは 結構な数のコマンドで使える。
524 名前:520 mailto:sage [2007/05/30(水) 23:07:09 ] >>523 ですね。 これまで -- なんて、はぁ?って感じでしたけど、 実に有用性が高いですね。 勉強になります。
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 11:43:37 ] 質問 インターネットに接続できるか試すコマンドってありますか? やりたいこと インターネットに接続できたら echo "できます" インターネットに接続できなかったら echo "できません" としたいです。
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 11:59:13 ] インターネットとLANの区別をしなくていいのかな?
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 12:05:24 ] 多分、この程度の精度でOKなんだろ。 if ping -c 1 www.yahoo.com >/dev/null 2>&1; then echo "出来ます" else echo "出来ません" fi
528 名前:525 mailto:sage [2007/06/03(日) 03:05:39 ] >>562 >>527 ありがとうございます できればヤフーなどの特定のサイトに依存せず 確実にインターネットに繋がるかどうか判断したいです。 もし無理なら特定のサイトでも構いませんが こういう場合通例としてyahoo.comを使うのが適切でしょうか?
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 07:09:14 ] 接続できていると分かったら、どこかと通信するんでしょ? その通信相手にすればいいよ。
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 07:21:06 ] >>528 何が目的なん?
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 08:59:25 ] その通信相手がICMPブロックしてるかも知れないから、ブロックしてない www.yahoo.comとかwww.google.comとか使えばいい。
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 11:01:00 ] >>528 君のほうから、どことつながったらインターネットに繋がっていると言えるかの 判断基準を出してくれないと先に進めないと思うよ。
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 12:04:41 ] 相手もそうだがプロトコルもな。 ファイアウォールの具合でICMP通らないかもしらんし。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 23:19:33 ] まぁ、スレ違いだな。
535 名前:名無しさん@お腹いっぱい。 [2007/06/04(月) 07:59:35 ] >>527 >if ping -c 1 www.yahoo.com >/dev/null 2>&1; then 関係ないが、この 2>&1 エラー対策でつか?
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 14:12:29 ] 遅レスだが、 tail -r ファイル名| tail +20 | tail -r でもいけた(tailばっかりでカッコ悪いか)
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:46:12 ] >>535 終了ステータスだけとれりゃいいので、エラーメッセージとか捨てる。
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 21:50:18 ] それを捨てるなんて、とんでもない!
539 名前:ウサチャソ mailto:sage [2007/06/04(月) 23:49:23 ] きのうはおたのしみでしたね。 ウホッ
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 23:51:56 ] *「おお しんでしまうとは なにごとだ!」 *「アッー!」
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 06:33:28 ] vmstat 1 の結果の左側に`date +%H:%M:%S`(時分秒)を付けて流して表示させようとしています。 以前、gawkでstrftimeを利用して同じ事をしたのですが、今回使ってるサーバのawkは gawkでない為に別の方法が必要です。 どうもウマイ方法が思いつきませんで・・・ご教示お願いします。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 08:54:12 ] Perlあるなら vmstat 1 | perl -MPOSIX -pe 'BEGIN{$|=1} print strftime q{%H:%M:%S }, localtime'
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 08:59:20 ] これは重そうだけど vmstat 1 | while read line; do echo `date +%H:%M:%S` $line; done
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 20:13:14 ] >>539-540 DQ I ?
545 名前:541 mailto:sage [2007/06/05(火) 22:31:39 ] >>542 HP-UX10.20だったのですがperlが入っていませんでした(汗 でも、これを機会にperlもちょっとづつ勉強したいと思います。どもでした。 >>543 readがそんな使い方できるとは知りませんでした。 おかげさまでばっちり動きました。ありがとうございます。
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/05(火) 23:39:38 ] bash.infoの説明だと echo hoge | read v で echo $V →hoge になるように読める で、できないってことはわかったんだけど結局readはどう使うんですか なんでwhile中だとうまく動くんでしょう
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 00:17:57 ] サブシェルが起動するから。 read で代入する変数はサブシェルのものだから、親シェルに戻ると忘れる。 while でなくても、下のような書き方をすれば {...} の中にかぎり有効。 echo hoge | { read v echo $v } あと、ksh はふつーに可能だったような記憶がうっすらとあるが自信ない。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 15:14:41 ] 質問 シェルスクリプトを、windowsでCD-Rに焼き、linuxで実行すると 改行がコマンドとして認識され、command not foundとなってしまいます。 普通に改行を改行として認識させることはできないのでしょうか?
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 16:33:41 ] よくわからんが改行コードの問題? 改行コードをLFで保存できるテキストエディタ使えよ
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 16:52:46 ] >>549 ありがとうとざいます LFで保存したところ大丈夫でした。 ただし1行目だけはなぜかcommand not foundとなってしまう。。
551 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 20:15:14 ] log=20070101.log $logを 2007-01-01 という風に、[西暦]-[月]-[日]な形にしたいのですが、どすればよいでしょうか? どなたか、お力をお貸し下さいませ。 .log と取って、4桁、2桁、2桁ごとに「-」を挟む。というのはわかるのですが 方法や何のコマンド使ってよいものやら見当もつきません。お願いします!
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 20:26:09 ] echo $log | sed 's/\(....\)\(..\)\(..\).*/\1-\2-\3/'
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 20:30:18 ] >>552 ありがとうございました!出来ました! sedは使えるつもりでいたんですが、まだまだの若輩者でしたorz こんなに早く答えて頂いて本当に助かりました。
554 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 23:42:52 ] じぇっとすとりーーーむ〜
555 名前:名無しさん@お腹いっぱい。 [2007/06/06(水) 23:42:59 ] シェルが何かは分かったのですが、シェルスクリプトが良く分かりません… 専門用語を交えないで言うと、どういったものなのでしょうか?
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 23:44:51 ] シェルが何かどうわかったか、専門用語を交えずに説明してからだ
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/07(木) 00:11:41 ] レストランのメニューがシェル。コース料理がシェルスクリプト。 大分違うな…
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/07(木) 00:35:32 ] e-words.jp/w/E382B7E382A7E383ABE382B9E382AFE383AAE38397E38388.html 専門的な概念なのに専門用語使うなというのは無理な話。
559 名前:名無しさん@お腹いっぱい。 [2007/06/07(木) 02:08:21 ] >>557 その説明で開眼しました!! 今ならどんなプログラムも書けそうです!! (^ω^)
560 名前:名無しさん@お腹いっぱい。 [2007/06/08(金) 00:50:30 ] if [ -e foo ] ; then echo "foo exists." else echo "foo does not exist." fi これを Solaris 8の bash, cygwinの sh, bashで実行するとOK。 でも Solaris 8の shで実行した時だけ test: argument expected と出てしまいます。どうにも分かりません。助けて下さい…
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 03:13:50 ] Solarisなどの旧式shのtestコマンドには-eというものはない。 これは外部コマンドのtestも同様。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 06:27:46 ] >>561 ダウト。 Solarisの外部コマンド版のtestの実体はkshスクリプトだから、 Solarisでも外部コマンド版のtestには -eオプションがある。 ただし、純正Bourneには -eがないので、使わないこと推奨なのは同意。 [ -f foo ] あたりで代用だな。
563 名前:名無しさん@お腹いっぱい。 [2007/06/08(金) 08:29:58 ] grepコマンドで検索した行の前後三行を出力するコマンドってないすか? たとえば、以下のようなファイルがある。 ---------------------------- aaa bbb ccc ddd eee fff ggg ---------------------------- grepコマンドをつかって、 $ grep ddd -a 333 とすると bbb ccc ddd eee fff と表示されるようなやつよ。
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 08:45:56 ] >>563 -A とか -B とかない?
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 10:35:48 ] >>563 普通にgrepだけで行けるぞ grep -A 3 -B 3 'ddd' filename
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 10:44:10 ] 普通は-Aとか-Bなんてない。
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:01:46 ] 何が「普通」かなんて人それぞれでしょ。 -A がある grep とない grep がある。 それだけ。
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:02:54 ] 目的達成できるなら、それでいいじゃん
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:03:45 ] grep -n して sedで : より前だけ取り出して awkにくべて前後の必要な行番号を全部計算して sort -nuして sedでsedのコマンドに成形しなおして sedで抽出。 てゆうか、grepにこだわらずにawk1個の方がめちゃ楽そう。
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:04:44 ] >>569 awkだけだとどうなるの?
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:29:37 ] FreeBSDは変にsed使うよりawk1本に絞った方が軽い。
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:43:53 ] 複数行のテキスト整形には弱い 普通は、prelとかrubyを使う まあ、perlとかruby使えないから聞いてるんだろうけど
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:52:15 ] >>572 sedやgrepでどうしようかななんて考えてる時間が無駄だよな perl覚えちゃたほうがいいのにね、これを機会に
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 11:55:16 ] これを機会にGNU grep入れちゃえ。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:00:44 ] パタン行より前の行も表示しないといけないのでawk一本だとちょっと手間でしょ。 perlやrubyを使ってもそれは同じじゃないかな。 sed+awkなら sed -e "$(awk '/pattern/{for (i=-2;i<=2;i++)if(i+NR>=0)print (i+NR) "{p;d;}"}' file|sort -nu)"';d' file zshでしか試してないのでクォート回りはshだと違うかも知れんが、 だいたいこんな感じで。
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:19:38 ] GNUは偉大だな、改めて思った
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:26:01 ] 当たり前じゃね? だってGNU拡張は、ユーザが便利だと思うものを実装して 拡張していったんだから きっと、>>563 みたいなことを、数年前にも同じといってる人が 現れてんだよw それで拡張されてる
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 12:40:49 ] GNU sed awk grep を使いましょうね
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 15:54:55 ] 俺はgawk派
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:04:21 ] ガウォーク
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:14:46 ] GNU is Not UNIX の意味がやっとわかったようでなにより
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:21:47 ] んでけっきょく >>563 はどうしたの?
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:25:28 ] GNU教に入信する準備をしてます
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 16:29:28 ] しこしこ、書いてんじゃね
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 17:38:00 ] mac でターミナルで操作しているのですが、safariでgoogleなどのページで キーワードを打ち込んで検索させたりはできないものなんでしょうか? 初心者なんで仕組みなどわかりませんので構造上できないものなら教えてください
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 17:49:58 ] >>585 pc11.2ch.net/mac/
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 21:02:22 ] シェルスクリプトとGUIアプリの連携ってか?
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 22:41:28 ] 質問です! ---hoge.txt--- aaa bbb ccc これを ---hoge.txt--- aaa ccc こうしたい。 sed -i "s/bbb//g" hoge.txtだと ---hoge.txt aaa ccc こうなってしまう・・・
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 22:49:06 ] sed -i -e '/bbb/d'
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 23:03:06 ] >>589 ありがとうございます!
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/08(金) 23:37:42 ] GNU sedは正規表現のエスケープまわりが腐ってるんだよなあ それに、わざわざBourne Shellに縛ったスレなのに、GNU拡張に依存するのもどうかと思う ポータビリティも勘案すると、perl使った方がいい
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 10:18:52 ] GNU grepの-oは便利
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 11:53:54 ] >>592 モレも-Po がマジ便利だと思う。
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 12:23:49 ] それを言ったらshよりzshのが便利だ
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 12:49:24 ] そうだよ
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 14:42:53 ] FreeBSDよりWIndowsのが便利だ
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 14:54:08 ] 当たり前だろ
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/09(土) 15:01:51 ] perlの書法がもっと自由度低かったら決定版たったのだが。 お行儀悪く書けてしまうのが悩みの種
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 01:08:21 ] お行儀良く書きたいならRubyなりPythonなりへ行けば良い お行儀悪く書いても心が痛まないのがPerlの長所
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 01:10:39 ] use strict; するんだからそれほどひどいコードにはならないような
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 22:37:24 ] どーせワンライナーか数行でやれるようなのしかPerlで書かないから どうでもいい
602 名前:名無しさん@お腹いっぱい。 [2007/06/15(金) 02:31:42 ] cshを勉強し始めたものです。 研究室で使うためです。 C言語もほとんど知らないので、取っ付きにくく、苦労してます。 今よく分からないのは、シェル変数と環境変数です。 普通に話に出てくるのですが、変数だとは理解してますが、違いが分かりません… どなたか教えて頂けませんか?
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/15(金) 02:41:57 ] シェル変数はシェルが使う 環境変数は(主に)呼び出されたコマンドが使う それはいいとして、なんでcshかちゃんと確認しろ csh使う必然性がなければ、shにしとけ
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/15(金) 03:12:03 ] 環境変数は子プロセスに引き継がれる。 シェル変数はそのシェルのみが使い、 子プロセスに引き継がれない。
605 名前:602 [2007/06/16(土) 01:09:53 ] レス有り難うございます。 なぜcshなのかと言うと、 今研究室で使われてるのがcshだとしか… Cで書かれたソースプログラムをcshに渡して、 結果を他のプログラムに渡して…… って感じらしいです。 まだ学部なので、難しいプログラムは書けず、 既成のプログラムの値を変えて走らせたりするようです。 最近の課題が、あるcshの中身を渡され、理解してくるものでしたが、 プログラムの知識が無い自分にはさっぱりというわけです…
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 01:58:47 ] そんなに何種類もcshがあるのか?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 03:31:44 ] cshで書かれたシェルスクリプトってとこじゃないか?
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 15:17:35 ] いや、cshの中身だぞ?
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 15:47:46 ] とりあえず>>605 よ、 cshの中身というのはcshスクリプトという意味か?
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 16:11:27 ] こらこら、cshの話はもう終り。禁止。
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 16:53:10 ] GNU grepの話をしてもいいなら、cshも良くないか
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 18:01:05 ] 良くない。
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 18:02:26 ] シェルスクリプトのスレでシェルのソースコードの話かぁ……
614 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 19:35:05 ] 質問です。 ファイルの内容が同じものをリストアップする目的で、 対象ファイルのmd5sumを計算したいと考えています。 ただし、ファイルが大きいと時間がかかってしまうので、まずはファイル頭の 512バイトだけでmd5sumしたいです。以下のようなものを書いたのですが、 ファイル数が多い(1000とか)とプロセスの起動がボトルネックになってしまう ようで、遅いです。 while read -r filename do dd if="${filename}" ibs=512 count=1 2> /dev/null | md5sum >> output done < ${tempfile_prefix}2_filesize_onajiyatu md5sumに先頭から512バイトだけで計算しろと指示することはできますか? もしくは何かいい案ありますでしょうか?
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:45:20 ] えろ画の整理スクリプトかよ
616 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 19:49:09 ] 違います。 エロ動画です。 だからでかいのです。
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:52:32 ] >>614 プロセス起動がネックならperlとかpythonとかrubyとか好きなのでやれ。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 19:53:08 ] >>614 perl を使う
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:02:27 ] まずはファイルサイズで比較すればいいのに
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:11:47 ] 粗く分けるのにmd5なんか使わんでも。 >>619 の通りファイルサイズが手軽だし、もし同じサイズで内容が違うものが 沢山ならファイル中の適当なところをhexdumpでもいいんじゃないの。
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:37:43 ] 横から済まぬが >>619 ,620 >> ${tempfile_prefix}2_filesize_onajiyatu って書いてあるから、そもそも同じサイズ限定ではないのか?
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/16(土) 20:40:36 ] 同じファイルサイズのものだけでも1000ファイルもあるって、 結構集めまくったね、絵炉動画をw
623 名前:名無しさん@お腹いっぱい。 [2007/06/16(土) 21:03:28 ] >617,618 perlか・・・ついに手を出すときが来たか >619,621 失礼しました。サイズ比較をあらかじめこんなのでやってます。 ls -l "$@" | sed 's/ \+/ /g' | cut -d ' ' -f 5,8 > ${tempfile_prefix}1_filesize_all awk '{ if(a[$1,0]==0){a[$1,0]=1;a[$1,1]=$0;} else{if(a[$1,0]==1){print a[$1,1];} a[$1,0]++;print $0;} }' \ ${tempfile_prefix}1_filesize_all > ${tempfile_prefix}2_filesize_onajiyatu >620 ためしに512byteのgomi.txtを作ってみて、以下試しました。 %time (for i in `seq 1 1000`; do cat gomi.txt > /dev/null 2>&1 ; done;) -> 1.486sec %time (for i in `seq 1 1000`; do md5sum gomi.txt > /dev/null 2>&1 ; done;) -> 1.510sec これくらいのサイズだと処理内容はあまり影響なさそうです。 md5sumの方が比較しやすかったのです。 >622 いやいや、得ろ動画とか1000個とか例えばの話ですよw
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 00:32:06 ] >>614 まずは、ファイルサイズではじいたら?
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 00:34:24 ] すまん。@bitwarpなもんで、更新漏れだった。 忘れてくれ
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 03:14:21 ] xargsでもつかえば?
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 04:00:08 ] 気が向いたんでやってみた $ time (for f in tmp/*; do dd if=$f bs=512 count=1 2>/dev/null | md5sum; done) 065d30715dcffa21596406373a9124ac - ...中略... ed4cf7b8f209f9ce630b5e76219357ae - (; for f in Desktop/*(.); do; dd if=$f bs=512 count=1 2> /dev/null | md5sum; ) 0.09s user 0.38s system 49% cpu 0.960 total $ time perl -M'Digest::MD5(md5_hex)' -e 'for (@ARGV) { open F,"<$_"; read F,$a,512; print md5_hex($a),"¥n" }' tmp/* 065d30715dcffa21596406373a9124ac ...中略... ed4cf7b8f209f9ce630b5e76219357ae perl -M'Digest::MD5(md5_hex)' -e Desktop/*(.) 0.02s user 0.02s system 18% cpu 0.193 total
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 17:51:50 ] xargs使えって
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 20:19:20 ] 絵炉動画ファイルは、ファイル名にスペースとか特殊記号とか入りまくりである ことが多いため、xargsは全く持って不適当。
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:13:28 ] それならfor文やreadでも難しくならないか・・ まxargsのほうがもっと不適当なのだろうが
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:16:22 ] >>629 man xargs
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:24:09 ] >>631 は何がしたいんだろうか? まったく外してるわけだが、、
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:26:16 ] >>631 $ ssh solarishost man xargs
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:33:38 ] ファイル名の問題以前に、個々のファイルごとに頭の512バイトを切り出したいわけ だから、xargs使ったところでプロセス起動数は節約できない。 よって、>>626 >>628 は全く的はずれ。
635 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:34:10 ] >>632 はずしているのはお前の方。 find 〜 -print0 | xargs --null
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 21:47:33 ] >>635 はずしているのはお前の方。 -print0 や xargs --null は、一般には使えない。(たとえばSolaris) あと、>>634 が指摘してるように、今回の件は xargsでは解決しない。 よって、そういう意味でも外しているのは >>635 の方。
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 22:10:53 ] -print0で喜んでるのは石器人。 現代人はふつー find ... -exec ... +
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 22:21:02 ] >>632 から某頭の悪い粘着君臭がする。
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 23:03:19 ] て言うか、プロセス起動数が云々と言うなら md5sum を改造するなり、 ファイル名の取得からハッシュの計算までやるようなアプリ作ればい いじゃん。
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/17(日) 23:14:55 ] >>617-618 で既に正答が出てるの何を今更…
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 00:13:31 ] 答えそのものも>627に出てるわけだが...
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 00:36:28 ] #find ... -exec ... + 横レスだが知らなかった ってか手元のmanにはない
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 03:34:11 ] 最後の「+」ってなに?
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 08:19:20 ] xargsは同じプロセスを連続起動するから 工夫されていると聞いたことがある。 これは事実?
645 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:14:11 ] 基礎的な質問ですいません。 bashで、シェル変数に値を突っ込み -zで存在を確認する手法ですが、 if [ -z $test ] ; then echo "val exist" else echo "val isn't exist" 質問 1.[ -z $test ] と書くのはよろしくない? 2.[ -e $test ] とすると、シェル変数が存在しない時に真、 シェル変数が存在する時に偽となるのはなぜ? 結構、このパターンで利用してたのですが、2.の動作を確認すると、 なぜだか逆になっているような。じゃ、-zもよろしくないのかなぁ、と ところで、みなさんは、環境変数やシェル変数の存在確認をどうやってますか? 宜しくお願いします。
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 15:23:43 ] >>645 まず、[ ] の中ではシェル変数は基本的にダブルクォートを付けること。 [ -z "$test" ] とする。この場合、$testがセットされていれば偽になる。 これだと真偽が逆になってわかりにくいので、 [ -n "$test" ] または -n は省略できるので [ "$test" ] とする。 [ -e $test ] は、$testがセットされていない時、[ -e ] となってしまい、 これは、"-e" という文字列がサイズゼロかどうか(この場合は2バイト)という 判定がなされるため、$testがセットされていないと真になる。 一方、$testがセットされていると、今度は -e は -eオプションとして解釈され、 $testの中身がファイル名とみなされるため、そんなファイルがなければ偽になる。 更に言うと、-e は Bourne shでは使えないため非推奨。
647 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:39:39 ] >>646 ありがとうございます。 うーーん、なるほど。1行目でよく分かりました。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:11:12 ] 丁寧に説明してもらった理由を理解したのかしてないのかよくわからん回答だな
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:12:07 ] このあたりものこともあって zsh で手抜きスクリプト書くことが多くなった
650 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 16:24:47 ] >>648 舌足らずですみません。 1行目で自分の間違いを気付き、 詳しい説明をしていただいたので助かりました、と書きたかったところでした。 -eオプションの非推奨コメントは特に助かります。
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 21:09:56 ] ______ / ))) / /// /―――-ミ / 彡彡 // / ヽ)) / 彡彡 iiiiiiiiiiiiiii iiiiiiiiii| / 彡彡 < ・ > 、<・ >l / | ヽ 〉 / ( | | __) | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / | ≡ /, ――― |ゝ < 馬鹿共にshellを与えるな! / | | L ___」 l ヾ \_________ _ミ l ______ノ ゞ_ | l ヾ ー / | l | | \ー ‐/ | |
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:10:33 ] >>646 >>更に言うと、-e は Bourne shでは使えないため非推奨。 ?????
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:30:50 ] >>652 教えて欲しいんなら「???」じゃなくて、ちゃんと日本語で書け。初心者君。
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:19:43 ] ところで-eがないshが標準で載ってるOSってどれ?
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:36:14 ] Solarisとか。SCOとか。Tru64とか。
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:36:15 ] >>655 今では使われていないOSばかりですね。じゃあ、-e使ってもいいですねw
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:45:45 ] つっ、釣られないぞ
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:41:51 ] >>653 では日本語で書かせていただきます。 私が学習に使用している O'REILLY の「詳解シェルスクリプト」によりますと、 /bin/sh 組込の test コマンドに於ける -e 表現は標準的なものとして記述され POSIX で定義している旨明記されております。また更に今回の議題の発端である >>645 質問子の環境と共通する bash 等での独自の拡張に付いて記述した件では、 条件判定構文中の -a 演算子について(非推奨です。 -e を使いましょう) とまで明記されているものを、使用者の環境の多用性や使用目的の別など勘案せず 一言の下に「非推奨」と断定できる根拠を教えてください。 お願いします。
659 名前:646じゃないけど mailto:sage [2007/06/19(火) 13:47:32 ] >>658 「Bourne shでは使えないため」って書いてあるじゃん。 それが重要かどうかは各自が判断すればいいこと。
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:51:15 ] >>658 POSIXは理想論ばかりで、現実に即してないんだよ。 いくらPOSIXでどうこう言っても、実際に動くかどうかがすべて。 test -e については、Solarisの/bin/shで動かないんだから、 OS共通のシェルスクリプトでは非推奨であるのは当然。 あと、別件で、-e の意味で -aを使ってはいけない(非推奨)なのはその通りだよ。 -a は別に ANDの演算子の意味があって、そちらの意味で使うべきだからね。 わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで -e を使ってるのがあったら、気づき次第直しとけよ。
661 名前:658 mailto:sage [2007/06/19(火) 14:12:59 ] 予想通りの回答をどうもありがとうございました。 >>わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで -e を使ってるのがあったら、気づき次第直しとけよ。 ご心配有り難うございます。 そもそも機能が曖昧過ぎて過ぎて使おうと思ったことも御座いませんw
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 14:15:20 ] 予想してたなら聞く必要ないだろ……。 むだに波風立てんなよ。
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 22:13:27 ] シェルスクリプトの互換性過敏症な奴っていじると面白いんだよ
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:22:07 ] ここにもユトラーか・・・・
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:28:40 ] >>663 export LANG=C とか書いてるのを見ると反応してしまうのは互換性過敏症ですか?
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:56:18 ] いや寧ろ互換性を指摘できる人がいて有難い
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 00:19:14 ] そんなこといって年寄りほめたらわらわらわいてくるぞ。 SunOS 3.5世代の俺なんかまだまだ甘ちゃんだ。
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 05:31:28 ] 沸いてきてくれ それぞUNIXの面白さの真髄だわ
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 09:12:11 ] 仕事では一緒になりたくねえけどなw
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 21:45:49 ] ようするに、 POSIX が理想論で現実に即していないのは当然の話で、 現実がバラバラだから標準化が必要という理念が生まれたわけですわな。 で、各プラットフォームでそれぞれ POSIX に準拠する姿勢を示していながら どうしても譲れない仕様への拘りがあるから未だに移植性の問題が取沙汰される。 そこの処の理を語らずに、只単に○○では使える or 使えないという議論に 終始するというのは如何にも思慮が浅いと言わざるを得まい。
671 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 22:08:39 ] 実社会ではそういうもんだ
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 23:20:26 ] 携帯電話みたいなものだね いまだに携帯電話つかわないもうろくジジイとかいるかなw
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:34:39 ] じじいじゃないけど使ってないよ。
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:36:56 ] うわw
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:38:49 ] 携帯電話使わない仕事というと、医者とかパイロットくらいか
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:53:54 ] というか、どこが「携帯電話みたいなもの」なのかさっぱりわからん。
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 03:01:35 ] 痴呆がはじまった?
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 23:19:43 ] >>670 こだわりなんかないだろ、準拠するのが面倒なだけだよ。 準拠したからって売れ行きがたいして変わるわけでもないし。 >>675 院内では携帯は使わないけど緊急呼び出しが頻繁にあるような 医者もいるからなぁ。 パイロットは仕事中は使わないけど、そういう意味なら電車の 運転手なんかも同じだな。 て言うか、仕事中とか会社の中に限定すると携帯持たない/持て ない奴はそれなりにいるし。
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 00:04:29 ] ケータイでも3G(高周波のやつ)は大丈夫らしいけど。
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 09:16:46 ] 使えない奴にかぎって、くだらねえことに拘ってたりする
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:12:44 ] そろそろUNIXの話にでも戻す?
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:59:20 ] よしなに
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:11:19 ] >>678 >>準拠したからって売れ行きがたいして変わるわけでもないし。 売行きが変わらないからって騒ぐこともないでしょ。 拘りがなければ準拠する方がはるかに楽なのにねぇ あくまで /bin/sh 標準なのは基本であって、実勢はケースバイケースで、 linux じゃ bash 標準だろうし、 solaris だって適宜 ksh なり使うだろうし、 パーソナルユースや $HOME/bin 限定使用とか、管理者でも同一プラット ホームだけでの運用が多く、移植性のプライオリティーがさほど高くない 現況において、やいのやいのいう奴は要するに「言いたいだけ」ちゃうんかと。
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:53:48 ] > 拘りがなければ準拠する方がはるかに楽なのにねぇ 何が楽なのか詳しく書いて欲しいんだが。 商用ソフトってちょっと変えると、検証がスゲー大変なことぐらいは知ってるよな?
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:08:17 ] 楽しいもの見つけてしまった。 sed.sourceforge.net/sed1line.txt www.student.northpark.edu/pemente/awk/awk1line.txt 組込みで使っているLinuxにgrepが入ってなくて sedでシミュレートしたスクリプト書いたんだけど、 それ以上のことがいろいろできそうな感じなり。 おまけ www.fepus.net/ruby1line.txt
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:11:08 ] >>683 Solarisは古いshとkshを選択できるからいいけど、 HP-UXとかAIXは/bin/shはkshそのもなんで選択の余地はない。 シェルごときで移植性とか言ってるアホが多いっていうのは同意。
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 03:31:47 ] 視野が狭いのって、幸せでいいよね。
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 08:31:29 ] そう?いまどきシェルの互換性なんか気にしてる奴って幸せそうに見えないが。
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 09:38:27 ] シェルはさまざまなコマンドと組み合わせて使うしな。 コマンドにも完全な互換性がない以上、シェルスクリプトの互換性や移植性を気にし過ぎるのはアホ。 ささっと書いてテストして動きが変だったら、そのとき直せばいい。 シェルってそういうライトな使い方をするためのものでしょ。
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:04:55 ] 互換性のことも知らずに、暢気に [ -e file ] とか、export HOGE=hoge とか書いて、 「動いたからOK」とか言ってる香具師の方がアフォに見えるけどな。
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:28:19 ] 「さくっと直せばいいじゃん」って言ってる奴はだいたい直したことがない奴だし。
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:32:04 ] そもそも、直す必要なんてない、動くから
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:05:10 ] >>692 >>690
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:08:34 ] 何が問題か、具体的に
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 12:54:51 ] 問題を理解できていないことが問題なんだろ。
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 13:08:14 ] 互換性がいるのは移植する可能性がある場合だろうかと。 あるいは環境が一部不明な場合か。 ただ、知識としてはあれば有効だろうが
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:23:00 ] 開発当初は特定のシステム限定であったとしても、実社会では いつのまにかそんな制約はなくなってしまうものなのだよ。 ニートにはわからないだろうが。
698 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:53:17 ] 自分の体験したことが、現実の全てだと思っている>>697 がいるスレはここですか?
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:16:00 ] >>698 「全ての」と「存在する」の違いを未だ習ってないのかい? ぼーや
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:20:19 ] シェルで移植性の高いスクリプトを書くのはめんどうくさいので Perlを使うようになりますた
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:25:18 ] それはそれで別の移植性の低さが問題になりそうな…
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:36:58 ] Solarisさえ無くなればシェルの互換性の問題はほとんど解決するよね。
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:55:08 ] UNIXのソフト開発標準を策定しようという取り組みはたくさんあった。 だがそうした標準は、POSIX(Portable Operating System Interface)のように 一般的過ぎて役に立たないか、あるいはUNIX戦争として知られる Open Software Foundation対UNIX Internationalの企業連合間抗争に 巻き込まれるかだった。
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:09:49 ] mkmfのようにメタスクリプトを環境依存シェルスクリプトにコンパイルする プログラムがあるといいと思います!
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:11:11 ] mkmfって、、また古い遺物を持ち出してきたなぁ、、
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:29:52 ] 本当にそんな互換性が必要ならlintの一つや二つとっくにありそうな気がするが、 寡聞にして知らないなあ。
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:33:44 ] >>706 つ dash #まあ呼び出したコマンドの互換性まではチェックできないわけだが・・・
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:36:48 ] 役に立たない、ただそれだけ
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/24(日) 05:17:26 ] すべてのシェルが/bin/shを名乗るのを止めて /bin/shを永久欠番化すれば解決
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 02:26:09 ] なんかすごい扱われようだな。 互換性を述べている人は割とバランスの取れたUNIX流の解釈だと思うぞ
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 03:02:50 ] どうせUnixなんて適当じゃねえか varとかetcとか システム変えることになったらどうせテンヤワンヤだ
712 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 05:49:56 ] ということにしたいんですね:)
713 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:17:51 ] >>710 素直に自分よりの解釈だと言えば?
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:43:08 ] >>685 のは結構凄いと思うが、 >>517 のedのヤツはもっと凄いな。 オレもed好きになろう。
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:37:00 ] edで日本語がうまく扱うほうほうがあれば言うことないのだが・・・・
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:11 ] sedにin-placeオプションがなくてperlをよく知らなかったころは edでやってたな
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:12 ] >715 edより先におまえが日本語をうまく扱えるようになる必要がありそうだ
718 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:44:41 ] 誰がうまいこといえと
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 21:37:41 ] てか、蒸し返すようで恐縮だけど シェルスクリプトって、基本的に ash と ksh と bash で動けば 移植性で問題になることは極めて低いよね? この三つで動いても駄目な環境って今どれほど実運用されているのだろうか?
720 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 23:39:23 ] >>719 Solarisが問題だな。Solarisにはkshが標準で付いてるとは言え、 シングルユーザモードでは使えない。 シングルユーザモードを含めたシステムスクリプトは依然、 /bin/shか/sbin/sh(単にstatic linkというだけで中身は/bin/shと同じ)の 範囲内で書く必要がある。 誰かが書いてたように、Solarisが無くなる(もしくは影響力が無くなる)なら、 シェルの互換性の問題は一気に解決するだろう。
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:25:59 ] Solarisの/binは/usr/binへのシンボリックリンクだからkshやbash使ってもいいんじゃない? /usr/binの中には/bin/kshで書かれたコマンドもけっこうある。 Solarisのshの動きがヘンなのはたしかにときどきちょっと困る。
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:42:18 ] > Solarisの/binは/usr/binへのシンボリックリンクだから マジで?
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:46:28 ] > シングルユーザモードでは使えない。 > シングルユーザモードでは使えない。 > シングルユーザモードでは使えない。
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:50:42 ] >>721 マジだよ。/sbinは別れてるけど。 >>720 は/usrがマウントできない状況のことを言ってるんだと思うけど最近は/と/usrを分けないのもふつうなんじゃないかな。
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:53:11 ] どっちかっつーとそういう問題でなくて、 ふつースクリプトは#!/bin/shで書くけど/bin/shが何だかわかんねーじゃん? って話では?
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:29:26 ] >>722 HP-UXもだな。
727 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:31:28 ] ashもいろいろ修正入ってる。 Solarisの/bin/shはそれこそSystemV7のころのものとほとんど変わっていない。
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 03:37:47 ] ・・・ってシェルを使えじゃなくてPOSIXだか何かのsh規格に沿って書けって事だよな。
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 07:44:21 ] >>721 じゃなくて、シングルユーザーモードの時、 /sbin/shはあるが、 /sbin/kshは無い。 /sbin/shはstatic linkの/bin/sh(/usr/bin/sh) だから、シングルユーザーモードも含めれば、 結局 /bin/shの文法の範囲で書かざるを得ないという話。 しかも、Solarisの/bin/shは古いままなので、 export a=b も、$(command)も test -e も、 ちょっと新しい書き方はすべて使えない。
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 08:03:47 ] 互換性の話に便乗だけど、 一部のスクリプトで、未だに ${1+"$@"} って書いてあるのがある。 これ、もう "$@" でいいんじゃないか? 引数が0個の時に ""が残らないようにする措置だろうけど、 Solarisの/bin/shですらそんな不具合は発生しない。(確認済み) なので、"$@"と書いて問題ないし、視認性上も "$@"と書くべきと思うんだが。 本当に ${1+"$@"}と書く必要がある /bin/shを搭載したOSって、 現存してる?
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:07:07 ] >>729 なんか Solaris のシングルユーザモードって不便そうですね。 CD 6枚焼いたけど、インストールを躊躇してしまうよ。
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:19:42 ] / と /usr をわけたりしなければ気にする必要ないよ。
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:07:41 ] >>724 , >>726 なるほどねぇ、知らんかったよ。ありがと。 >>730 書き換えるのが面倒なだけなんじゃないか? 目障りだと思うなら、君が片っ端から書き換えて動作検証してあげればいいと思う。
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:19:19 ] >>732 すんません BSD ユーザなもので、 / と /usr を分けるというのが イマイチ良く解かりません。 ad0s1a に全部突っ込めって事ですか? /var も /tmp も含めて・・・(よーするに swap 以外は同じパーテーション?) Solaris だとそんなの有りなんだぁ。(BSDでも無いことは無いけど、なんだか・・)
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:36:43 ] OSは別に関係ない。パーティションの切り方なんて好みの問題だ。
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:43:05 ] >>735 でも、その好みの問題に対して Solaris はシングルユーザモードの 挙動をもってして、ユーザに介入してくる分けでしょう? >>732 のレスからは、そういう風に読めるのだが?
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 00:09:08 ] どうでもいいけどよそでやってくんないかな。
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:10:23 ] >>730 の ${1+"$@"} てどうゆう意味なの?? なんか理解できん・・・(TT
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:18:04 ] >>734 NetBSDのデフォルトは分けないからBSDユーザーってのは言い訳にならない。
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 07:33:15 ] あと、未だに if [ X$HOGE = X ] なんてのも見かける。これも、 if [ "$HOGE" = '' ] と書いたほうがいい。 むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、 [ = = '' ] みたいになるとエラーになるtestに対する対処として、 X$HOGE とかいう回避法があったけど、今の testコマンドでそれが必要なのは もう現存しないはず。
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:01:16 ] >むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、 ちがう。 $HOGE の内容が -f だったような場合に対する対処だから、今でも有効。
742 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:16:42 ] >>741 $HOGE の内容が -f でも正常に動くんだけど。 [ -f = hoge ] みたいに、項が3つある時は、 -fはファイル存在オプションとはみなされないから -f だった時駄目になるような/bin/sh搭載した OSって 何?
743 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:36:59 ] >>742 a="-f" b="-a" c="=" d="" test X"$a" = X"$b" -a X"$c" = X"$d" echo $? test $a = $b -a $c = $d echo $? FreeBSD の ash、Solaris の sh, ksh、GNU bash いずれでも異なる結果になりました。
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:39:58 ] >>743 それは、複数の式を -a (AND) でつないだ場合の話。 それだと確かに式の評価がおかしくなることがあるが、 [ $HOGE = hoge ] なら、X$HOGE とする必要はなし。 Solarisの/bin/sh でも [ -f = -f ] は無問題。
745 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:43:14 ] -a 使ってるかどうかで場合わけするより 一律で X$HOGE にしといた方がおしゃれ。
746 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:48:53 ] >>745 -a 使う場合は、各評価式ごとに \( \) で括るのを推奨。 [ \( "$a" = "$b" \) -a \( "$c" = "$d" \) ] ↑みたいにね。これで、X"$HOGE" は不要。
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:54:19 ] >>744 > [ $HOGE = hoge ] なら、 クォート忘れてる。 > X$HOGE とする必要はなし。 ダウト。 そのへんの対バカ性能をどこまで頑張るかはヒューリスティックで実装依存。 たとえばFreeBSDのtestでは $ HOGE='!' $ [ "$HOGE" = hoge ]; echo $? [: =: unexpected operator 2 となるので変数に任意の値を想定するなら "X$HOGE" = Xhoge は依然必要。 常にtestの引数が正しい式となるよう書くにしくはなし。
748 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 15:06:47 ] >>747 氏に聞きたいのだが、 >>730 についてはどうお考え? ${1+"$@"} は以前必要? もう不要で "$@"で桶?
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 15:09:08 ] ここでポリシー決めても どこ使うんだろ。
750 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:18:00 ] こういう突っ込んだ話まで網羅してる本は無いの?
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:20:30 ] 結局トラディショナルな書式に落ち着くんだよな...
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:25:52 ] 文字列の比較なら [ X"$HOGE" = hoge ] なんてするより case $HOGE in hoge) にするなぁ。 caseだと、たとえ$HOGEの中身が ! だとか -f -a とか特殊記号だったとしても すべて無問題だから。
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:31:27 ] >>750 詳解シェルスクリプトを企画するか
754 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:35:22 ] 需要ないだろー
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:37:22 ] wikiでいいんじゃね
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:38:15 ] 需要とかそういうことに興味あるのかしら?
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:39:17 ] >>756 本売るつもりなら大事でしょ。
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:40:07 ] 需要ないだろ。問題になるのSolarisだけだし、Solarisユーザーの人数が、、、
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:41:25 ] >>757 >>756 が言ってるのは、ユーザーがシェルの互換性に興味あるのか? ってことでは (需要に興味があるかどうかじゃなく)
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:49:09 ] 今時、シェルスクリプトの本なんて、全く売れないとは言わないにしても 何冊くらい売れるんだ? このスレでも>>4 にある本の話なんて全然出ないし。
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:50:30 ] 入門書はそれなりに売れるんじゃないの? そういうの読む人がここの話に参加しづいらいだけで。
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:52:47 ] getopts は互換性あるの?
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 17:59:17 ] >>762 よほど古いシェルじゃない限り互換性ある。でもなぜか出番なくてあまり使わない。
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:02:34 ] 詳説正規表現もこんなのみんな興味あるのかよとかおもったけど 意外に受けたらしいから
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:11:11 ] 互換性があって、どのシェルでも使えるのに、 使ってるの見たことないコマンドの筆頭が readonly だな。
766 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:12:21 ] >>763 ありがとうございます。 もうひとつ質問なんですが、ポータブルかつ安全に一時ファイルを作成するにはどうすればいいのでしょうか。
767 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:12:31 ] UNIXシェルの新刊はここ2年くらいやたら出たが、 もうこの分野で出ても意味ないわな。 カーニハン&パイクとブルース・ブリンけあればいいんじゃないか。
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:17:41 ] >>766 どこまでの安全性を言ってるのかわからないけど、 (unask 77; > /tmp/hoge$$) じゃだめかい? mktempコマンドは、必ずしもあるとは限らないと仮定するべきなのだろうか?
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:21:56 ] mktemp(1) を勧める文書は「pidは容易に推測できるので危険」とか書いてますよね。 実用上はほとんど問題にならないのでしょうが、気持ち悪いので何か安全な方法があるのかお尋ねしました。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:31:34 ] 本当に安全でないといけないなら、 mkdirとかでちゃんとロックして、 失敗したら別の名前で試すとかするしかない。 作るディレクトリのパーミッションちゃんとしとけば 推測されてもかゆくもないでしょ。
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 18:49:36 ] cat /dev/urandom | od -x
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:09:45 ] >>771 /dev/urandom はポータブルではないわけで、、
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:10:47 ] こういう時はお約束だろ >>771 catが無駄です。
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:45:41 ] 正規表現もそれぞれで実装がまちまちなのに、なにを言ってるのか
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 19:53:31 ] そもそも正規表現エンジンが内蔵されてる sh なんかあったっけ?
776 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:07:27 ] 詳説シェルスクリプトが必要とされているな
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:09:05 ] なんで正規表現の話が出てきたんだ?
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 20:13:15 ] 774さんの説明に期待
779 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 01:27:29 ] 激しくどうでもいいが、Solarisの/sbin/shは動的リンクされているぞ。 ていうか、間違いだらけの知識を持ってるやつほどSolarisをバカにする傾向があるな。
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 01:33:43 ] >>779 Sol10 からね。Sol9 までは static link。
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 03:23:19 ] 最近Solarisを使いだした奴に限って、Solarisをマンセーしたがる傾向があるな の間違いでした
782 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 16:06:14 ] >>748 747じゃないけど "$@" -> ${1+"$@"} とするのは set -u でもエラーにならない為かと すくなくともある環境では0を除いた位置変数が未設定なら前者はパラメータ未設定エラーになるから 別に""の互換性の理由だけで${1+"$@"}にする訳ではないでしょ
783 名前:782 mailto:sage [2007/06/30(土) 16:14:29 ] 誤) 為かと 正) 為でもあるかと
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:05:31 ] >>782 実際に ${1+"$@"} が使われてるのは set -u のところじゃない。 コマンドのラッパーで引数を渡す時の話。 なので、>>782 の話は当たっていない。
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:10:16 ] ${1+"$@"} と書くのは、位置パラメータがない場合に 空文字列が残らないようにするため。 他に、${@+"$@"} という書き方もある(あった)。 今議論になってるのはそこじゃなくて、 未だに ${1+"$@"} が必要なシェルが現存しているかどうか、 現存しているなら そのOS名は? という質問。
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 17:59:27 ] >>784-785 「でもあるかと」と訂正してるんだが 実際 set -u 設定状態でコマンドラッパーに"$@"で渡そうとしても $@ を評価(展開)する段階で未設定と判定された訳で 空文字列が残るかどうかなんて今時大抵解消されてるでしょ 幾つかのOS、幾つかのB系シェルを触ったことはあるけど個人的には見たことがない ただ単純に ${1+"$@"} -> "$@" として問題ないか?と聞かれたら set -u で問題が起きるからダメだと
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:24:29 ] >>786 で、その set -u で問題が出たOSって何?
788 名前:782 mailto:sage [2007/06/30(土) 18:25:32 ] 上の文、言葉のチョイスが変だわ もともと空文字列対応で今時 ${1+"$@"} とする必要はあるか?かもしれんが、 たとえその為の対応が不要になったとしても、${1+"$@"} -> "$@" にしていいことにはならんよと言いたい 理由は以下のスクリプトを実行するとエラーになる環境もあるからと #!/bin/sh set -u echo "$@"
789 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:29:44 ] >>788 だから、そのエラーになる環境は何なのかと。 俺のところの *BSD/Solarisとあと犬で、エラーになるのはひとつもないのだが。
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 18:56:23 ] >>789 そのSolarisじゃないの? ほんとに試してみた? バージョンによるのかな? 結局互換性の最大の問題はいつもSolarisだなww
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 20:36:50 ] 古いSolarisで見限っちゃったやついっぱいいるからな いまのSolarisをしらない奴がいてもしょうがない
792 名前:名無しさん@お腹いっぱい。 [2007/07/03(火) 01:38:27 ] 今のソラリスは早いの? おそーーーーーーーーいので、あまり使いたくない。
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/03(火) 12:33:55 ] 昔からCPUなりのスピードは出てると思うがな...
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 12:36:32 ] rm -rf /なんてもう古い 時代はmv /bin /ms.green
795 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:29:33 ] 誰か教えて。Bシェルで test 1000000 -lt 9999999999 の結果が正にならないんだけど。数値型の値に制限とかあるのかな?
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:31:41 ] >>795 bashだと無問題。「正」じゃなくて「真(0)」な。
797 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:35:06 ] 小さい値だとちゃんと真(0)になるんだけどなんでかな。
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:35:10 ] >>795 実装依存だな。シェルによっては 31bit整数最大の 2147483647 が扱える最大値。
799 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:37:55 ] >>798 ありがと。ちなみに対処法って何かあったりする?違う言語使うしかないか。
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/04(水) 22:42:13 ] >>799 bcに喰わせるとか。bcだともっと大きい数まで扱える。 echo '1000000 < 9999999999' | bc bcでは、testとは逆で、真の場合1になって、それが標準出力に出る。
801 名前:名無しさん@お腹いっぱい。 [2007/07/04(水) 22:55:38 ] ありがとう。試してみます。
802 名前:名無しさん@お腹いっぱい。 [2007/07/05(木) 22:47:11 ] ipアドレスを0101って2進数にするにはまず・・・・・・・・なにすればいいの?
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/05(木) 23:01:13 ] 小数点までを取り出す
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 01:13:45 ] こんなのでどうだろう (echo obase=2; echo 1.2.3.4 | tr '.' '\012') | bc | xargs -n 1 printf %.8d
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 01:23:00 ] もちょっとカイゼン: 旧:(echo obase=2; echo 1.2.3.4 | tr '.' '\012') | bc | xargs -n 1 printf %.8d 新:printf %d%.8d%.8d%.8d `echo obase=2.1.2.3.4 | tr . \; | bc`
806 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:00:27 ] shebang が #!/bin/shのシェルスクリプト test.shを PATHの通った$HOME/bin に置いたところ、 tcsh では $ test.sh で動作するのに、 bash では $ test.sh で動作せず、 $ bash -c test.sh でも動作しませんでした。 /usr/local/bin/以下に置いたところ、 bash上の $ test.shは動作しましたが、 やはり、$ bash -c test.sh は動作しません。 この原因は、どのあたりにあるのでしょうか。 ヒントでよいので教えてください。
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:26:25 ] >>806 (t)cshと(ba)sh では、PATHの変数が違う。本当はPATHを通し忘れているというオチ。 あるいは、.bashrcでPATHが再設定されてしまっているとか。
808 名前:806 mailto:sage [2007/07/06(金) 10:42:36 ] >>807 bash上で、$ set | grep PATH すると、$HOME/binも入っているのですが、 やっぱり、PATH関係っぽいですよねぇ。 $ bash -c test.shができないのが気持ち悪いです。 ちなみに、$ $HOME/bin/test.sh では実行できました。
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 10:46:13 ] >>808 setじゃなくて、printenvで確認した方がいい。 シェル変数のPATHのみセットされていて、exportされてない可能性がある。 すると、bash -c とかやった時、新しいbashにはPATHが引き継がれないから、 そういう現象が起きる。
810 名前:806 mailto:sage [2007/07/06(金) 10:59:27 ] >>809 exportされないというのは盲点でした。 おっしゃるとおり、 $ printenv | grep PATH をしたところ、$HOME/binも含まれていました。 一応、.bashrcでの設定はきいているんですよね。 ググったところ、Cygwin上では、 bashのバグ?かなにかで、bash -c がきかない現象があるようです。 遅くなりましたが、自分の環境は linux 、bash 3.1 です。
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 11:09:47 ] ユーザ名だけ伏せていいから、完全なスクリーンダンプ出せ
812 名前:806 mailto:sage [2007/07/06(金) 12:10:14 ] >>811 席を外していまして、遅くなってすいません。 スクリーンダンプは以下のようなものでよろしいでしょうか。 実はtest.shは、navi2chインライン画像表示のためのシェルスクリプトで引数もとります。 i) bash上で実行 $ bash --verbose -c navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif navi2ch.makethumb $ sh -x navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif + tmp=/tmp/navi2ch-thumbnails + origfile=/tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif + thumbfile=/tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + thumbsize=300x150 + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' -z '' ']' + /usr/bin/wget www.google.co.jp/intl/ja_jp/images/logo.gif -q -N -x -P /tmp/navi2ch-thumbnails + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + thumbsize=300x150 + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' -z '' ']' + /usr/bin/wget www.google.co.jp/intl/ja_jp/images/logo.gif -q -N -x -P /tmp/navi2ch-thumbnails + '[' '!' -f /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' ++ identify -format %n /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif + scene=1 + '[' '!' -s /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg -o /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg -ot /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif ']' + '[' 1 -gt 1 ']' + convert -sample 300x150 /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg + echo -n /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg /tmp/navi2ch-thumbnails/www.google.co.jp/intl/ja_jp/images/logo.gif.jpg
813 名前:806 mailto:sage [2007/07/06(金) 12:13:07 ] >>812 上の方の $ bash --verbose -c では、画像は取得されませんでした。 下の方の $ sh -x は、画像が取得されました。
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:18:15 ] なんかよくわからんけど フルパス指定じゃだめ?
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:32:04 ] 改行コードが CRLF になってないか?
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 12:39:22 ] >>812 test.shが問題だというから、 ちゃんと問題を切り分けて小さくしてるのかと思ったら、それかよ .bashrcの中身も、printenv PATH そのものも、隠さず出したら?
817 名前:806 mailto:sage [2007/07/06(金) 12:52:00 ] /usr/local/bin/下のnavi2ch.makethumbを消し、~/bin/navi2ch.makethumbだけにして、 もう一度試したところ、bash上でも $ navi2ch.makethumb 引数 が実行できました。 しかし、 $ bash -c navi2ch.makethumb 引数 は、やはり実行できませんでした。 >>814 フルパス指定だとbash上でも実行できます。 一応、回避策として、/usr/local/bin/に置いているので、具体的な支障はないのですが、 "bash -c"だけがうまく動いてくれないのはなぜだろうと不思議に思って、質問しました。 だから、本当はこんなにレスしていただくほどのことでなくて、申し訳ないです。 >>815 nkf でチェックしたところ、EUC-JPでした。(環境はja_JP.UTF-8) cat -v で見ても、改行コードらしきものはありませんでした。
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/06(金) 13:06:23 ] PATHの問題は知らんけど、引数を渡すのなら bash -c 'navi2ch.makethumb 引数' じゃないと駄目だろ
819 名前:806 mailto:sage [2007/07/06(金) 13:07:41 ] >>816 #!/bin/sh echo test のようなシェルスクリプトですと、~/bin/以下に置いて、 $ bash -c test.sh test と実行できます。 $ printenv PATH /home/mona/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games ふだんbashを使っていないので、~/.bashrcはありものです。 ~/.bashrc PATH=$HOME/bin:$PATH ↑とりあえず、これだけにしました。 これでもやはり、 $ bash -c navi2ch.makethumb www.google.co.jp/intl/ja_jp/images/logo.gif では画像を取得できませんでした。 "bash -c"はいろいろときびしそうですね。
820 名前:806 mailto:sage [2007/07/06(金) 13:12:21 ] >>818 $ bash -c 'navi2ch.makethumb 引数' で画像を取得出来ました。 超基本的なことに気付かず、おさわがせして申し訳ないです。 どうもすみませんでした。 ほんとうにごめんなさい。
821 名前:名無しさん@お腹いっぱい。 [2007/07/15(日) 17:20:37 ] blog.miraclelinux.com/thethird/2006/12/post_4e7b.htmlo (sleep $ALIVE_TIME; ps $$ && kill -INT $$; sleep 1; ps $$ && kill -KILL $$) 1秒待ってもう1度だけkillしてるのはなぜなんですかね?
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/15(日) 17:56:03 ] >>821 よく見ろ。-INT と -KILL で違うだろ。
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/15(日) 22:02:12 ] 本当だ。失礼しますた。
824 名前:名無しさん@お腹いっぱい。 [2007/07/16(月) 22:04:04 ] シェルスクリプトでif文に正規表現による文字列一致条件を記述できないでしょうか? sedなどを使ってやればできないことはないですが、 if文一発でできればいいなと。。
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:07:47 ] >>824 できない。 正規表現と言ってるが、実際にはワイルドカードで十分なことが多い。 ワイルドカードなら ifの代わりに caseを使えばできる。
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:08:01 ] case使え。
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 22:25:25 ] モレはいっつもテストコマンドの中でegrep使ってるけど・・・・素人なのでアフォな事やってるのかも。
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/16(月) 23:48:40 ] if expr $string : $regex >/dev/null; then ...
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/17(火) 23:10:26 ] >>827 機能・性能に問題なきゃそれで充分だろ。 コンピュータ (て言うか、道具) なんて楽するためにあるんだから。
830 名前:827 mailto:sage [2007/07/17(火) 23:45:10 ] じゃあ、>>824 もそれでよろ(w
831 名前:名無しさん@お腹いっぱい。 [2007/07/22(日) 20:41:39 ] UNIX上からリモートでWindowsのバッチを起動させるシェルスクリプトを 作りたいのですが、実装イメージがまったくわからず困ってします。 Win相手に対してrshは使えないであろうし。。。何かいい方法をご存知の方 いらっしゃいませんか。よろしくお願いいたします。
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 20:44:38 ] スレ違い
833 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 21:38:16 ] >>831 cygwin + sshdとかな。
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 23:07:17 ] >>831 Windows が 2k / XP なら、telnet でどうぞ。
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/22(日) 23:07:46 ] >>831 >Win相手に対してrshは使えないであろうし 使えるよ sohda.net/cygwin/treebbs/treebbs.cgi?kako=1&all=232&s=232 www.uhero.info/techinfo/CygwinSSH_setup/index.html
836 名前:824 [2007/07/22(日) 23:08:49 ] 実行時間は case < expr < sed だったので 結局、caseにしときました。
837 名前:831 mailto:sage [2007/07/22(日) 23:48:25 ] >>833 >>835 アドバイスありがとうございます。cygwinについて あまり知識がないので調べてみます。 >>834 telnetで可能ということは、Win上でtelnetサービスを 稼動させておけばいいということでしょうか? 明日にでも実施してみようと思います。 ありがとうございました。
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 01:24:43 ] > telnetで可能ということは、Win上でtelnetサービスを > 稼動させておけばいいということでしょうか? 手元の 2k だと特にわざわざ入れた覚えはないから、多分 標準で入ってると思う。 サービスの中に telnet ってあるはずだから、それを起動 するだけ。 常用するなら、スタートアップの種別を「自動」にする。
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 03:17:55 ] telnetは対話型だから、ダメというかめんどくさいだろ。
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 07:39:36 ] expectとか使えばいいだけじゃないの?
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:43:20 ] 下記のようなファイル検索をするシェルを作ったのですがうまく動きません #!/bin/csh echo 検索するファイル名を入力してください: set filename = $< (find /* -name $filename -type f -print > /dev/tty) > & /dev/null 「hoge.txt」を検索する場合はうまくいくのですが、 ワイルドカードを用いた「hoge\*」の検索をすると検索を行わずに一瞬で終了してしまいます。 setで変数に"\*"を入力するのは不可能なのでしょうか?
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:45:14 ] 今日はカレーにする
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:50:39 ] >>841 >>1
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 21:52:21 ] ・シェルスクリプトのことをシェルってゆーな クオートすれば?
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:31:26 ] シェルってゆうな。クズ。 csh捨てろ。クズ。
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:34:46 ] スルーカ
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/24(火) 22:44:48 ] >>843-845 すんまそん、会社でシェルシェル言ってるもんで癖がついてました。 クオート試してみることにします。 cshは会社の都合なんすよ
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 06:21:28 ] >>847 最初の行に sh と書きゃいいじゃん。
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 12:34:58 ] >>848 実社会で勉強してね cshからshに変えるのは容易ではないのだよ シェルスクリプトは1人で作るのではないし 1つの会社で作るものでもない
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:06:37 ] つまり、1人だけではなく1つの会社だけでもなく、 いくつもの会社にまたがって何人もの人がよってたかって >>841 みたいなスクリプトを書いているわけだな。すげぇ。 つーか、csh を使うにしてもせめて #!/bin/csh -f にしろよ。
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:13:50 ] >>841 の例は、わざわざcshの欠点が目立つような典型例だな。 ワイルドカードの展開の問題とか、 findのstderrを捨てるために苦労してるところとか。 そもそも、findをインタラクティブに実行させるようなスクリプトは、 システム管理用スクリプトじゃない。初心者ユーザー向けに作ったものだろ。 こんなの、/bin/shで書き直せば一発。 >>841 が抱えているcshでの問題も一気に解決する。 >>849 へ。 みんな実社会で「cshスクリプトは使わない」が常識だといってるんだよ。 >>849 は自分の会社名を公表しない方がいいよ。会社の不名誉になるからね。
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:15:45 ] cshじゃなきゃだめな会社ってどこ?
853 名前:849 mailto:sage [2007/07/25(水) 14:57:09 ] >>851 ま、会社名を挙げる気は無いけど、 おれんとこでは全部のスクリプトがcshだし スクリプトの作成・保守を依頼している会社も cshで作るようになっている。 OSが古いもの・新しいものが混在しているのも 理由ではあるが、 常識など、会社によって違うものだろ。 シェルがダメなのは分かるが、 シェルを変えろとか無理な話だ
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 14:59:19 ] HP-UXでkshを使っているのですが、C-p・C-nで履歴検索ができるとmanpageに書いてあるのですが、 実行しても何も起きません。 どうすればよいのでしょうか? また、linuxのbashみたいに↑↓キーで履歴表示をしたいのですが、 kshで実現可能でしょうか?
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 15:07:05 ] >>853 > OSが古いもの・新しいものが混在しているのも理由ではあるが、 /bin/shが存在しないUnixなんて無いんじゃないのか > シェルがダメなのは分かるが、シェルを変えろとか無理な話だ へえ。cshがダメなのははるか前からの常識なのに、誰もその やりかたを変えようとせず、変えるのは「無理」だと思ってるんだ。 しかも古いスクリプトだけでなく、新しいスクリプトもわざわざ cshで書き、ゴミを製造し続けていると。 勿論、C++やJavaやPythonなんて誰も使わないんだろうな。 ソース管理は未だにCVSでさえない、いやソース管理なんて概念もないね? お前さんがアホなのか、会社がアホなのかは知らないが、実に見事に アホだな。
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 17:35:21 ] 会社の都合なら仕方ないんだから そんなに必死に弁解しなくていいよ
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 20:55:10 ] >>853 だってさ、起動スクリプトとかOSに元々内蔵されてるスクリプトはshだよね? そういうスクリプトを修正する時も、cshで書き直してるの?
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 23:13:35 ] 棄てる気になれば簡単に捨てられる。棄てられないのは>>853 がヘタレなだけ。
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/25(水) 23:54:41 ] 恐ろしいことにうちはコーディングルールでcsh使うことになってるorz おまけに最近スクリプトでsql実行してるのを、「COBOLで実装しろ」って指摘された… SQLの使い方調査があって、スクリプトが調査範囲から漏れたからだと。
860 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 00:27:56 ] >>859 つまりOSインストール時からあるスクリプトも全部cshで書き直してるって事か?
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 00:40:11 ] 間違っているルールを変更できないなんて将来の無い会社だな。
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 01:32:53 ] >>859 なんでcsh使うことになったの?
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 04:05:17 ] 袋叩きw csh好きな勉強不足の若者の脳内会社なんだから許してやれよw
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 10:27:50 ] 某社と某社はcshだったな 皆さんがんばってね
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 14:51:51 ] 古いBroadVisionなんかだと、パッケージに cshで書かれたシェルスクリプトがいっぱい付いてくるから 仕方が無い
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 14:57:19 ] 会社で使うシェルスクリプトなんてコマンド順番に起動して 戻り値チェックするくらいのもんだからな。
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 17:05:58 ] それですむならそれでいい
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/26(木) 18:40:09 ] ジュセッペさんお元気?
869 名前:名無しさん@お腹いっぱい。 [2007/07/27(金) 00:19:38 ] Zshまんせー
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 01:30:36 ] >>866 俺はシェルスクリプトがないと会社で生きて行けんが。
871 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 02:53:31 ] これお勧め: つ ln /bin/sh /bin/csh もっといいのは#!起動された時にスクリプトを調べて 昔からのcshスクリプトなら「しょうがなく」csh、じゃなきゃ shにディスパッチするようにするとか。Linuxなら簡単だな。
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 04:33:23 ] まぁ、/bin/shのシェルスクリプトを書かせたらbashスクリプトを書きやがったとか *.shのファイルを開いたらbashスクリプトだったなんて事を無くす為なら cshしか使うなってのもありかも知れん。
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 07:10:12 ] ないないw
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 08:49:35 ] 20年モノのcshスクリプトが10万行単位である とかね
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:08:29 ] csherは平気でコピペで行数倍増するから10万行も妄想じゃないな。
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:22:10 ] そんなコードだったな
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/27(金) 23:53:59 ] 昔、(偽装)派遣で行ったところは csh が標準だったよ。 ひ孫請の俺がルールを変えるなんて無理だった。 当然ソース管理なんて概念もない。ファイルはタイムスタンプ (mtime)で管理してたよ。もー馬鹿かアフォかと。 とりあえず、自分のコードは SCCS で管理してた。 当然フリーソフトウェアなんて得たいの知れないものは 使用禁止。 まだあの会社あるかな…
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 00:03:54 ] 某独立系大手とか 某システム系大手とか
879 名前:名無しさん@お腹いっぱい。 [2007/07/28(土) 01:05:38 ] folder>------folder1---test | ---folder2---test folder1内にある実行ファイルtestを実行して、 その終了を待って、folder2内のtestを実行する というスクリプトを作ったんですが、folder2の実行が行われません。 どこがいけなかったんでしょうか?ご教授ください。 #!/bin/sh for i in 1 2 do cd folder$i nohup test wait $! cd .. done
880 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 01:12:09 ] まず、なんでいちいちwait入れるのかわからん。 ほっとけば、終わってからしか次が実行されんだろ? あと、本当にtestって名前なのか? /bin/testかビルトインのtestが動いてるだけでは?
881 名前:879 [2007/07/28(土) 01:24:56 ] >880 実際は、testっていうプログラムじゃないんですけど、 実行すると1日くらい走り続けるものです。 wait入れなくて実行したら、二重に実行されてしまったので。 二重に走らないようにしたいので、wait入れたのですが。
882 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 01:58:54 ] 実行したいモノを列挙すればいいんじゃね? それで満たせない要件は後だしでくるような気もするけど
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 02:20:46 ] cronかなんかで後から起動しちゃってるだけ? waitって子プロセスの終了待つだけなんだから バックグラウンドで動かさん限り無意味
884 名前:名無しさん@お腹いっぱい。 [2007/07/28(土) 03:15:41 ] awkについて質問です。 echo "<tr><td></td></tr>" | awk '{print $1, $2, $3, $4}' とすると、以下のように分解して代入されるようにしたいのですが、 awkのオプションをどのように指定すればよいでしょうか? (同じことができるなら、awk以外でも構いません) $1=<tr> $2=<td> $3=</td> $4=</tr> よろしくご教授お願いします。
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 07:42:41 ] sed 's/></> </g' < "<tr><td></td></tr>" | awk '{print $1, $2, $3, $4}'
886 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 08:52:38 ] < "<tr><td></td></tr>" この部分は何だ?
887 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 09:32:29 ] そのくらいわからないのか <tr><td>< というディレクトリの下に td>< という子ディレクトリがあって、その下に tr> というファイルがある。 その内容が <tr><td></td></tr> なのだ。
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 09:46:10 ] hagewarosu
889 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 16:48:50 ] >>884 なんで echo の中で FS 使っちゃいけないの?
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/28(土) 16:52:40 ] おばあちゃんの遺言で
891 名前:名無しさん@お腹いっぱい。 [2007/08/01(水) 00:31:16 ] for f in 'ls -1' do echo ${f} done とか for s in 'cat hoge.txt' do echo ${s} done なんかは、基本だな
892 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 01:12:54 ] >>891 何が言いたいのかさっぱりわからん。
893 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:11:41 ] if分で「$numbarが10から1000の間なら」という分岐は可能でしょうか? if [ $numbar = 10 -o $numbar = 11...] と地道に書いていくしかだめですか?
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:24:09 ] っman test
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 02:38:29 ] case $number in [1-9][0-9]|[1-9][0-9][0-9]|1000) .... ;; esac
896 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 08:14:47 ] >>895 0点
897 名前:numbar warota mailto:sage [2007/08/01(水) 21:58:49 ] >>893 [ "$number" -ge 10 -a "$number" -le 1000 ]
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 22:58:41 ] >>897 引っかけ問題に引っかかりましたねぇ。 >>893 の問題では、シェル変数名は number じゃなくて numbar 前任者から引き継いだスクリプトとかで変数名がミススペルで、 自分が正しいスペルで書き足すと動かなくて1日悩むこと、よくあるでしょ? そのための練習問題でした。
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/01(水) 23:03:02 ] >>898 死ぬほどどうでも良いですね。
900 名前:名無しさん@お腹いっぱい。 [2007/08/02(木) 20:28:27 ] >>898 おまい、100回くらい死ねよ
901 名前:ウサチャソ mailto:sage [2007/08/02(木) 21:08:52 ] バージョンの略を var と書いてしまう奴は結構いるよな。
902 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:22:54 ] 見たことないぞそんな奴。
903 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:25:20 ] スペルミスならもっと酷いのをいくらでも見たことがある
904 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/02(木) 21:41:27 ] ここで伝説のuwariteが登場。
905 名前:numbar warota mailto:KKC並みのヴァカだな sage [2007/08/02(木) 22:07:37 ] >>898 シェルスクリプトごときで1日も迷うねーよ。 それと、From:見る癖つけたほうが良い。
906 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 00:34:20 ] 「対話的な利用についての話はスレ違い」ってあるけど、 どこに逝っていいのか教えて頂けないでしょうか〜 expect があることは知ってるけど、 インストールが必要だからダメだって。 とりあえず、どういう選択肢があるか知りたいです。 あと perl の話になるんだけど、 Expect.pm を Makefile.pl とか CPAN での インストールをしないで(起動ディレクトリにモジュールを置くだけとかで) 起動する方法があれば、誘導をお願いしたいです。
907 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 00:37:46 ] >>906 ポエムは確か別の板があったはずだぞ。
908 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 01:12:06 ] >>907 ポエム? なんかアフォ扱いみたいな感じだけど、 変なこと書いてるんかなー? よく分からん。 とりあえず反応ありがと。
909 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 02:14:06 ] >906 は対話的の意味を勘違いしているに一票
910 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 02:17:29 ] >>906 インストールがダメって言うなら、現行環境に入ってる使えそうな道具立てはなんなのよ? それとは別に、「対話利用についての話題禁止」の意味をつかめてないに一票
911 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 08:19:15 ] >>909 ,910 ぐぐってみた。↓に書いてある「対話」? (例えばどんな話が禁止なのかは分からんが。。) 0からのbash 第1回:対話的シェルの使用法(1) 1.はじめに www.stackasterisk.jp/tech/systemManagement/bash01_01.jsp >>910 何を書けばいいんだろ。 telnet, ftp, rsh, perl Expect.pm は上に書いたように Windows での単体 exe みたいなイメージ (インストールが必要ない)ならおkらしい
912 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 08:56:32 ] で、結局何をしたいのよ?
913 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 10:30:08 ] >911 やりたいことをできるだけ具体的に
914 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 17:58:16 ] 今度、会社で、シェルを使わなければならない可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ました。 とりあえず初心者がシェルの方を始めるには、どのシェルの方から始めればいいでしょうか? 開発ツールの方とか、デバッガーの方はGUIの方であるんでしょうか? できればフリーの方を希望します。
915 名前:名無しさん@お腹いっぱい。 [2007/08/03(金) 18:11:06 ] >>914 > 可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ました。 それぞれ20%と仮定すると、4段階あるから、0.16%だ。 悲観的すぎー
916 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 18:17:25 ] どれがいいかは会社に聞け。 GUI はないと思っていい。
917 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 18:18:59 ] まず日本語を勉強したほうがいいと思われ
918 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 22:35:37 ] >>914 sh
919 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:10:59 ] 面白いと思ってやってるんだろうか? 低脳としか比喩できない釣りだ。
920 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:39:16 ] >>906 push(@INC, '/home/hiroyuki') とかやればモヂュールのサーチパスに追加されるんじゃないの?
921 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:40:37 ] >>919 お前の語彙が少ないのはどうでも良い。
922 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/03(金) 23:48:38 ] >>916 wishとかwkshとかPowerShellかもしれないじゃないか!
923 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 00:37:18 ] >>921 悔しいのか? でもつまらんものはつまらん。
924 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 00:41:13 ] おや、>>914 が餌をまいているのに、 「シェルってゆーな」の人が登場する可能性が発生する恐れがあるかも知れない状況になる兆しが出て来ませんねぇ
925 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 02:19:39 ] シェルってゆーな
926 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 07:31:21 ] >>915 X 恐れ ◯ 虞れ
927 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 09:22:51 ] >>926 それを言うなら、送り仮名が違う ×虞れ ○虞 ただし、「虞」は常用漢字じゃなく、現在では「恐れ」と表記するのが標準。 ぐぐってみても、「○○する恐れ」は多数ヒットするが、「○○する虞」はごくわずか。
928 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 09:34:48 ] >>924 お前、センスが皆無な上に致命的に頭悪いな。 > シェルスクリプトをシェルとゆうな。 なので、>>914 は(呆れるほどつまらない釣りだが)誤用無し。
929 名前:926 mailto:sage [2007/08/04(土) 14:34:15 ] >>927 うちのAnthyはそこまでバカじゃない。 送り仮名は「敢えて」俺が書き足した物。 >>ぐぐってみても、「○○する恐れ」は多数ヒットするが、 >>「○○する虞」はごくわずか。 世の中全体が、バカになって来たということですな。 (負の)probabilityをterribleと表記することの とんでもなさに違和感を感じないとはねぇ・・・
930 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 14:39:54 ] >>929 英語でも I'm afraid ... って言うじゃん。 単に可能性だけじゃなく、もしそうだったら困ると言うニュアンスがあるから 「恐れ」で的確。 いいことに対しては確率が低くても「恐れ」とは言わないし。 ちなみに、probabilityは 0 <= probability <= 1 でしか定義できない。 負のprobabilityなんて言ってる時点で、お前数学も苦手だっただろw
931 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 15:26:14 ] 悪い事象の発生するおそれって意味じゃないの。 930はprobability=(数学的)確率というバカの一つ憶えしかしてないから 早合点したんだろう。蓋然性って日本語知ってるか?
932 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 15:40:52 ] >>931 確率を蓋然性と言い替えたところで本質は変わらない。 (数学以外でも)「負の確率」なんて存在しない。 「負の確率」という言葉が出てしまった時点で、アンタの負け。
933 名前:931 mailto:sage [2007/08/04(土) 16:15:22 ] てんで指摘を理解してないな。俺は929じゃないし。 日本語も英語もダメな人みたいだね。
934 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:18:28 ] もし「悪い事象が起きる確率」のことを「負の確率」と言ったのなら、 それは数学だけじゃなく日本語としてもおかしい。 確率を理解していないことになる。 よって、>>931 のように弁護しても、やはり >>929 は間違い。
935 名前:931 mailto:sage [2007/08/04(土) 16:21:39 ] やっぱり理解してないなw
936 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:22:41 ] >>934 は負の遺産とか負の感情とかいう言葉も使わないんだろうな。
937 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:37:03 ] >>936 負の遺産は本当に「負」だろうが。 借金はマイナスの遺産。マイナスだからこそ「負」と言って正しい。 ところが、確率は絶対に「負」にはならない。 負の確率なんて存在しない。
938 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 16:45:18 ] 新聞でも、「…する恐れ」って書いてるよ。 >>936 は別の意味で「負」を理解してないなw
939 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:08:59 ] 937は借金のことを負の遺産というと思ってるのか。
940 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:17:16 ] >>939 借金が負の遺産として一番わかりやすい例ということだろ。 いずれにしても負の遺産はマイナスのものに違いない。 で、「負の遺産」を持ち出しても、「負の確率」を正当化することはできない、 という点は理解してますか?
941 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:20:47 ] じゃあ負の感情についても論破してみて。
942 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 17:28:35 ] >>941 好感度を数値化できるものとする。 平常心での好感度は0で、何かに好感を持った時プラスの好感度になる。 逆に嫌悪感を持てば、マイナスの好感度になる。 マイナスの好感度は「負の感情」と言ってもいい。 だから「負」で正しい。 (だから「負の確率」を肯定する材料にはならない)
943 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 18:37:06 ] >>942 別の高尚なスレッドでやってください。
944 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 19:36:54 ] そうだな。 どうせ表現するならエロでやってくれなきゃわからん。
945 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 21:33:50 ] 漢和辞典ひいてみると、虞の項目には「可能性」という文字はないが、恐れには「可能性」と書いてある。 どちらの項目にも「心配する」の意味はある。 広辞苑でも、恐れのほうが虞より先に載っている。 probabilityは見こみで考えたらいいじゃないかな。
946 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/04(土) 21:54:59 ] >>945 邪魔だと言っている。 意味が分からないならお得意の広辞苑を引いてくれ。
947 名前:名無しさん@お腹いっぱい。 [2007/08/05(日) 18:41:23 ] エアコンの室外機が壊れたんですが お金がないのです どうしたらいいでしょうか?
948 名前:926 mailto:sage [2007/08/05(日) 18:59:36 ] >>930-945 夜勤明けに遊びに行って、帰ってきたらば この有様w 板違いだけど感受性がおもしろすぎて、嬉しくなるねぇ。 ちなみに(負の)probabilityってのは、 negativeな蓋然性の意味で用いた訳だが・・ あ、あと「マイナスの確率」ってのも 概念的には存在しうるね。 (数学ではなく統計学になるけど 日本語として間違いでは無いよね) 虚数よりは遥に理解しやすい。
949 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/05(日) 19:53:10 ] >>948 土曜に夜勤か。ご苦労さん。 俺は優雅な休日だった。
950 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/05(日) 23:00:59 ] >>948 符号付(確率)測度なんて、数学では大して珍しくも無い概念だが…?
951 名前:名無しさん@お腹いっぱい。 [2007/08/06(月) 07:38:00 ] ハッシュ汽盆!!
952 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 16:33:27 ] 自己顕示欲の固まりが集まるスレはここでつか?
953 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 20:18:07 ] その確立200%
954 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 20:23:11 ] まあ、おれは例外だけどなw
955 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 21:15:58 ] >>953 ×確立 ○確率 国語苦手かよw
956 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/07(火) 00:56:36 ] 200%も突っ込みどころだろw
957 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 03:18:10 ] すみません。 シェルスクリプトというかコマンド一発で デバイス(eth0とかeth1とか)を出力することってできますか? もしよかったらコマンド一発でおしえてください。お願いします。
958 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 03:57:05 ] くだ質へいきなさい。
959 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 09:44:57 ] Linuxの話ならこっちな。 くだらねえ質問はここに書き込め! Part 150 pc11.2ch.net/test/read.cgi/linux/1185111932/
960 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 09:52:29 ] すみません。 シェルスクリプトというかコマンド一発で デバイス(fxp0とかde1とか)を出力することってできますか? もしよかったらコマンド一発でおしえてください。お願いします。
961 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:04:34 ] つまんね。
962 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:26:35 ] >>960 まずはいっぱつやらせろ。話はそれからだ。
963 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 10:50:43 ] アッーーーーーー!
964 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 16:53:39 ] ふむ analyzeってことか
965 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 17:40:37 ] くそつまんねえネタはやめろ
966 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 18:08:48 ] ふむ お通じ快適ってことか
967 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 21:00:51 ] くそスレ化するかどうかのふんばり時だな
968 名前:名無しさん@お腹いっぱい。 [2007/08/09(木) 21:06:16 ] CentOS Linux on Xen tcsh 6.13.00 たまになんだけど、 cd dir ls | echo 1 ls | echo 1 ; echo ってやったあとに ls って打つとtcshが固まるのは何故?? バージョンあげれですかそうですか。
969 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 21:10:05 ] >>968 それはXenとかCentOSにフィードバックしてあげれば? スレ違いとか板違いっぽいけど
970 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 21:10:47 ] >>968 くそスレ化のための燃料ですか?
971 名前:名無しさん@お腹いっぱい。 [2007/08/09(木) 21:12:46 ] >969 はえーなw そうするわ<フィードバック 再現できた。 ls | echo 1^C ls
972 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 10:31:14 ] aシェルの中でbコマンドをバックグラウンドで実行した場合、 bはまだ実行中だけど、aが終了したときにbにシグナルを送って強制的に終了することってできますか?
973 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 11:10:07 ] >>972 trap "kill $pid;kill -0 $pid && { sleep 1;kill -9 $pid; }; :" EXIT
974 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 11:33:26 ] >>973 trap: Illegal number: EXIT
975 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:18:19 ] >>974 trap "kill $pid;kill -0 $pid && { sleep 1;kill -9 $pid; }; :" 0
976 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:26:23 ] スクリプトで排他制御をする手っ取り早く確実な方法は何でしょうか? セマフォ使えればいいんだけど、そんなコマンドないもんね・・・
977 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:38:33 ] >>973 ありがとうございます。 ちなみにSIGKILLはどうしようもないですよね・・・
978 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:41:55 ] 子の側でときどき親が生きてるか確認する、とか。
979 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 13:47:20 ] >>976 FreeBSDには LOCKF(1) FreeBSD General Commands Manual LOCKF(1) NAME lockf -- execute a command while holding a file lock がある。
980 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/10(金) 23:17:10 ] >976 lockf は簡単だけど無ければ mkdir を使うんじゃね?
981 名前:名無しさん@お腹いっぱい。 [2007/08/11(土) 19:03:37 ] ksh93での質問です。 typeset -A で連想配列を使用したいんですが、ksh93でKey値の一覧を取得する方法ってあるんでしょうか? (Perlでいうとkeys関数みたいな感じで)
982 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 20:05:44 ] ksh93をつかっているUnixってあるんだな。
983 名前:名無しさん@お腹いっぱい。 [2007/08/11(土) 21:25:48 ] >>982 ソースが公開されてんのって、ksh93だから、LinuxやFreeBSDとかでもpdksh以外のkshを使おうとすると、ksh93になるよね。 逆にksh88的に使いたいならpdkshになるんだけど、pdkshはpdkshでksh88とは振る舞いが結構違うのでいたいところがあるね。 商用系のUnixだと、AIXは/bin/ksh93がksh93、/bin/kshはksh88。HP-UXやSolarisはどうなんだろ?一応、ksh93は存在するみたいだけど・・・
984 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 22:08:09 ] HP-UX11iv1とSolaris8/9/10はksh88しかない。
985 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/11(土) 23:31:11 ] posix-sh をつかうとか