1 名前:login:Penguin [2007/07/10(火) 23:17:13 ID:qGthZdME] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 【sed】シェルスクリプト総合@LINUX Part2【awk】 pc11.2ch.net/test/read.cgi/linux/1154578200/ pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
401 名前:login:Penguin mailto:sage [2008/01/06(日) 22:56:50 ID:HrtO6pOF] フィールド区切が複数のスペースやタブコードでも、1個のスペースに置換されてしまう気がする。 >>397 の「全て」がそこまで求めているかは分からないが。
402 名前:login:Penguin mailto:sage [2008/01/07(月) 00:59:34 ID:Lq+3ioDo] >>401 awk -Fなにか '{for (i=2;i<NF;i++){printf("%s%s", $i, FS)};print $NF}'
403 名前:397 mailto:sage [2008/01/07(月) 02:29:17 ID:SZZlXYY6] ありがとうございます。 最初 >>387 さんと同じことを思ったのですが他に オプションか何かで用意されていると思ってました。 402さんのを使わせていただきます
404 名前:397 mailto:sage [2008/01/07(月) 02:29:58 ID:SZZlXYY6] s/387/398
405 名前:login:Penguin mailto:sage [2008/01/07(月) 17:21:59 ID:CzyB4/IB] >>402 これだと複数の空白が一つになって表示される
406 名前:login:Penguin mailto:sage [2008/01/07(月) 18:30:26 ID:DBTZ8VT2] awk '{gsub($1, "");print substr($0,2)}'
407 名前:login:Penguin mailto:sage [2008/01/07(月) 18:59:30 ID:AGg2gknU] hint: aho,choaho,kusoaho,doaho ∴ awk '{print substr($0,length($1)+2)}'
408 名前:login:Penguin mailto:sage [2008/01/07(月) 20:07:07 ID:81ckgAQ5] 個人的には>>398 をアレンジして、 gawk 'gsub(/^[[:blank:]]*[^[:blank:]]+/,"")' かな。
409 名前:login:Penguin mailto:sage [2008/01/07(月) 20:13:04 ID:DBTZ8VT2] なんだ>>398 で既出だったのね。見落としスマソ。
410 名前:login:Penguin mailto:sage [2008/01/07(月) 23:07:24 ID:6d+dex8H] [file1] bar=234 [file2] foo=123 Bar=987 と2つのkey=valueな内容が入ってるファイルがある。ここで、file1には ないがfile2にはあるkeyのみ(case-insensitiveな比較で、また、valueは 違っていてよい)を拾いkey=valueを出力したいのだけど、一行で書けないかな? どういう出力になってほしいかというと $ myuniq --split-char='=' --field-index=1 --print-unique file1 file2 foo=123 というような実行イメージ。awkで awk -F= '{ line[toupper($1)]=$0; seen[toupper($1)]++; } END { for (key in line) if (seen[key] == 1) print line[key]; }' file1 file2 みたいなのはでっち上げたんだけど、正直汚い。
411 名前:login:Penguin mailto:sage [2008/01/07(月) 23:30:18 ID:6RYIn4eu] 回答じゃなくてすまんのだが、最後にあるワンライナーだと、 2ファイル通して1回しか現れなかったものを表示するから、 「file1にはないがfile2にある」ものだけでなく 「file2にはないがfile1にある」も出てこないか?
412 名前:login:Penguin mailto:sage [2008/01/07(月) 23:35:18 ID:6RYIn4eu] 負けず劣らずかっこ悪いシロモノ for w in `cut -d= -f1 file1 file2 |tr A-Z a-z|sort|uniq -c|sed -n 's/ 1 *//p'`; do grep "^$w=" file2; done
413 名前:login:Penguin mailto:sage [2008/01/07(月) 23:52:40 ID:DBTZ8VT2] grep -v -i "`cut -d= -f1 file1`" file2 重複は無考慮
414 名前:login:Penguin mailto:sage [2008/01/07(月) 23:54:29 ID:6d+dex8H] >>411 あ、すみません。バグです。が、元の仕様が厳しすぎで、 どちらかにしかないエントリを出す でも大丈夫でした。 file1かfile2のどちらかにのみあるkeyに対応するkey=valueを出力する に仕様を訂正させてください。 何をしたいのかというと、Windowsの環境変数を手元のUNIXな環境に 取り込みたいのですが、その際に自分で定義している分については 上書きされないようにしたいのです。 hostA$ env > hostA.env hostB$ env > hostB.env hostB$ myuniq ... hostA.env hostB.env > diff.env hostB$ . ./diff.env みたいなことをしたいと。で、片方の環境が Windows なもので、 case insensitiveな比較とかも必要になってます。 行全体ではなく特定のフィールドのみ見て uniq/diff 処理して出力って 簡単そうで微妙に面倒です。
415 名前:login:Penguin mailto:sage [2008/01/07(月) 23:59:58 ID:6d+dex8H] >>413 おおー。grepのexprに改行入れるとそんな動作になるとは! エレガントです。勉強になりました mOm
416 名前:login:Penguin [2008/01/08(火) 18:35:59 ID:0P1F18Bp] 1行で2つのコマンドを実行するときに 2つ目に実行したコマンドに、1つ目に実行したコマンドの引数を そのまま渡したい場合の記述方法がわからず、困っています。 $ vi hogehoge; echo ?? *??が不明箇所* 上記の例の場合は2つ目に実行しているecho文の出力結果でhogehogeを表示させたいのですが。。 対処方法はないでしょうか? よろしくお願いいたします。
417 名前:login:Penguin mailto:sage [2008/01/08(火) 18:38:30 ID:k6k1za9N] >>416 i="hogehoge"; vi $i; echo $i じゃだめなん?
418 名前:416 mailto:sage [2008/01/08(火) 19:34:39 ID:0P1F18Bp] >>417 ありがとうございます。 その方法があったことに気づきませんでした。 おかげで解決しました、感謝です><
419 名前:login:Penguin mailto:sage [2008/01/08(火) 23:12:30 ID:OqUgF6yk] vi hogehoge; echo !$
420 名前:login:Penguin mailto:sage [2008/01/08(火) 23:26:00 ID:5sg6/WvN] >>419 それタイプしたタイミングではまだ!$は前行のコマンドの。
421 名前:login:Penguin mailto:sage [2008/01/08(火) 23:33:15 ID:A2IkwjEN] 引数が一つだけなら vi hogehoge; echo $_ でもいけるな。
422 名前:login:Penguin [2008/01/10(木) 13:02:51 ID:9dVYtTPe] cshからJavaを呼び出すシェルを作成しています。 その呼び出したJava内部で例外が発生した場合、 以降のシェルの処理を続行させたくありません。 どの様にすればよいのですか? Javaのcatch節でSystem.exit(1);とかで処理を終了させて、 cshでそれを検知する方法があるのかなぁ? と漠然には思うのですが・・・
423 名前:login:Penguin mailto:sage [2008/01/10(木) 19:51:46 ID:qThypT9T] >>422 System.exitが何をするのか分かっているなら、 Javaコマンドの終了値を普通にifなりswitchなりで受けて、csh側からもexitすれば良いだけでは? 単純に例外=即終了と決め打ちなら良いけど、例外によって複数の処理をさせたくなると、 System.exitの終了値を多数用意して管理しなければならなくなって面倒だけどね ここからはポリシーの問題になるけど、System.exit等を使ってコマンドの終了値を利用するよりは、 どんな例外で終了したのかを前もって文字列等でstderrにでも吐き出したり、 終了した例外を表すような長さゼロのテンポラリファイルでも作ってから、Javaコマンドの方を終了させておいて、 csh側からは、むしろその文字列やファイル名を評価させてexitさせるようにした方が、後からデバッグする時とかは楽だよ 更に言えばシェルプログラミングにcshを使うのは止めるべき www.klab.ee.utsunomiya-u.ac.jp/~hiroki/csh-whynot.euc www.klab.ee.utsunomiya-u.ac.jp/~hiroki/sh-perl-tips/
424 名前:login:Penguin mailto:sage [2008/01/10(木) 21:50:31 ID:CJRDs9Ag] Javaのポリシーは知らないが、エラーメッセージと終了コードは二者択一せにゃならんものではない気がする。
425 名前:login:Penguin [2008/01/11(金) 14:14:06 ID:mrGJLB/g] >>423 、424 ありがとうございます。 シェルスクリプト自体、経験が浅い上に今回の要望がcshというのが 決まっているもので・・・ 困っています。。。 2chでの質問自体も初めてなもので・・・ 準正常として扱うような例外は全てJava側で処理をしてプログラムは 正常終了として扱っています。 処理続行不可能と判断した、ランタイム系やIO例外などが発生した場合は 後続のシェルを流したくない。 という状況です。 if $JAVA_CMD then 続き else exit 1 fi 以下処理続く ・・・ ってな感じにしたのですが、どうも上手くJavaでexitした値が取れないです。 文法が間違っているのですかね? もう少し調査してみますが、上記の書き方で間違いがあればご指摘頂きたいです。 後は教えていただいた、テンポラリファイルでの判断も考えてみます。
426 名前:login:Penguin mailto:sage [2008/01/11(金) 15:11:54 ID:GLHvzQDj] findコマンドの結果をツリービュー(treeコマンドの結果的なツリー表示)で出すコマンドまたは方法ってありますか?
427 名前:login:Penguin mailto:sage [2008/01/11(金) 16:08:44 ID:6CIbL1kG] >>425 cshなら $JAVA_CMD if ($? != 0) then echo "failed" exit $? endif echo "OK" でどう?
428 名前:login:Penguin [2008/01/11(金) 16:55:30 ID:mrGJLB/g] >>427 ありがとうございます。 教えていただいた方法で、想定通りの動作になりました。
429 名前:login:Penguin mailto:sage [2008/01/11(金) 21:11:49 ID:OPXAXUzh] >>426 普通にtreeコマンド使うんじゃだめなん?? findで絞った結果を出したいのかなぁ。
430 名前:login:Penguin mailto:sage [2008/01/11(金) 22:17:07 ID:4hqMEkJ5] grep -f find結果 tree結果 とか。 # 本気にしないように。
431 名前:login:Penguin mailto:sage [2008/01/11(金) 23:02:21 ID:aloediIm] 基本的にはtree | grep なんちゃら でいいんじゃね?
432 名前:login:Penguin mailto:sage [2008/01/14(月) 11:50:49 ID:3iR1bkH0] 画像の特定の領域だけを一括でぼかしたいのですが いい方法はありませんか?
433 名前:login:Penguin mailto:sage [2008/01/14(月) 12:00:15 ID:ZjONjaHo] つ netpbm
434 名前:login:Penguin mailto:sage [2008/01/14(月) 12:12:55 ID:6n5zEajJ] つimagemagick
435 名前:login:Penguin mailto:sage [2008/01/14(月) 14:01:26 ID:Or9vH7Fn] メールアドレスの@以降の最後の国を表すCountry Codeの部分だけを抜き出すには どのような正規表現を使えば良いでしょうか? @hotmail.co.jp の.jp の部分を見る感じです。 .jp以外は無視する、という感じです。これで日本のメールしか相手にしない事になりますよね。
436 名前:login:Penguin mailto:sage [2008/01/14(月) 14:04:07 ID:ZjONjaHo] spam避け? 日本からも.comや.netや.orgや.infoや.bizや.acや.tvや.toや(以下略)の アドレスでメールが送られることはあるぞ。
437 名前:login:Penguin mailto:sage [2008/01/14(月) 14:04:25 ID:Or9vH7Fn] $.jp ↑これでいいんでしょうか?正規表現全く知らない状態でネットでちょっと検索してみたのですが・・・
438 名前:login:Penguin mailto:sage [2008/01/14(月) 14:05:05 ID:Or9vH7Fn] あっちゃー、そうなんですか・・・ 海外のメールを相手にしない方法って無いんですかね・・・ 英語でViagraとかうるさいんですよ。
439 名前:login:Penguin mailto:sage [2008/01/14(月) 14:17:08 ID:6n5zEajJ] /[あ-ん]/? ひらがながないメールは無視してもよかろう。
440 名前:login:Penguin mailto:sage [2008/01/14(月) 14:37:34 ID:FCIPzPAY] ヘッダの Content-Type を見て弾くとかどうよ? ^Content-Type: .*iso-2022-jp
441 名前:login:Penguin mailto:sage [2008/01/14(月) 14:42:36 ID:6n5zEajJ] 最近はutf-8なのも多いよ。
442 名前:login:Penguin mailto:sage [2008/01/14(月) 14:54:07 ID:JtG94m55] utf-8 は違法で、危険運転致死罪が適用になるんじゃ?
443 名前:login:Penguin mailto:sage [2008/01/14(月) 22:54:28 ID:RfE0b+o0] >>437 \.jp$ では?
444 名前:login:Penguin mailto:sage [2008/01/16(水) 13:17:12 ID:ZRO/FTzi] テキストファイルを、最後の3行を除いて出力したいのですが 何か良い書き方はないでしょうか。 sed '$d' xxxx | sed '$d' | sed '$d' と書くくらいしか思い付かなくて。
445 名前:login:Penguin mailto:sage [2008/01/16(水) 14:26:14 ID:1obpvu1A] >>444 head -n -3 foobar.txt
446 名前:login:Penguin mailto:sage [2008/01/16(水) 17:01:38 ID:IKqjky5V] awk '{a[NR]=$0}END{for(j=1;j<=NR-3;j++) print a[j]}' a.txt
447 名前:login:Penguin mailto:sage [2008/01/16(水) 18:25:12 ID:ZRO/FTzi] >>445 head のオプションは見落としてました…ありがとうございます
448 名前:login:Penguin [2008/01/16(水) 21:56:01 ID:KAlEWwYc] ランダムな数字が欲しいとき,どうするのが簡単? 1. $$ 2. $RANDOM 3. /dev/urandom 4. 時計 あたりを思いついたんだけど
449 名前:login:Penguin mailto:sage [2008/01/16(水) 22:14:57 ID:yh54UVVr] ワシは、ランダムな数字の用途により生成手段を変えてるような気がする。
450 名前:login:Penguin mailto:sage [2008/01/16(水) 22:16:21 ID:KAlEWwYc] 1. 偏りそう 2. bash依存 3.4. 面倒 という問題点があるから,誰かいい方法教えてくれないか?
451 名前:login:Penguin mailto:sage [2008/01/16(水) 22:19:14 ID:KAlEWwYc] >449 たしかに用途によって求められる強さが違う気がする. とりあえずこうしとけ的な汎用的な方法はないんかな. いちばん手軽な方法が知りたい
452 名前:login:Penguin mailto:sage [2008/01/16(水) 22:47:32 ID:HQvmxN1E] >>448 $$はスクリプト内で複数個必要だと使えない罠 dateのmanを見ていたら、 %N nanoseconds (000000000..999999999) というのがあった。こんな感じ % echo -n `date +%N` 431218994 % echo -n `date +%N` 857494685 % echo -n `date +%N` 269031777 % echo -n `date +%N` 803351248 % echo -n `date +%N` 195538275 % echo -n `date +%N` 538357509 % echo -n `date +%N` 058776188 %
453 名前:login:Penguin mailto:sage [2008/01/16(水) 23:09:59 ID:PJonPFmQ] jotはたぶんBSD系限定だよな。 jot -r 10 1 6 /dev/urandomは10進数テキストで得るのがめんどーだろうか。 dd if=/dev/urandom bs=2 count=1 2>/dev/null | od -vd 左カラムがじゃまだな。 sed 1q |cut -f2 -d' ' とかで削るか。
454 名前:login:Penguin mailto:sage [2008/01/16(水) 23:21:36 ID:KAlEWwYc] >452,453 なるほど.date +%Nはいい感じ. jot便利そうだよ,jot.犬にもこんなの欲しいな. ありがとう
455 名前:login:Penguin mailto:sage [2008/01/16(水) 23:24:18 ID:HQvmxN1E] od -t u1 /dev/urandom | awk '{print $2;exit}'
456 名前:login:Penguin mailto:sage [2008/01/16(水) 23:33:28 ID:PJonPFmQ] r=`fortune | md5sum - | sed 's/^¥(........¥).*/¥1/'` r=`printf %d 0x$r` ごめんなさいごめんなさい。
457 名前:login:Penguin mailto:sage [2008/01/16(水) 23:51:47 ID:puzD1M+G] 普通に perl -e 'print int(rand(1000))' じゃダメなの?(perl5前提だけど)
458 名前:login:Penguin mailto:sage [2008/01/16(水) 23:55:16 ID:KAlEWwYc] >457 これだけのためにperlやawkを出してきたくないという貧乏心があってwww
459 名前:login:Penguin mailto:sage [2008/01/17(木) 01:30:17 ID:xe77Y4ah] 時は金なり、というじゃない
460 名前:login:Penguin mailto:sage [2008/01/17(木) 01:45:37 ID:hGbWYs9C] つーか、乱数ってこれだけのため、っていうほど簡単なものじゃないと思う。 そういうものが必要な処理はシェルじゃなく、ちゃんとそれなりの言語でプログラムしたほうがいいかも。
461 名前:login:Penguin mailto:sage [2008/01/17(木) 09:08:26 ID:MJ2pzO6M] 確かに簡単な乱数ならともかく、ちゃんとした乱数が欲しい処理は言語引っ張り出したほうが良いかもね
462 名前:login:Penguin mailto:sage [2008/01/17(木) 09:18:44 ID:wcByJn9i] % i=0; while [ $i -lt 1000 ] ; do echo "$i "`date +%N`; i=`expr $i + 1`; done \ | awk '{hist[int($2%10)]++} END{for (i in hist) {printf("%2d %5.2f%\n",i, hist[i]/NR*100) }; exit}' | sort -k1n 0 9.70% 1 10.70% 2 8.60% 3 11.00% 4 10.40% 5 8.90% 6 11.40% 7 9.70% 8 9.80% 9 9.80% (´・ω・`) % i=0; while [ $i -lt 1000 ] ; do echo "$i "`date +%N`; i=`expr $i + 1`; done \ | awk '{hist[int($2%10)]++} END{for (i in hist) {printf("%2d %5.2f%\n",i, hist[i]/NR*100) }; exit}' | sort -k1n 0 9.20% 1 12.30% 2 8.60% 3 11.00% 4 11.20% 5 9.30% 6 11.40% 7 7.80% 8 11.40% 9 7.80% (゚д゚)
463 名前:login:Penguin mailto:sage [2008/01/17(木) 09:28:02 ID:wcByJn9i] % od -t u1 /dev/urandom \ | awk '{hist[int($2/256.0*10)]++} NR==1000{for (i in hist) {printf("%2d %5.2f%\n",i, hist[i]/NR*100) }; exit}' | sort -k1n 0 9.80% 1 9.50% 2 10.10% 3 9.80% 4 9.80% 5 9.40% 6 10.20% 7 10.20% 8 10.30% 9 10.90% (´・ω・`) % perl -e '$MAX=10;$LOOP=1000000; for (1...$LOOP) {$hist[int(rand()*$MAX)]++}; for (0..$MAX-1) {printf("%2d %4.2f%\n", $_, $hist[$_]/$LOOP*100) }' 0 9.98% 1 9.99% 2 9.99% 3 10.02% 4 10.03% 5 10.02% 6 9.92% 7 10.00% 8 10.00% 9 10.04% (゚∀゚) date +%Nは、ばらつきはともかく遅いな...
464 名前:login:Penguin mailto:sage [2008/01/17(木) 10:59:36 ID:bFGNQCBf] 遅いのは date +%N じゃなくて while のループだと思うよ。
465 名前:login:Penguin mailto:sage [2008/01/17(木) 11:37:17 ID:LfhUWWyD] >>450 > 2. bash依存 ksh88由来らしい tp://www.cs.princeton.edu/~jlk/kornshell/doc/man88.html ksh互換を期待できるなら使ってもいいんじゃね
466 名前:login:Penguin mailto:sage [2008/01/18(金) 01:58:10 ID:S6Zw/ddB] /usr/games/random -e 100; echo $? は?
467 名前:login:Penguin mailto:sage [2008/01/18(金) 07:42:17 ID:YTGcRcKS] >>466 /usr/gamesってそれ何年前のWSのディレクトリ構成だよ...
468 名前:login:Penguin mailto:sage [2008/01/18(金) 17:40:50 ID:wVas3OI3] findの検索結果でディレクトリの場合は最後に「/」をつけさせたいのですが、いい方法はあるでしょうか?
469 名前:login:Penguin mailto:sage [2008/01/18(金) 17:50:43 ID:YTGcRcKS] find . -exec ls -Fd {} \;
470 名前:login:Penguin mailto:sage [2008/01/18(金) 22:33:39 ID:EJvy1m4k] >>468 find (検索ディレクトリ) -type d -printf "%p/\n" -or -print
471 名前:login:Penguin mailto:sage [2008/01/18(金) 22:55:09 ID:S6Zw/ddB] >>467 最新のLinuxの(いやほんと。これだけは伝統的理由で残ってるのかな)
472 名前:login:Penguin mailto:sage [2008/01/18(金) 23:22:22 ID:6BHP4h96] >471 鳥は?
473 名前:login:Penguin mailto:sage [2008/01/19(土) 01:14:55 ID:ZLNpfSkQ] >>472 Debian (sid)。まあ bsdgames とかまんまレガシーなパッケージだけだけどね。
474 名前:login:Penguin mailto:sage [2008/01/19(土) 05:58:20 ID:JWtUz7T2] Debian etch にも/usr/games はあるな。 中みたらbannerとfortuneが入ってた。
475 名前:login:Penguin mailto:sage [2008/01/19(土) 08:07:34 ID:njld/y5g] シェルスクリプトの本で実用例の多い本ってありませんか?
476 名前:login:Penguin [2008/01/19(土) 17:07:33 ID:NuJUp+KH] Fedora4を使っています /start.txt内の記載が 12 254 3678 4 59 621 78 896 、、、、、、 と法則性の無い桁数の数字が2000行近くあるものを /end.txtに 12,254,3678,4 59,621,78,896 、、、、 A,B,C,Dと4項目で1行に変換したいと思っています start.txtから4行抜き出して end.txtに1行にする考え方でいい方法を教えていただけないでしょうか よろしくお願いいたします
477 名前:login:Penguin mailto:sage [2008/01/19(土) 18:46:40 ID:ZLMZWyE0] cat /tmp/test.txt | awk 'NR%4{printf("%s,",$0)} !(NR%4) {print $0} ' 余りが出たら最後カンマ付きで出力されちゃうけど
478 名前:login:Penguin [2008/01/19(土) 18:55:41 ID:NuJUp+KH] >>477 完璧な物ありがとうございます 今迄sedばかり使っていたのですがawkすごいですね awkの勉強させていただきます
479 名前:login:Penguin mailto:sage [2008/01/19(土) 18:59:10 ID:IrN8xoLt] >>477 あらupしようとしたら同じだったわ。 awk '{printf"%s%s",$0,(NR%4?",":"\n")}' < start.txt
480 名前:login:Penguin mailto:sage [2008/01/19(土) 19:02:55 ID:NuJUp+KH] >>479 ありがとうございました とても参考になります
481 名前:login:Penguin mailto:sage [2008/01/19(土) 19:43:02 ID:rxOILVvf] vi start.txt q94J↓q10000@9 :%s/ /,/g :w end.txt
482 名前:login:Penguin mailto:sage [2008/01/19(土) 19:59:13 ID:58USgOmq] >>473-474 Debianではゲームの実行バイナリは/usr/gamesに置かれるぜ。 最近はポリシーチェッカも警告を出すようになったから、lennyまでには移動完了するんじゃね。 lintian.debian.org/reports/Tpackage-section-games-but-contains-no-game.html lintian.debian.org/reports/Tpackage-section-games-but-has-usr-bin.html
483 名前:login:Penguin mailto:sage [2008/01/19(土) 21:00:37 ID:ZLNpfSkQ] >>482 なんでだろうね? FHS誤解してたかと読み直したらそんなことないし。理由がわからん。
484 名前:login:Penguin mailto:sage [2008/01/19(土) 21:04:24 ID:ZLNpfSkQ] ごめん上は嘘。Debian Policy には As described in the FHS, binaries of games should be installed in the directory /usr/games. This also applies to games that use the X Window System. Manual pages for games (X and non-X games) should be installed in /usr/share/man/man6. とか書いてあった。FHSをgrepしたら、正式なセクションはないが、optionalとしてgames作っていいと 書いてあった。
485 名前:login:Penguin mailto:sage [2008/01/19(土) 21:14:55 ID:Xt/fDApd] FHSとかグローバリゼーションとか国際化とか そういうのが全て悪の元凶。
486 名前:login:Penguin mailto:sage [2008/01/19(土) 22:06:40 ID:ZLNpfSkQ] FHSは/usr/localと/etcを綺麗にしてくれる。 それだけでも推進されてしかるべき。
487 名前:login:Penguin mailto:sage [2008/01/20(日) 02:02:52 ID:dexE1e0m] /usr/gamesはオプションなのに、/usr/local/gamesは必須扱いなところを見れば分かるとおり ディトリビュータはゲームなんか提供すんな、ということなのだよ。 つまりゲームを提供しているDebianは人々を堕落させる悪のディストリビュータなのだ!
488 名前:login:Penguin mailto:sage [2008/01/20(日) 02:23:04 ID:kH+ebKTA] >>487 なにその陰謀史観(w 単に /usr/ 直下はディストリの管轄だし自分で決めろ、 一方で /usr/local/* は空フォルダ切っておく以上は認められないから 代わりとして、せめて誘導できるように切っておけ、ということかと。 FHSで自分的に従来慣習と比較して見慣れないのは/srvだな。 どこのUNIXでの慣習だったんだろう?
489 名前:login:Penguin mailto:sage [2008/01/20(日) 02:55:38 ID:M1QHfiRt] つっこみどころは /usr/games/bin/fortune じゃなくて /usr/games/fortune ってとこじゃなかったのかー
490 名前:login:Penguin mailto:sage [2008/01/20(日) 04:01:16 ID:FZKKsnAp] >>476 sed ':b;1~4,+2{N;s/\n/,/;bb}' sedも心の片隅にでも置いておいてやってくだされ。
491 名前:login:Penguin mailto:sage [2008/01/20(日) 04:20:45 ID:IwRos1VB] >>489 管理者のPATHからゲーム関係を除外するのが目的だろうから /usr/games/binとサブディレクトリを掘る必要はないんじゃね。
492 名前:login:Penguin mailto:sage [2008/01/21(月) 02:31:10 ID:HJiECvMS] >>490 そんな記法初めて見た… どうなってんの???
493 名前:login:Penguin mailto:sage [2008/01/21(月) 02:55:10 ID:QTxOOwHl] アドレス指定がGNU拡張?
494 名前:login:Penguin mailto:sage [2008/01/21(月) 11:41:48 ID:JvqHER/W] >>476 paste -d, - - - - paste も心の片(ry
495 名前:login:Penguin mailto:sage [2008/01/21(月) 14:42:32 ID:svPtjQeo] 次のようなファイルがあるとします。 $ cat name.txt name1 name2 name3 name4 name5 $ cat weight.txt weight1 weight2 weight3 weight4 weight5 このとき、なんとかして $ ??????????? name1 weight1 name2 weight2 name3 weight3 name4 weight4 name5 weight5 と表示したいのですができません。 最初は $ cat name.txt weight.txt > data.txt $ awk '{ if(NR<=5) a[NR]=$0; else b[NR-5]=$0} end{for(i=1;i<=100;i++) printf i,a[i],b[i];}' data.txt としましたが、空白が表示されるだけでした。
496 名前:login:Penguin mailto:sage [2008/01/21(月) 14:51:31 ID:N+zVQlnl] >>495 paste
497 名前:login:Penguin mailto:sage [2008/01/21(月) 14:53:35 ID:svPtjQeo] >>496 ありがとうございました。 ぐぐるまでもヘルプ読むまでもなく、 適当にいじっただけでそうなりました。
498 名前:login:Penguin mailto:sage [2008/01/22(火) 11:11:17 ID:DOTIpHDE] gawk 'FILENAME != old {i=0;old=FILENAME} {data[i++] = data[i]" "$0;} END{for(j=0; j<i; j++)print data[j]}' name.txt weight.txt gawk 'FILENAME != old {i=0;old=FILENAME} {data[i++] = data[i]" "$0;} END{for(j=0; j<i; j++)print data[j]}' name.txt weight.txt height.txt ファイル数に制限はない。あと出力される行数は、最後のファイルの行数によって決まってしまうがな。
499 名前:login:Penguin mailto:sage [2008/01/25(金) 13:18:49 ID:u9KTnE0i] ランダムに壁紙を表示するスクリプト作ってみました 一応予想通りに動いてるようですが問題点や改善点があったら叩いてくだしあ #!/bin/sh EXT='.jpeg$|.jpg$|.png$' LIST=`ls $1 | grep -Ei $EXT` if [ "$LIST" = '' ] ; then\ echo "No files found in $1." exit fi NUM=`echo $LIST | wc -w` N=`expr $RANDOM % $NUM + 1` TARGET=`echo $LIST | cut -d ' ' -f $N` #echo "$1/$TARGET" bsetbg $1/$TARGET
500 名前:login:Penguin mailto:sage [2008/01/25(金) 15:41:59 ID:5ugSsaO2] >>499 そのままだと画像ファイル名やパスに空白があると動かないけど、いいのか?
501 名前:login:Penguin mailto:sage [2008/01/25(金) 17:04:10 ID:HizVC3Pf] #!/usr/bin/python import sys, os, random def is_image(filename): EXT = ('jpeg', 'jpg', 'png') return any(filename.endswith(ext) for ext in EXT) if sys.argv[1:]: dir = sys.argv[1] else: dir = os.path.curdir files = filter(is_image, os.listdir(dir)) if not files: print "No images found in %s" % dir sys.exit(1) target = random.choice(files) os.system("echo bsetbg '%s'" % os.path.join(dir, target)) # 高級言語って素晴らしいね