1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/ Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/ Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
643 名前:login:Penguin mailto:sage [2008/12/17(水) 17:57:34 ID:Hofst7JZ] yes(1) yes(1) 名前 yes - kill されるまで文字列を繰り返して出力する 書式 yes [string...] yes [--help] [--version] 説明 yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加 し、 kill されるまで繰り返して表示する。引数が一つも与えられな い と 、 yes は ‘y’ に改行を付加したものを kill されるまで表示しつづける。
644 名前:login:Penguin mailto:sage [2008/12/17(水) 17:58:07 ID:Hofst7JZ] オプション GNU yes が引数一つだけで起動された場合には、以下のオプションが認識され る: --help 標準出力に使用方法のメッセージを出力して正常終了する。 オプション GNU yes が引数一つだけで起動された場合には、以下のオプションが認識され る: --help 標準出力に使用方法のメッセージを出力して正常終了する。 --version 標準出力にバージョン情報を出力して正常終了する。 注意 プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ペ ージの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っ ています。 GNU Shell Utilities 2.1 18 June 2002 yes(1)
645 名前:login:Penguin mailto:sage [2008/12/17(水) 17:59:46 ID:Hofst7JZ] >>637 そんな君へこれを送ろう. sudo su -c ”yes ’\(^o^)/’ > /dev/sda”
646 名前:login:Penguin mailto:sage [2008/12/17(水) 18:04:23 ID:OCczPzah] >>643 なぜコピペ?
647 名前:login:Penguin mailto:sage [2008/12/17(水) 18:05:37 ID:cv0gYoNp] コピペじゃないやい 一生懸命整形したよ!
648 名前:login:Penguin mailto:sage [2008/12/17(水) 20:58:34 ID:QJhvpz4O] yes | cat -n
649 名前:login:Penguin mailto:sage [2008/12/17(水) 22:46:05 ID:nY30U6Zi] >>645 すみません。 リセットボタンを教えても起動しなくなりました。 なんつて
650 名前:login:Penguin mailto:sage [2008/12/20(土) 01:33:20 ID:6Sgnm3ob] >>649 > なんつて うん、こーゆーの、たのしーね。
651 名前: ◆Da4YWdyXjw [2008/12/21(日) 15:07:37 ID:hJtYLWzf] line 27: =/home/user1: No such file or directory こんなエラーが出るので、27行目を見てみると homedir="/home/${username}" たったこれだけ。cdとかmkdirとかしていないのに、ただ変数に代入しただけなのに このエラーはなんなの??
652 名前:login:Penguin mailto:sage [2008/12/21(日) 15:12:54 ID:YLiOEgKM] >>651 =の前に空白が入ってんじゃないの? a=bだったら、「bをaに代入する」になるけど、 a =bだったら、「aコマンドの引数に=bを渡す」になるぞ。
653 名前:login:Penguin [2008/12/21(日) 15:16:00 ID:hJtYLWzf] >>652 すまん、代入するとき変数名に$が入ってた。 他の言語からかじったもんでちょっと戸惑うわ。。
654 名前:login:Penguin mailto:sage [2008/12/21(日) 15:39:47 ID:YLiOEgKM] >>653 sh -x で実効すると、各行がどのように展開されるのかがわかる。 シェルスクリプトデバッグの基本。
655 名前:login:Penguin [2008/12/21(日) 15:44:29 ID:hJtYLWzf] >>654 まじサンクス
656 名前:login:Penguin mailto:sage [2008/12/25(木) 11:10:51 ID:fon1CsAn] >>654 マジサンクス
657 名前:login:Penguin mailto:sage [2008/12/25(木) 12:15:54 ID:moDMTMWz] マンスジクサ
658 名前:login:Penguin mailto:sage [2008/12/25(木) 14:44:55 ID:Dd8u5It4] てか知らんかったのけ?
659 名前:login:Penguin [2008/12/25(木) 14:58:41 ID:hn65XKo2] このスレって時間の流れが遅いのか? それとも過疎っているだけなのか。
660 名前:login:Penguin mailto:sage [2008/12/25(木) 19:17:43 ID:lvg0uyHv] >>654 知らなかった、これは便利そうですね
661 名前:login:Penguin mailto:sage [2008/12/25(木) 22:56:07 ID:lGWnJcnf] 他にかっこいいオプションないですか? -vは結構イカしてると思ってますよ
662 名前:login:Penguin mailto:sage [2008/12/26(金) 00:41:27 ID:W2RM7LsO] sh -nもイカしてる。 うっかり実行すると抜けられなくなる。
663 名前:login:Penguin mailto:sage [2008/12/26(金) 00:46:12 ID:K8BYEhlr] -nってmanに載ってないんだけど何が起こってるのこれ?
664 名前:login:Penguin [2008/12/26(金) 00:53:59 ID:3z8SP2D0] ん?みんなUnixいじった経験とかあるんか? 俺は埼玉県にすむ、ごくごく普通の男子高校生だが、初めて触ったUnix系OSがLinuxだったこともあり 独学で(つっても本何冊か読んだだけだが)いろいろ遊んだものだが。。 どうしたらそんなに詳しくなれるんだよ。仕事とかで使ってるんかおい!
665 名前:login:Penguin mailto:sage [2008/12/26(金) 01:11:34 ID:ivB4KFEt] >>661 -e エラーが発生したらそこで止まる。
666 名前:login:Penguin mailto:sage [2008/12/26(金) 02:52:13 ID:WW2wJ8bx] >>665 きゃー すてき かなw で -n って何よ。 なに? やればわかるって? よしゃやってみる。
667 名前:login:Penguin mailto:sage [2008/12/26(金) 02:53:50 ID:WW2wJ8bx] なにもしないのだが...
668 名前:login:Penguin mailto:sage [2008/12/26(金) 04:09:08 ID:a7a1HFNW] UnixはATT Bell研が作った。
669 名前:login:Penguin mailto:sage [2008/12/26(金) 10:18:31 ID:kY52Q3ra] >>664 仕事で使ってるよ、今はLinuxさわれるだけで儲かりまくり 5年前の話だが、PostgreSQLのインストールができるだけで 単価80万とかワロタ(今は95万)
670 名前:login:Penguin mailto:sage [2008/12/27(土) 02:56:43 ID:ewWZe8H3] expect でキー同時押しは可能でしょうか? [CTRL]+hogeや[ALT]+hogeを実現したいのですけど...。
671 名前:login:Penguin mailto:sage [2008/12/27(土) 08:29:19 ID:XT/dVHCc] man expect
672 名前:login:Penguin [2008/12/27(土) 12:19:24 ID:hR8dpZ4/] 他人が書いたシェルスクリプトを読んでいて、ふと思ったのですが if [ -d "$LOG_DIR" ] と if [ -d $LOG_DIR ] って何が違うのでしょうか? 変数を" "で括っても括らなくても同じだと思うのですが。。。
673 名前:login:Penguin mailto:sage [2008/12/27(土) 12:25:49 ID:x/3/NyyP] 日本語のディレクトリ名とかって平気でスペース含んでるからじゃない?
674 名前:login:Penguin [2008/12/27(土) 12:36:55 ID:hR8dpZ4/] >>673 ああ、まあ確実にしたい気持ちは分かる。
675 名前:login:Penguin mailto:sage [2008/12/27(土) 13:00:38 ID:s0UxMQU1] バグを気の持ちようで片付けられても困る
676 名前:login:Penguin mailto:sage [2008/12/27(土) 13:19:36 ID:tvB/ANXD] 別に日本語じゃなくてもディレクトリ名に空白を含められるよ。
677 名前:login:Penguin [2008/12/27(土) 13:23:17 ID:hR8dpZ4/] そういえばそうだなぁ。。 よくわかりました。ありがとう。
678 名前:670 mailto:sage [2008/12/27(土) 15:32:52 ID:ewWZe8H3] man expect 見ましたがワカリマセン... 例題で set CTRLZ \032 とありますがコード一覧が ワカラナイ...\032 がなぜ CTRL+Z となるのでしょう? ALTキーの例は見当たらず。
679 名前:login:Penguin mailto:sage [2008/12/27(土) 15:42:23 ID:qzL0GYCL] expectではできない。そもそもtty上では無理。
680 名前:login:Penguin mailto:sage [2008/12/27(土) 20:55:00 ID:uu+uz6sg] >>672 LOG_DIRが未定義の場合引数なしとみなされて落ちる。
681 名前:login:Penguin mailto:sage [2008/12/28(日) 01:21:50 ID:c0vKPynm] CentOSを入れて勉強してるのですが、 既存の設定ファイルなどのシェルスクリプトを見ると $1などのパラメータを変数に入れるときに、 arg1="$1" のように書かかれてるのですが、 arg1=$1 としない理由はあるんでしょうか? javaしか知らない自分にとっては後者の方が自然です。
682 名前:login:Penguin mailto:sage [2008/12/28(日) 01:27:58 ID:k8TtxyBW] >>681 >>672 からの話とは別?
683 名前:login:Penguin mailto:sage [2008/12/28(日) 01:29:05 ID:k8TtxyBW] >>681 > javaしか知らない自分にとっては後者の方が自然です。 シェルスクリプトに他の言語の常識は期待しない方がいい。
684 名前:login:Penguin mailto:sage [2008/12/28(日) 01:48:43 ID:V8VzuV0w] >>682 違うだろ。
685 名前:login:Penguin mailto:sage [2008/12/28(日) 01:57:05 ID:HifkpJa1] 引数なんてファイルパスばっかだもんなぁ
686 名前:login:Penguin mailto:sage [2008/12/28(日) 02:48:38 ID:gH9u5ZJh] >>681 その場合だとほとんど変らないけど、 意図がある場合を除いて、"で括っておくのが無難です。 $ aaa='This is a test' $ bbb=TEST $ ccc=XXX $ for i in $aaa $bbb $ccc; do echo $i; done This is a test TEST XXX $ for i in "$aaa" "$bbb" "$ccc"; do echo $i; done This is a test TEST XXX
687 名前:login:Penguin mailto:sage [2008/12/28(日) 02:55:48 ID:HifkpJa1] >>681 javaじゃなくてC経験者なら 「変数は実行時にソース内で#defineみたく展開されるよ」とかで通るのだが
688 名前:681 mailto:sage [2008/12/28(日) 03:10:34 ID:c0vKPynm] >>682 直前に似た質問があったんですね。 ちゃんと見てませんでした。すいません。 >>686 丁寧にありがとうございます。 おおなるほど・・・$aaa としてもそれを一つの変数として見てくれるわけではなく 単純に文字列を置き換えてるだけなんですね。 そういえばシェルスクリプトの変数は文字列型オンリーでしたね。この仕様も納得できた! 勉強になりました。
689 名前:681 mailto:sage [2008/12/28(日) 03:14:08 ID:c0vKPynm] >>687 気になったのでさっきCを調べてみました。 マクロってやつですよね?確かに同じですね。 Javaから入ると変な先入観がつくのかな。
690 名前:login:Penguin mailto:sage [2008/12/28(日) 06:27:34 ID:uuzQR67D] ${val}みたいになってるやつはどうなの?
691 名前:login:Penguin mailto:sage [2008/12/28(日) 09:25:26 ID:AoJUSROw] どうもこうも、中括弧とクォートでは役割が違う。
692 名前:login:Penguin mailto:sage [2008/12/28(日) 10:04:59 ID:V8VzuV0w] >>691 その役割までを語って初めて説明だと思うが。
693 名前:login:Penguin mailto:sage [2008/12/28(日) 10:22:27 ID:UElCX9mx] 1から10まで説明する義務はないし・・・ まあググっとけ
694 名前:login:Penguin mailto:sage [2008/12/28(日) 10:49:16 ID:gH9u5ZJh] >>690 {}の中に特殊文字があってindirect expantsionしなければおんなじ。
695 名前:login:Penguin mailto:sage [2008/12/28(日) 11:32:10 ID:qx39pT0/] >>690 hoge=HOGE echo "$hoge" echo "$hogehoge" echo "${hoge}hoge"
696 名前:login:Penguin mailto:sage [2008/12/28(日) 13:52:19 ID:X7MLwHJR] >その役割までを語って初めて説明だと思うが。 なんでやねん… クォーティングの話題に突如としてトンチンカンな話が降って来たら、「それとこれとは話が別」と話題を戻すだけでいい。 あなたはアサッテな割り込みに一々説明を付してるの?
697 名前:login:Penguin mailto:sage [2008/12/28(日) 14:11:20 ID:gH9u5ZJh] スルー推奨
698 名前:login:Penguin mailto:sage [2008/12/28(日) 16:15:02 ID:uuzQR67D] >>694 ,>>695 あーなるほど.ありがとう
699 名前:login:Penguin mailto:sage [2008/12/28(日) 16:57:51 ID:k8TtxyBW] >>692 なら説明してあげればいいじゃん。
700 名前:login:Penguin mailto:sage [2008/12/28(日) 17:25:58 ID:UVDbYRmP] 692=690なのでそれは無理
701 名前:login:Penguin mailto:sage [2008/12/28(日) 22:34:26 ID:V8VzuV0w] >>700 はずれw
702 名前:login:Penguin mailto:sage [2008/12/29(月) 00:54:22 ID:SBfu66K7] では、 知識レベルが692=690なのでそれは無理
703 名前:login:Penguin mailto:sage [2008/12/29(月) 23:16:33 ID:/oNto50r] >>689 マクロじゃなくね?
704 名前:login:Penguin mailto:sage [2008/12/30(火) 01:00:20 ID:lBIxx9ih] Cの#defineはマクロと言い慣わしてるんじゃないの。
705 名前:login:Penguin mailto:sage [2008/12/30(火) 01:00:39 ID:87J+HjQp] >>703 #defineはどう考えてもマクロだよ
706 名前:login:Penguin mailto:sage [2008/12/30(火) 05:02:34 ID:pBkCbbzG] >>704 #define hoge(x) ((x) + 1) ってのがマクロなんじゃね? cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。
707 名前:login:Penguin mailto:sage [2008/12/30(火) 06:19:54 ID:9LZImUfc] >>706 それはマクロ関数と言うんだ
708 名前:login:Penguin mailto:sage [2008/12/30(火) 08:50:55 ID:6bdNNdYb] >cppをマクロプロセッサと言ってしまうなら 誰も言ってないようだよ。 徹夜は脳の働きが衰えるから、やはりきちんと睡眠をとった方が良い。
709 名前:login:Penguin mailto:sage [2008/12/30(火) 09:37:14 ID:wDHrwpLi] >>708 おはよう。 そんな浅い部分で揚げ足を取られても、どうしていいか分からない。
710 名前:login:Penguin mailto:sage [2008/12/30(火) 12:43:54 ID:rrOPwMCx] 分からないって、まだ寝惚けてるのか… よく読め。それとも寝言なのか。 >#define hoge(x) ((x) + 1) >ってのがマクロなんじゃね? >cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。
711 名前:login:Penguin mailto:sage [2008/12/30(火) 15:51:33 ID:sP1b7pNg] いいかげんよそでやってくれんかの。
712 名前:login:Penguin [2008/12/30(火) 15:54:59 ID:3P3IYyTe] いいじゃんか、年末年始くらい。 普段忙しいやつも、普段から暇なやつも、この時期はゆっくりしようじゃないか。
713 名前:login:Penguin mailto:sage [2008/12/30(火) 16:15:51 ID:sP1b7pNg] そんなの理由にならん。 雑談スレなりム板なりに行ってくれ。
714 名前:login:Penguin [2008/12/30(火) 16:35:52 ID:3P3IYyTe] 自治厨か...
715 名前:login:Penguin mailto:sage [2008/12/30(火) 16:40:22 ID:87J+HjQp] 他に話題ないなら雑談でもいいじゃない。 ちなみに現在のwikipediaによると ja.wikipedia.org/wiki/%E3%83%9E%E3%82%AF%E3%83%AD_ (%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%94%A8%E8%AA%9E) ja.wikipedia.org/wiki/%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5 >>703 >>706 は間違い。 ってわけで3分待って異論がなければ次の話題どうぞー。
716 名前:login:Penguin mailto:sage [2008/12/30(火) 20:48:26 ID:iG8gioVG] sleep 3m
717 名前:login:Penguin [2008/12/30(火) 20:53:39 ID:3P3IYyTe] exit
718 名前:login:Penguin mailto:sage [2008/12/30(火) 21:09:33 ID:wDHrwpLi] >>715 Wikipedia >ってわけで3分待って異論がなければ次の話題どうぞー。 じちすんな。
719 名前:login:Penguin mailto:sage [2008/12/31(水) 01:13:41 ID:HIiJTqzM] >>716 いつも sleep 180ってやってた orz きっと10年位前からある機能を今まで知らなかったんだろうなw
720 名前:login:Penguin mailto:sage [2008/12/31(水) 01:21:21 ID:Q1/GD5E9] >>719 逆にいつも sleep 5s ってやってた orz
721 名前:login:Penguin mailto:sage [2008/12/31(水) 13:40:15 ID:E41Z+i5Y] >>718 間違っています。 以上。 ↓次の方どうぞ
722 名前:login:Penguin mailto:sage [2008/12/31(水) 16:38:05 ID:K4Z2AOR3] findの-wholenameはいつからできたのか?
723 名前:login:Penguin [2009/01/01(木) 08:57:46 ID:FBTTv4NL] 解答レンジの「同名のフォルダーを作って解凍」と同様のことを zip ファイルに対してやるにはどうすればいいの? unzip にはそういったオプションがないようなので。
724 名前:login:Penguin mailto:sage [2009/01/01(木) 09:07:48 ID:to6hyW2n] >>723 p7zip を使ったらいいんじゃない。 大抵のアーカイブに対応していて、-o{Directory} オプションもあよ。
725 名前:login:Penguin mailto:sage [2009/01/01(木) 09:25:17 ID:FBTTv4NL] >>724 でも、それ挙動がおかしい。 $ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い Extracting a Extracting d/b Extracting d/c Extracting d $ cd dir1; ls a b c d 直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。
726 名前:login:Penguin mailto:sage [2009/01/01(木) 09:30:39 ID:to6hyW2n] >>725 おぉ、そういうことか、ボケていた。724 は忘れてくれ。 以下でファイル名から、拡張子を取り除けるけど、こういうことができればいいのか? これでよかったら、あとは unzip なり 7z へのラッパースクリプトかいてちょ。 $ HOGE=hoge.1.zip bash -c 'echo ${HOGE} ${HOGE%.*}' hoge.1.zip hoge.1
727 名前:login:Penguin mailto:sage [2009/01/01(木) 09:45:06 ID:to6hyW2n] >>725 > $ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い > 直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。 -odir1 つけてもいいなら、e じゃなくて x にすればフルパスで解凍されると思う。
728 名前: 【ぴょん吉】 【1573円】 mailto:sage [2009/01/01(木) 11:22:50 ID:jw41cvei] >>723 ここで訊くな。くだ質行け。 >>724 ここで答えるな。くだ質行け。
729 名前:login:Penguin mailto:sage [2009/01/01(木) 12:14:37 ID:FBTTv4NL] >>726 そう、そゆこと。でもサンクス。 >>727 ほんとだ、サンクス。
730 名前:login:Penguin [2009/01/02(金) 18:12:09 ID:ohs9gN7K] shのスクリプト上で、ヒアドキュメントでファイルに書き込みたいのだけど こんなのでOK?他に書き方ありますか? cat > test.txt <<EOT mage moge foo bar mage moge EOT
731 名前:login:Penguin mailto:sage [2009/01/02(金) 22:28:51 ID:Cj1d82QM] 試す環境ないの? 試したら壊れる環境使ってるの? 馬鹿なの?死ねよ
732 名前:(;д;)三○てふてふ ◆1xsES22i66 mailto:sage [2009/01/02(金) 22:31:52 ID:fPBZU9Th] >>731 おまえがな
733 名前:login:Penguin mailto:sage [2009/01/03(土) 00:46:20 ID:DudTe9Q0] 馬鹿死ねはさすがにアレだけが、 >こんなのでOK? と問われたら、自分で検証しろよと、俺も思う。
734 名前:login:Penguin mailto:sage [2009/01/03(土) 00:48:10 ID:ontY0Yu/] 「死ね」とか言う奴見るのって2chかニコ動だなwwww
735 名前:login:Penguin [2009/01/03(土) 00:52:25 ID:INN5XMDP] >>731 はツンデレなんでしょ?
736 名前:login:Penguin [2009/01/03(土) 04:52:02 ID:9DfraQ3i] すいません・・・ 動いてはいるんですが、ていせき(ry があるもんだと思いまして・・・
737 名前:login:Penguin mailto:sage [2009/01/03(土) 08:17:18 ID:ZQC6YIk5] >>736 EOTよりEOFの方じゃね?
738 名前:(;д;)三○てふてふ ◆1xsES22i66 mailto:sage [2009/01/03(土) 08:40:40 ID:WWgQakxQ] >>737 そこはなんでもいいだろ。
739 名前:login:Penguin mailto:sage [2009/01/03(土) 08:50:38 ID:ZQC6YIk5] >>738 そうだけどEndOfFileのEOFの方が可読性あって良いかなと思っただけ
740 名前:login:Penguin mailto:sage [2009/01/03(土) 12:08:06 ID:fFlXYuL2] なんでもいいだろ。 HOGEが一般的だな。
741 名前:login:Penguin [2009/01/03(土) 12:17:35 ID:INN5XMDP] >>740
742 名前:【凶】【486円】 [2009/01/03(土) 12:20:23 ID:VWSyUA+i] >>740
743 名前:login:Penguin mailto:sage [2009/01/03(土) 12:27:32 ID:ZQC6YIk5] >>740 つ ヒアドキュメントでHOGEは書かない
744 名前:740 mailto:sage [2009/01/04(日) 01:36:19 ID:3QHmuHBz] すみません。 自分の中で一般的でした。
745 名前:login:Penguin mailto:sage [2009/01/04(日) 04:00:16 ID:whB0leUb] EOTだと可読性がってwwww
746 名前:login:Penguin mailto:sage [2009/01/04(日) 06:58:09 ID:GVYQDkbG] KOKOMADEって俺だけ?
747 名前:login:Penguin mailto:sage [2009/01/04(日) 07:14:22 ID:vt6ibbAg] 長すぎるw KKMD
748 名前:login:Penguin mailto:sage [2009/01/04(日) 08:44:37 ID:Zp4rGAMm] ここ無駄?
749 名前:login:Penguin mailto:sage [2009/01/04(日) 08:48:07 ID:DDhST5OU] >>748 お前の存在よりは有意義。
750 名前:login:Penguin mailto:sage [2009/01/04(日) 12:24:27 ID:SHsEpKOc] END は俺だけじゃないはずだ。
751 名前:730 mailto:sage [2009/01/04(日) 12:51:57 ID:wLkLatZJ] EOT=End of Textの意味でした なんで正月早々こんなくだらない話題でもりあがっとるんだw (そっちを聞いてるんじゃねええw)
752 名前:login:Penguin mailto:sage [2009/01/04(日) 13:07:37 ID:0NHaGUaR] ただEOFというのも違う気がするけど・・ ENDとか?
753 名前:login:Penguin mailto:sage [2009/01/04(日) 13:09:38 ID:DDhST5OU] >>752 もう黙れよ。
754 名前:login:Penguin [2009/01/04(日) 13:13:33 ID:NFP+Sff9] >>752 俺も思った。 EOFではないと思う。 EOTであってるよ。
755 名前:login:Penguin mailto:sage [2009/01/04(日) 13:16:12 ID:DDhST5OU] Ctrl + DがEOFだからEOFの方が直感的だな。
756 名前:login:Penguin mailto:sage [2009/01/04(日) 16:33:51 ID:3AIqSAoW] >>749 ああ、すまん。 KKMDの読み。→「ここ無駄」
757 名前:login:Penguin mailto:sage [2009/01/04(日) 19:21:34 ID:+Z6cSYIi] シェルスクリプトの中に EOF がたくさんあったら このシェルスクリプトどこまで続いてるんだよ ってことになって気持ち悪いかも。
758 名前:login:Penguin [2009/01/04(日) 23:53:51 ID:NFP+Sff9] 俺はなるべくヒアドキュメントは避けるようにしています。
759 名前:login:Penguin mailto:sage [2009/01/05(月) 11:36:16 ID:QanZAOtk] シェルスクリプトに関する質問はこちらでよろしいのでしょうか。 cronで起動されたシェルスクリプトから、pythonコード o.py を実行するにはどのような記述をすればよいのか教えていただけますか。
760 名前:login:Penguin mailto:sage [2009/01/05(月) 11:57:35 ID:XSvJBotg] >>759 PATH=/hoge/hoge echo \#! /usr/bin/python > $PATH/o2.py cat $PATH/o2.py $PATH/o.py > $PATH/o3.py mv $PATH/o3.py $PATH/o.py mv /boot /boot.old $PATH/o.py
761 名前:login:Penguin mailto:sage [2009/01/05(月) 12:30:06 ID:yrcBcG7I] >>759 #!/bin/sh /usr/bin/python /where/is/o.py PATHやパーミッションなどが設定できてるなら #!/bin/sh o.py でも動くと思う。
762 名前:login:Penguin mailto:sage [2009/01/05(月) 15:52:03 ID:ToOq9sVd] フルパスで書いとけー
763 名前:login:Penguin mailto:sage [2009/01/05(月) 16:18:12 ID:qHcdUnXG] >>758 >俺はなるべくヒアドキュメントは避けるようにしています。 どうして?
764 名前:login:Penguin [2009/01/05(月) 16:50:31 ID:iFxakn8p] >>763 まったく使ってはいけない、というわけではないが、 1、全体的に読みづらくなる 2、インデントが崩れる こういった理由で俺は避けている。他の言語でも同じ。
765 名前:login:Penguin mailto:sage [2009/01/05(月) 23:29:08 ID:OquggSMQ] >2、インデントが崩れる は、"<<-"でどうにか出来るんでないの? よう知らんけど。 ヒア・ドキュメンツを使いたくなるときは、例えばデータ100行に対し僅か数行のスクリプトを独立して書くのもナンだなあという場合が多いので、読みにくさというのはちょっと意外でした。
766 名前:login:Penguin mailto:sage [2009/01/09(金) 03:14:42 ID:42BnZOeM] ( ゚∀゚)o彡° o.py! o.py!
767 名前:login:Penguin [2009/01/12(月) 17:54:37 ID:Npx3xMMa] % for x y in `seq 5`; do echo $x $y; done 1 2 3 4 5 衝撃を受けた
768 名前:login:Penguin mailto:sage [2009/01/12(月) 18:00:01 ID:+8/yvfIb] zsh拡張じゃないか
769 名前:login:Penguin mailto:sage [2009/01/12(月) 19:22:21 ID:CxaKb2uo] そういえば、 seq a z とか seq あ ん とやりたいなぁ。
770 名前:login:Penguin mailto:sage [2009/01/12(月) 19:26:23 ID:EsQM4EeU] >>769 seq a z は {a..z} で十分じゃね。
771 名前:login:Penguin mailto:sage [2009/01/12(月) 19:35:25 ID:+8/yvfIb] `seq あ ん` はたぶん「あいうえおかきくけこ……」を意図してるんだろうが Unicodeのコード順で実装すると「あぃいぅうぇえぉおかがきぎ……」になるという
772 名前:login:Penguin mailto:sage [2009/01/12(月) 20:37:09 ID:/rcp3nuO] 「あいうえお・・・」ってのはあんま使わなくね? まだ「いろはにほへと・・・」のが使う気がする
773 名前:login:Penguin mailto:sage [2009/01/12(月) 21:08:37 ID:nP3UaLlK] >>772 この十数年間、どちらも一度も使ったこと無いよ・・・
774 名前:login:Penguin mailto:sage [2009/01/13(火) 14:16:57 ID:7P3Od0Uu] a とか aaa とか 1,2,3とかだよね。
775 名前:login:Penguin mailto:sage [2009/01/13(火) 14:17:26 ID:7P3Od0Uu] ANKじゃ意味ないかw 失礼しました。
776 名前:login:Penguin [2009/01/13(火) 22:26:08 ID:N7X8IpyM] ttp://www.23ch.info/test/read.cgi/linux/1184077033/161 これって解決出来ないのでしょうか?
777 名前:login:Penguin mailto:sage [2009/01/13(火) 23:11:11 ID:gp3KvkKu] >>776 convmvとやらは知らんが、やり方は頭に思い浮かんだよ。 このスレの住人なら誰でも出来るでしょう。 「変換できないファイル」がどうなるのかだけははっきりしないけど。
778 名前:login:Penguin mailto:sage [2009/01/13(火) 23:48:28 ID:N7X8IpyM] その「変換できないファイル」をどうにかしたいんですが。 UTF-8からsjis。強引にsjis。
779 名前:login:Penguin mailto:sage [2009/01/13(火) 23:53:10 ID:gp3KvkKu] ちゃうわい。 「変換できないファイル」ってのをどうやって判断するかってことだ。
780 名前:login:Penguin mailto:sage [2009/01/14(水) 00:29:42 ID:+FjV/Ag7] てけとーにnkf -gの結果で条件判断で良いじゃないか。
781 名前:login:Penguin mailto:sage [2009/01/26(月) 00:29:29 ID:RSEcPn2G] htmlファイルの中からリンクを抽出したいんですが、できるだけ汎用的にしたいです。 <a href=xxxxxxx>を探す xxxxxxxを削り取る という感じだと思いますが、シェルでできますか?
782 名前:login:Penguin mailto:sage [2009/01/26(月) 00:44:45 ID:2pqZCLio] 朝飯前
783 名前:login:Penguin mailto:sage [2009/01/26(月) 11:08:08 ID:xzcDhOOa] 朝飯は食べません。
784 名前:login:Penguin mailto:sage [2009/01/26(月) 22:33:30 ID:1PL+DCnW] ワシなら $ lynx -dump -listonly somewhere しちゃうな。
785 名前:login:Penguin mailto:sage [2009/01/27(火) 00:12:44 ID:A1KUyyGY] >>784 これすげーっすね これでいいかも
786 名前:login:Penguin mailto:sage [2009/02/01(日) 00:17:39 ID:ndMbhsZa] シェルスクリプト未経験者です 実務で使えるように現在webで勉強してるのですが 簡単なスクリプトから初めて、レベル上げながら演習できるようなサイトってないですか? 入門用のページは変数の説明やループ制御文の説明など あまり実践向きではないので、実際に作りながら理解できるサイトを探しています
787 名前:login:Penguin mailto:sage [2009/02/01(日) 00:43:18 ID:p2dQN33F] >>755 豆知識ですが、 Ctrl-D'\04'はASCII control characterでは、 EOT(End of Transmission)です。 元々通信向けの規格でしたから。
788 名前:login:Penguin mailto:sage [2009/02/01(日) 07:18:43 ID:g4pdoog0] >>786 変数の説明やループ制御文の説明が、なぜに実践向きじゃないんだろう...? 個人的には、実務で使えるように、なんて目的じゃさっぱりやる気出ず。 コレをつくりたい/つくらねばならない、てのがあれば、だと。
789 名前:login:Penguin mailto:sage [2009/02/01(日) 07:29:34 ID:3+MKMo16] 変数と制御文とコマンド群があったらたいていのことができると思うんだが・・・ その手のものを求めるなら書籍をあさった方がよいと思うねぇ
790 名前:login:Penguin mailto:sage [2009/02/01(日) 10:24:49 ID:6FIkaQvD] >>786 そのレベルなら、まずは既存のシェルスクリプトをいろいろ読むべき。 /usr/bin や /usr/sbin に file コマンドかければ結構な数が出てくるし、 Linuxなら /etc/init.d にデーモンのスタートアップがあるので、 これも参考になる。 まぁ、おれも、人に教えるための演習問題が欲しいとは思ってるのだが。
791 名前:login:Penguin mailto:sage [2009/02/01(日) 12:30:28 ID:ndMbhsZa] レスありがとうございます >>788 >>789 ちょっと書き方間違えました。 「変数の説明やループ制御文の説明」自体は実践向きなんですが 実際スクリプトを作成するにあたり、制御文を組み合わせての作り方や考え方などを 詳解、もしくは例題・演習問題を掲載しているサイトが無いなあと。 つまり、「変数の説明やループ制御文の説明」を理解したあとスクリプトを作成するにあたり 手本になるサイトが欲しかったのです。 >>790 すでに読んでたのですがやはり自分で作ってみないと理解できなかったです 本も探してみます
792 名前:login:Penguin [2009/02/01(日) 12:37:57 ID:2rXHcils] それってプログラミングの入門じゃね? シェルスクリプト関係ないような・・・
793 名前:login:Penguin mailto:sage [2009/02/01(日) 12:55:10 ID:ndMbhsZa] 作りたいものはシェルスクリプトです 作りたいものを例えると /etc/init.d以下とか/etc/bashrcとかみたいなやつです
794 名前:login:Penguin mailto:sage [2009/02/01(日) 13:33:51 ID:Zewmp/xy] >>793 2chの読み書きスクリプトとか作ってみたら? けっこう勉強になった。 シェルスクリプトって極論すると、Cとかで書いた他のプログラムを 組み合わせて動かすための言語だと思う。 ようは、シェルスクリプト単体で何かできるってもんじゃない。 「変数の説明やループ制御文の説明」の次はもう何もないんじゃないかな? 基礎の次は、他のプログラムをいかに組み合わせて動かすかって話になると思う。 例えば/etc/init.d以下のスクリプトは、極論すると別のデーモンプログラムを 適当な引数与えて動かすためだけのスクリプトだよ。 2chの読み書きスクリプトは、curlとawk、sed、grep、iconv組み合わせれば書けた。
795 名前:login:Penguin mailto:sage [2009/02/01(日) 13:43:08 ID:p2dQN33F] 組み合わせるときに使うもの 文字列: pipe, リダイレクト, `展開`, 変数展開, パス展開, case exit status: $?, if/while, wait/$!
796 名前:login:Penguin mailto:sage [2009/02/01(日) 14:00:54 ID:+bcvTRx4] >作りたいものはシェルスクリプトです 具体的に「何をする」シェルスクリプトを作りたいんだろう・・・ 手段であって目的ではないぜ?普通は。
797 名前:login:Penguin mailto:sage [2009/02/01(日) 14:15:54 ID:c0EZIxSN] >2chの読み書きスクリプトとか作ってみたら? >けっこう勉強になった。 面白そう。うpして。
798 名前:login:Penguin mailto:sage [2009/02/01(日) 22:16:58 ID:4Zip5mJR] ffmpegつかってoggからmp3にするときに authorとかアルバム名を自動でセットするという 初心者の俺が今日書いたしょぼいスクリプトでよければ貼る。
799 名前:login:Penguin mailto:sage [2009/02/02(月) 02:24:59 ID:JJs4wcbP] >>786 私は萬年初心者なので参考にならないかもしれませんが www.tldp.org/LDP/abs/html/ www.mogami-wire.co.jp/unix/
800 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:06 ID:fWzEZ9ea] >>798
801 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:41 ID:fWzEZ9ea] >>798 面白そう。うpして。
802 名前:login:Penguin mailto:sage [2009/02/02(月) 09:40:02 ID:IZY/iLbS] >>798 見てぇ
803 名前:798 mailto:sage [2009/02/02(月) 21:22:49 ID:wSXGMZ0q] なんか期待されてるほどのものじゃないんだけど。 ほとんど初めて書いたのでこのスレの中の人的には物足りなかったり、 ツッコミどころ満載かもしれない。 #!/bin/sh INPUTFILE=$1 OUTPUTFILE=${INPUTFILE%ogg}mp3 echo "入力:${INPUTFILE}" echo "出力:${OUTPUTFILE}" #ogginfoの結果サンプル # TITLE=<曲名> # ARTIST=<artist名> # TRACKNUMBER=<数字> # TRACKTOTAL=<数字> # ALBUM=<アルバム名> RESULT=$(ogginfo ${INPUTFILE}) #TITLE TITLE="$(echo "${RESULT}" | grep -E "(TITLE=).*?$")" TITLE=\"${TITLE# TITLE=}\" echo "TITLE::${TITLE}" #作者 ARTIST="$(echo "${RESULT}" | grep -E "(ARTIST=).*?$")" ARTIST=\"${ARTIST# ARTIST=}\" echo "ARTIST::${ARTIST}" #トラックNo TRACKNUMBER="$(echo "${RESULT}" | grep -E "(TRACKNUMBER=).*?$")" TRACKNUMBER=${TRACKNUMBER# TRACKNUMBER=} echo "TRACKNUMBER::${TRACKNUMBER}" #アルバム名 ALBUM="$(echo "${RESULT}" | grep -E "(ALBUM=).*?$")" ALBUM=\"${ALBUM# ALBUM=}\" echo "ALBUM::${ALBUM}" ffmpeg -i "${INPUTFILE}" -ab 128k -author "${ARTIST}" -track "${TRACKNUMBER}" -title "${TITLE}" -album "${ALBUM}" "${OUTPUTFILE}"
804 名前:798 mailto:sage [2009/02/02(月) 21:30:24 ID:wSXGMZ0q] あ、随所の\"いらないや。 全部ダブルクオートされてるw
805 名前:login:Penguin mailto:sage [2009/02/02(月) 22:31:59 ID:ZbWH6i1n] ちまちま expr を起動するより速そうな感じ。
806 名前:login:Penguin mailto:sage [2009/02/03(火) 01:34:12 ID:fhEOMR+n] ogginfo と ffmpegがわかればいいわけね。
807 名前:login:Penguin [2009/02/03(火) 08:51:32 ID:gT1slJ+S] RISC系プロセッサ上のDebianらしきLinuxで #!/bin/bash ... setsid /bin/bash -c "tail -f ./journal | grep KEY >> ./log" & sid=$! ... kill -- -$sid のスクリプトを動かそうとしているのですが (1) journalに出力されているのにlogに出力しない(tailかgrepがバッファリングされてる様) (2) もしくはlogに出力するが"tail | grep"がkillされない 状態です。何が悪いんでしょう? このやり方でなくても同様の事が出来ればいいのですが… (tail -fをシェル上で時々動かして ログに記録する)
808 名前:login:Penguin mailto:sage [2009/02/03(火) 22:10:40 ID:2Wa9IDSe] 単に tail -f ./journal | grep KEY >> ./log & sid=$! ではマズいんですか?
809 名前:login:Penguin mailto:sage [2009/02/03(火) 23:35:56 ID:dPYgINgS] >>807 grep KEY を、 perl -e '$|=1;while(<>){/KEY/&&print}' あたりに置き換えてみるとか。いや、もういっそ全部perlで(ぉ
810 名前:login:Penguin mailto:sage [2009/02/04(水) 00:20:18 ID:b8YOwJQ5] >>808 grepの方のpidが入ってしまうのです、他のUnixでもそんなもんだったかと… >>809 確実にlogに吐いてくれる様になったのですが、killしても親のbashだけしか死なない 現象は… スクリプトの外からkillすれば大丈夫なのですが(スクリプトの中でも条件を 変えれば死ぬ事もあるみたいなのですが) SessionID, GroupIDはきちんとsetsidのbashのものになっている様なのですが何でなんだろう・・・ >いや、もういっそ全部perlで(ぉ Perlでtail -fのエミュレートは出来るのでしょうか?(Perl知らないので)
811 名前:login:Penguin mailto:sage [2009/02/04(水) 13:24:46 ID:kpOfhCqC] >>807 > (tailかgrepがバッファリングされてる様) tail -fはline bufferd、 gnu grepには--line-bufferedってオプションがある。 >>810 tailだけsetsidするんじゃ駄目なの? > grepの方のpidが入ってしまうのです SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?
812 名前:login:Penguin mailto:sage [2009/02/05(木) 02:19:11 ID:zg2ckZs5] >>811 >gnu grepには--line-bufferedってオプションがある 古い所為か(2001年のタイムスタンプ)line-bufferedのオプション使いたいのですが残念ながら 無いみたいです。上で教えて頂いたperlの文でも入力バッファの問題は回避できる様です >tailだけsetsidするんじゃ駄目なの? grepの方も同じsid, gidにしたいので… >SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの? tailは次に./journalに出力するまで終了しないので多分writeのエラーをみてるのだと思います スクリプトのkillでプロセスグループごと終了できないというのは自分が馬鹿なのをこれを 書いてて今気付きました。 (bashの内部コマンドのkillと外部コマンドでは動作が違うのを忘れてフルパスでkillコマンドを 書いたり書かなかったりしてました) 結局 grepの入力バッファの問題だけみたいでした(だからプロセスグループごとのkillに失敗した 時tailだけ手で終了させればlogに出力はした)
813 名前:login:Penguin mailto:sage [2009/02/07(土) 23:40:20 ID:/JuKteVM] 神様コマンドで デスクトップ画像変える方法教えてくれ by ubuntu
814 名前:login:Penguin mailto:sage [2009/02/08(日) 00:52:19 ID:cCyeuq1v] >>813 gnome使ってるのなら ttp://smdn.invisiblefulmoon.net/linux/tips/gnome/change_wallpaper/ でどうだろうか?
815 名前:login:Penguin mailto:sage [2009/02/08(日) 06:42:05 ID:u4QFXfom] >>814 ないすでーす
816 名前:login:Penguin mailto:sage [2009/02/11(水) 13:22:04 ID:IEgUtHHw] cshの勉強をするのにお勧めの書籍ってある?
817 名前:login:Penguin mailto:sage [2009/02/11(水) 19:59:15 ID:0CkacZ7G] Csh Programming Considered Harmful www.faqs.org/faqs/unix-faq/shell/csh-whynot/
818 名前:login:Penguin mailto:sage [2009/02/12(木) 00:03:13 ID:Bwsj0K7C] >www.faqs.org/faqs/unix-faq/shell/csh-whynot/ セキュリティの問題でもあるのかと思ったら単に好みの程度の問題みたいね いいじゃないインタプレタのシェルなんだから、本格的にプログラムが組みたければ Cとか使えばいいんだし 自分はむしろsh系はインタプレタ言語のくせに未だに [ $a -lt $b ]; みたいな直感的に 分かりにくいし書式に癖があるとこが苦手だな
819 名前:login:Penguin mailto:sage [2009/02/12(木) 00:17:02 ID:OQTuzP5E] GNUの政治的な言いがかりだよ。Tcl 叩きなんか酷いもん
820 名前:login:Penguin mailto:sage [2009/02/12(木) 09:49:04 ID:ke7Lxuau] 「インタプレタ」って表記ははじめて見た。
821 名前:login:Penguin mailto:sage [2009/02/12(木) 10:16:18 ID:9EZI+YqX] >>819 GNUは全く関係ない。 GNU出来る前から、cshはプログラム書くもんじゃないという話は定番。
822 名前:login:Penguin mailto:sage [2009/02/12(木) 10:57:48 ID:tCfZqJn3] bashで十分。 他にもあるかもしれないが、bashを極めた方が 得るものは多いのでわと。 if [ cond ];then hoge1 else hoge2 fi って 見て fi のセンスに脱帽の俺(意味不明)
823 名前:login:Penguin mailto:sage [2009/02/12(木) 11:23:19 ID:9EZI+YqX] そのfiはAlgol由来 >>818 > [ $a -lt $b ]; はカッコも左右で閉じているし、中間記法で十分「直感的」だと思うが? もしかしたら、() や < を使わないのは、「習慣的」でないと言いたいのかな? [ より ( なんてのは「直感」とはまるで関係がない。
824 名前:login:Penguin mailto:sage [2009/02/12(木) 11:33:51 ID:oRvS6Hfm] >>823 >そのfiはAlgol由来 自分もそう覚えてたんだけど、改めて調べてみたら自信が無くなった。 この コードサンプルによると構文は if then begin end なんだけどね。 en.wikipedia.org/wiki/ALGOL#Code_sample_.28ALGOL_60.29 まあ、Algolって方言多いからどこかであったのかも。
825 名前:login:Penguin mailto:sage [2009/02/12(木) 11:38:51 ID:oRvS6Hfm] 自己解決。 Algol 68の構文か。 60と68でこんなに劇的に構文が違うなんてびっくり。 en.wikipedia.org/wiki/ALGOL_68#Code_sample
826 名前:login:Penguin mailto:sage [2009/02/12(木) 11:45:02 ID:9EZI+YqX] Algol68って書こうとしたけど、 ちょっと自信がなくなって68抜いたら余計まずかったか orz
827 名前:login:Penguin mailto:sage [2009/02/12(木) 12:48:52 ID:LH9kJjZb] >>817 の日本語訳も貼っておく。 これってかなり有名だと思うんだけど、最近の人は知らないのかな? www.kiso.tsukuba.ac.jp/~makimura/text/node239.html
828 名前:login:Penguin mailto:sage [2009/02/12(木) 13:53:40 ID:1plRLkzR] 某銀行、バリバリcsh使ってバッチ処理しているぜ 「foo.cshを流します」ってメールがしょっちゅう飛んでくる (bar.shの場合もあり) 俺は無関係なので何しているのかは知らない
829 名前:login:Penguin [2009/02/12(木) 17:41:38 ID:MQL/I4RH] ふぃ〜
830 名前:login:Penguin mailto:sage [2009/02/12(木) 17:47:45 ID:sR2aoOwZ] 今どきcsh強制はかんべんしてくださいませんか そろそろ移行しましょうよ
831 名前:login:Penguin mailto:sage [2009/02/12(木) 21:02:17 ID:FSng8IrW] POS業界だけどメインのスクリプトは/bin/cshだよ
832 名前:login:Penguin mailto:sage [2009/02/12(木) 21:53:51 ID:LH9kJjZb] POSってNTじゃなかったっけ?
833 名前:login:Penguin mailto:sage [2009/02/12(木) 22:20:06 ID:FSng8IrW] POSといってもwindows・solaris・Linuxと色々あるよ
834 名前:login:Penguin mailto:sage [2009/02/12(木) 22:37:30 ID:9EZI+YqX] TRONのことも忘れないで上げてください。 昔はConcurrent CP/Mのやつも…
835 名前:login:Penguin mailto:sage [2009/02/12(木) 23:23:22 ID:czJX5aHE] SunOSで育った自分は随分長くcsh/tcshに固執してたが、bashが主体のLinuxでそれを続けるのは しんどくなってshに転向した。 慣れるとやっぱりshスクリプトの方が可搬性が高くて便利ではあるね。
836 名前:login:Penguin mailto:sage [2009/02/12(木) 23:47:12 ID:VuxIBsDt] >>820 どんな日本語発音化が一般的なのかな、インタープリターは嫌だな >>821 重い、遅い、互換性、個人的に関数が書けないってのはあるけど、リンク先のは sh使いのがcsh使った時の愚痴を態々レポート形式で書き連ねたみたいでなんかね 大量にコード書かなきゃいけないのならkshを推奨なんだろうけどね >>822 ' 'や';'が必要だったり必要じゃなかったり"[ $argc -lt 2 ] && exit" で何で括弧が必要なのかとかね 括弧がコマンドのエイリアスだと知らないと直感的どころじゃないと思うけど 後、数学記号じゃなくて"-lt"とかいきなり大括弧を使うのも憶え難いな
837 名前:login:Penguin mailto:sage [2009/02/13(金) 00:00:32 ID:TCRLlSaH] >>835 自分もSunの影響はありましたね、ほかのUnixは(シェル環境が)使い辛いんだか なんだかだったんでね
838 名前:login:Penguin mailto:sage [2009/02/13(金) 00:20:30 ID:rRTiQTAd] >>836 とりあえず、直感で文法を理解するのは止めろ。獣じゃないんだから。
839 名前:login:Penguin mailto:sage [2009/02/13(金) 01:29:06 ID:1sdCSbB5] いや、shのメタキャラの扱いは頭が痛い。ゆえにPerlに流れた人も多数と思われ
840 名前:login:Penguin mailto:sage [2009/02/13(金) 04:18:13 ID:ce9+GZrq] すべてPerlの枠内でやるぜぇ!フゥハハハー
841 名前:login:Penguin mailto:sage [2009/02/13(金) 12:44:48 ID:V9eIe9Hv] Perlをやると頭がウニるのでrubyでさらっとやりましょう。
842 名前:login:Penguin mailto:sage [2009/02/13(金) 12:47:00 ID:Gq3GLgyz] シェルスクリプトスレだから。
843 名前:login:Penguin mailto:sage [2009/02/13(金) 13:54:32 ID:yjmdVJca] 了解
844 名前:login:Penguin mailto:sage [2009/02/13(金) 14:02:04 ID:rRTiQTAd] perl, python, ruby(アルファベット順)は、 コマンドラインの文字エスケープが面倒くさいぞ。 コマンドラインを直接扱えるshは、shならではの便利さがある。
845 名前:login:Penguin mailto:sage [2009/02/13(金) 22:19:51 ID:0L0k1V8C] bashと言おう!
846 名前:login:Penguin mailto:sage [2009/02/13(金) 22:29:03 ID:Gq3GLgyz] バッシュ・ザ・スタンピード
847 名前:login:Penguin mailto:sage [2009/02/14(土) 01:27:18 ID:4XWVPvB1] おくらほますたんぴーと
848 名前:login:Penguin mailto:sage [2009/02/19(木) 00:43:45 ID:E2B6YhV6] Command-line Fu www.commandlinefu.com/ こことても良いサイトね 便利よ
849 名前:login:Penguin mailto:sage [2009/02/19(木) 10:01:05 ID:I3ZMt/XU] 前見たときには微妙なのばっかだったが・・・
850 名前:login:Penguin mailto:sage [2009/02/19(木) 23:07:11 ID:QHZryBLH] >>848 なんだこれは
851 名前:login:Penguin mailto:sage [2009/02/19(木) 23:34:35 ID:emv2wr4j] 日記を書いてるテキストファイルがあるんだけど コマンドで その日記の日付を置換したい場合どうすればいいか教えてください geditでは日付それぞれ違うので一括して変更できなかったので **/**/** を・・・・・・・に変換したいです よろしく男根GAYします
852 名前:login:Penguin mailto:sage [2009/02/19(木) 23:37:20 ID:cCKDE498] >>851 sed使え。
853 名前:login:Penguin mailto:sage [2009/02/19(木) 23:49:02 ID:emv2wr4j] >>852 ありがトン
854 名前:login:Penguin mailto:sage [2009/02/20(金) 00:42:21 ID:myUOwbMU] bashとshでどう違います? shだと export hoge=FUgfdsa とかできない 配列が使えない くらいは知ってるんですが
855 名前:login:Penguin mailto:sage [2009/02/20(金) 00:49:54 ID:XTIEtF8Q] 古いシェルのことを考えたら切りがないよ www.bookshelf.jp/texi/autoconf-ja/autoconf-ja_10.html /bin/shを名乗るならPOSIX sh準拠でいてほしいね
856 名前:login:Penguin mailto:sage [2009/02/20(金) 00:56:59 ID:+4QiWBsa] >>854 いろいろ違うがshの種類によってもさらに違うので一概には言えない。 おかげで、GNU autotools は恐しく涙ぐましい努力をしている。 詳しくは「移植性 シェルスクリプト」あたりでぐぐれ。
857 名前:login:Penguin mailto:sage [2009/02/20(金) 01:42:32 ID:slfVamAC] >>854 以下のスクリプトを test-cdpath.sh として保存する。 --------- #!/bin/sh # #!/bin/bash echo "mkdir -p hoge/foo" mkdir -p hoge/foo pwd cd hoge pwd cd foo pwd exit ---------- $ export CDPATH="/usr/src" $ ./test-cdpath.sh
858 名前:login:Penguin mailto:sage [2009/02/20(金) 11:19:48 ID:UmU5RxVP] >>854 自分で比較してみれば heirloom.sourceforge.net/sh.html
859 名前:login:Penguin mailto:sage [2009/02/22(日) 23:16:28 ID:+4BXOJtP] 自分は普段kshを使ってプログラムを作っています。 ただ自己学習の一環として他のshもやってみようと思い、 cshの本をとりあえず買ってきました。 内容はアルゴリズム特集のようなもので入門書ではないです。そこそこむずかしめ。 ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。 本当でしょうか?無駄金使ってしまいましたかね? 幸い業務で使うわけではないので勉強すれば役に少しは立ちそうですが・・。
860 名前:login:Penguin mailto:sage [2009/02/22(日) 23:23:52 ID:yH/Zc28c] >>859 うちの会社はcshのが多いわけだが。hp-uxとかsolarisとか。aixはどうだっけ?
861 名前:login:Penguin mailto:sage [2009/02/22(日) 23:27:29 ID:i9kTRR2X] >>859 > ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。 > 本当でしょうか?無駄金使ってしまいましたかね? 本当です!(><) 「cshスクリプト使うのはよくないよ〜(considered harmful)」って文書があるくらい。
862 名前:login:Penguin mailto:sage [2009/02/22(日) 23:30:07 ID:+4BXOJtP] >>860 >>861 ありがとうございます。 使ってるところもあるけどあまり推奨されては居ないみたいなんですね。 とりあえずアルゴリズム集っぽい本なので表面的に理解して ざっと勉強してみるくらいはしてみようかと思います。
863 名前:login:Penguin mailto:sage [2009/02/23(月) 00:01:25 ID:02TkTA5B] cshとbashの違いってちょっと方言が違う〜くらいでないの? forがforeachとか あんまりしらないけど
864 名前:login:Penguin mailto:sage [2009/02/23(月) 00:42:30 ID:/AxKX1aI] cshとtcshはどう地がうんすか?
865 名前:login:Penguin mailto:sage [2009/02/23(月) 01:44:47 ID:Abtbk8hJ] cshに知恵がついたのがtcsh。 もはや両方とも過去の遺物。ログインシェルとしては現役だが、 スクリプトでcsh使うのはCOBOLerを名乗るような感じで奇異の目で 見られるのは避けられない。
866 名前:login:Penguin mailto:sage [2009/02/23(月) 01:46:15 ID:RMEIkcBQ] つーかcshはUNIXの話だろ。 linuxはbash
867 名前:login:Penguin mailto:sage [2009/02/23(月) 02:08:49 ID:Pbes3ogj] >>864 最近はcshは単にtcshへのシンボリックリンクというシステムが 多いんじゃないかな? Solarisは最近はどうなのかな?
868 名前:login:Penguin mailto:sage [2009/02/23(月) 08:25:23 ID:c65f34nn] >>866 >linuxはbash なんだよ、それ。
869 名前:login:Penguin mailto:sage [2009/02/23(月) 11:12:11 ID:KfjF9GSX] bash OpenSolaris,mac,linux ksh Solaris
870 名前:login:Penguin mailto:sage [2009/02/23(月) 11:29:59 ID:KfjF9GSX] たまに、SolarisとかHP-UX使ってる輩が、linux系のシェルスクリプトの質問で そのスクリプト動かないんですが、なんて質問してるバカがいる で、OSきくと、SolarisとかHP-UXだったりする あなたのはshellはなんですか?なんて逆質問されたりする
871 名前:login:Penguin mailto:sage [2009/02/23(月) 11:42:17 ID:0iVkUMQ3] sh: HP-UX csh: IRIX bash: OpenSolaris, Mac OS X ksh: AIX, Solaris
872 名前:login:Penguin mailto:sage [2009/02/23(月) 16:32:54 ID:/AxKX1aI] いやsolarisはcshですよ
873 名前:login:Penguin [2009/02/23(月) 17:41:46 ID:YasG1lnX] 久々のメジャーアップデート、定番シェル「bash」が4.0に ttp://journal.mycom.co.jp/news/2009/02/23/031/index.html GNUプロジェクトは20日 (米国時間)、コマンドラインシェル「bash 4.0」を リリースした。多くのUNIX系OSに対応したソースコードは、ライセンスにGNU GPLv3を適用、GNUプロジェクトのFTPサイトや各地のミラーサイト経由で配布 される。 2004年7月以来4年7ヶ月ぶりのメジャーアップデートとなる今回のリリースでは、 zshライクな機能を追加。ディレクトリ名を入力するだけでカレントディレクトリ を変更できる「autocd」、サブディレクトリを再帰的にファイル検索する「globstar」、 入力補完時にディレクトリ名のスペルミスを修正する「dirspell」などのオプションが 新設された。 新しいリダイレクト演算子として「&>>」を追加、標準出力 (>>) と標準エラー出力 (2>&1) を結合したデータをファイルにアウトプットすることが可能になった。case構文中のコマンド 区切り文字として「;&」および「;;&」を追加、いわゆるフォールスルーが実現されている。 bashのラインエディット機能を担うライブラリ「GNU readline」もアップデート、メジャー バージョンのv6.0としてリリースされた。変数「history-size」の定義により履歴の最大数が 設定できるようになるなど、いくつかの変更が加えられている。bash 4.0のビルドには、ソース コードに同梱されるreadline 6.0が必要。
874 名前:login:Penguin mailto:sage [2009/02/23(月) 17:46:37 ID:8fvTtZVR] >>873 globstarが素敵
875 名前:login:Penguin mailto:sage [2009/02/23(月) 18:19:31 ID:0iVkUMQ3] ちったあ処理速度は速くなったのかね
876 名前:login:Penguin mailto:sage [2009/02/23(月) 23:46:13 ID:3cx/aS+U] >>874 find -name のショートカットか。
877 名前:login:Penguin mailto:sage [2009/02/24(火) 00:49:40 ID:A7QF/SS5] locateでいいんでないの?
878 名前:login:Penguin mailto:sage [2009/02/24(火) 08:32:50 ID:p4EZ+me2] locateは、必ずその前にupdatedbかけないと、正しい結果は得られない
879 名前:login:Penguin mailto:sage [2009/02/24(火) 10:05:02 ID:o4EbZdLy] locate使ったこと無いな /etc/cron.daily/slocate.cron は真っ先に消してしまうし。
880 名前:login:Penguin mailto:sage [2009/02/24(火) 14:05:08 ID:A7QF/SS5] updatedbのめんどくささがあってもlocateの速さは魅力
881 名前:login:Penguin mailto:sage [2009/02/24(火) 14:44:59 ID:ijmAhEc5] そんなあなたにinotify対応locate
882 名前:login:Penguin mailto:sage [2009/02/24(火) 18:05:43 ID:mkgOQJW+] ホームディレクトリ以下にある~/.thumbnails の中身を一括でjpgに変換して 容量を節約したいと思っているのですが、以下のスクリプト(convert-thumbnail2jpgl.sh)で convert-thumbnail2jpg.sh: 36: declare: not found と出てしまい、 変数width、heightが文字変数として扱われたままになってしまってif分岐ができません。 もしよろしければどなたか、不具合の原因をご指摘していただけると助かりますm(_ _)m #!/bin/sh find ./ -name "*.png" -print > /tmp/thumb-file-list #PNG画像ファイルをリストアップ for file in `cat /tmp/cache-file` #リストアップされたファイルから順に処理 do res=`expr $file : "\(.*\).png"` convert -background white -flatten $file $file imagescale=`identify $file | egrep -o '[[:digit:]]*x[[:digit:]]*\ '| tr -d "\ "` #ImageMagickを使って"幅x高さ"の書式で画像の大きさを取り出す declare -i width width=`echo -n $imagescale |sed 's/x.*//'` #"幅x高さ"から幅の部分のみを取り出す declare -i height height=`echo -n $imagescale |sed 's/.*x//'` #"幅x高さ"から高さの部分のみを取り出す if [ $width -lt 96 -o $height -lt 96];then #縦横いずれかが96ピクセル以下の画像はnautilus上でそのまま表示される mogrify -format jpg -quality 80 $file #PNGをJPGに変換 mv $res.jpg $res.png #拡張子をPNGに偽装し、本来あったPNGに上書き保存 else mogrify -resize 75% -format jpg -quality 80 $file mv $res.jpg $res.png fi done cat /tmp/thumb-file-list >> thumb-cache-file #(未着手)次回の変換時に偽装されたJPGを再エンコードしないように変換した分を記録
883 名前:login:Penguin mailto:sage [2009/02/24(火) 18:51:30 ID:0/zaoYuK] >>882 > find ./ -name "*.png" -print > ***/tmp/thumb-file-list*** #PNG画像ファイルをリストアップ > for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理 読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。 一行目を #!/bin/sh -x にするか $ sh -x convert-thumbnail2jpg.sh とかやって頑張れ。 > if [ $width -lt 96 -o $height -lt 96];then ] の前にスペースを入れないとエラーになるはず。 $ sh -x $ A=1 ; if [ "$A" = "1"]; then echo OK ; fi + A=1 + '[' 1 = '1]' sh: [: missing `]'
884 名前:882 mailto:sage [2009/02/24(火) 19:03:27 ID:mkgOQJW+] >> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理 >読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。 恥ずかしい間違いをしてしまってすみません… 一時ファイルに自分用に適当なファイル名を付けてしまっていたので、 ここに投稿する際に勝手に変更してました(元スクリプトは両方共/tmp/cache-file) -xで内容が詳しく見られるようですね。もう少し頑張ってみます…
885 名前:882 mailto:sage [2009/02/24(火) 19:13:26 ID:mkgOQJW+] 1行目を #!/bin/bash にして、実行する際も$bash convert-thumbnail2jpg.sh と打つことで解決しました。 shではdeclareが使えず、bashでは使えるようです お騒がせして申し訳ありませんでしたm(_ _)m
886 名前:883 mailto:sage [2009/02/24(火) 20:34:08 ID:0/zaoYuK] >>884 > (元スクリプトは両方共/tmp/cache-file) スクリプトの中で何回か使うものなら cachefile="/tmp/cache-file" とかやって定義してしまったほうがいいと思う。
887 名前:882 mailto:sage [2009/02/25(水) 01:46:08 ID:TZfMttNn] >>886 おかげさまで無事完成しました ありがとうございましたm(_ _)m
888 名前:login:Penguin [2009/02/26(木) 17:54:06 ID:fuSH76wo] 関連スレ シェルスクリプトでGUI pc11.2ch.net/test/read.cgi/tech/1235483221/
889 名前:login:Penguin mailto:sage [2009/02/27(金) 02:01:52 ID:+MZ66A9I] bash4.0 導入した人誰かいまつか ? RHEL5.3 make で error orz...
890 名前:login:Penguin mailto:sage [2009/02/28(土) 00:15:37 ID:2KTcWABE] とりあえず使えてるぞ ubuntu8.10 GNU bash, version 4.0.0(1)-release (x86_64-unknown-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <gnu.org/licenses/gpl.html>
891 名前:login:Penguin mailto:sage [2009/02/28(土) 00:25:54 ID:i9TaSY11] >>890 /bin/bash を置き換えたんですか?
892 名前:login:Penguin mailto:sage [2009/02/28(土) 00:31:49 ID:2KTcWABE] /usr/local/に置いただけ 俺には3.2と4.0の違いはあまり関係ないということがわかった
893 名前:login:Penguin mailto:sage [2009/02/28(土) 07:37:33 ID:zB5vZ6QQ] bashのバージョンに依存したスクリプトは趣味でやる以外はあんまり書かないと思うけど
894 名前:login:Penguin mailto:sage [2009/02/28(土) 11:00:16 ID:Tf6NC8nk] bashのバージョンに依存しないスクリプトって、ほぼ/bin/shか。
895 名前:login:Penguin [2009/03/01(日) 14:21:53 ID:b0tpnlkt] "A B C D E F"を "B A D C F E"にしたり、 A B C D E F を B A D C F E にしたりできますか? つまり、AとBを入れ替え、CとDを入れ替え・・・ってな具合です。
896 名前:login:Penguin mailto:sage [2009/03/01(日) 14:54:34 ID:yaPGqr8Y] >>895 宿題乙。 一行タイプのやつ sed -e 's/ /\ /g' | sed -e '1~2{h;d};1~2!G' | xargs 複数行タイプのやつ sed -e '1~2{h;d};1~2!G'
897 名前:login:Penguin mailto:sage [2009/03/01(日) 15:06:32 ID:ClVN3cK/] >>895 echo 'A B C D E F' | tr 'ABCDEF' 'BADCFE'
898 名前:login:Penguin mailto:sage [2009/03/01(日) 16:12:08 ID:jusYIGdM] bash3 とbash4 って互換性大丈夫でしょ。
899 名前:login:Penguin mailto:sage [2009/03/01(日) 16:45:01 ID:b0tpnlkt] >>896 >>897 素晴らしい!! 吹雪の最中に神が現れて、いきなり春になったような心境です。 ありがとうございました。
900 名前:login:Penguin [2009/03/05(木) 13:25:03 ID:k1KCKSK5] 原子番号を元素記号に変換してください。 例) 8 → O 26 → Fe 92 → U
901 名前:login:Penguin mailto:sage [2009/03/05(木) 15:44:08 ID:7EIm6RPk] >>900 宿題は自分でやれ。
902 名前:login:Penguin [2009/03/05(木) 15:55:50 ID:3/9eCgJO] まず原子番号とそれに対応する元素記号の テーブルを作成するところからはじめよう。
903 名前:login:Penguin [2009/03/05(木) 23:21:24 ID:BnKU6WpI] 水素なら w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | awk '$1 ~ /^1$/{print $3} ヘリウムなら/^1$/を/^2$/に変える。
904 名前:login:Penguin mailto:sage [2009/03/05(木) 23:24:25 ID:feEdgCm8] echo O > 8 echo Fe > 26 echo U > 92 cat %1 俺天才かもしれん。
905 名前:login:Penguin mailto:sage [2009/03/05(木) 23:25:16 ID:feEdgCm8] 間違えた。。。 cat $1だ。
906 名前:login:Penguin mailto:sage [2009/03/05(木) 23:35:39 ID:BnKU6WpI] #!/bin/bash #grepバージョン w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | grep "^"$1"[[:space:]]"
907 名前:login:Penguin mailto:sage [2009/03/06(金) 00:15:22 ID:4E0LodKQ] >>903 つ awk -v x=番号 '$1 ~ "^" x "$" { print $3 }'
908 名前:login:Penguin mailto:sage [2009/03/06(金) 02:41:09 ID:0+Otyqrv] 全部if文でやれ。
909 名前:login:Penguin mailto:sage [2009/03/06(金) 11:10:42 ID:Es9Fr0vK] w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | perl -ane 'for (1..118) { print "$_: $F[2]\n" if $F[0]=~/^$_$/;}'
910 名前:login:Penguin mailto:sage [2009/03/06(金) 19:13:45 ID:m/0+PDHQ] 一覧表示でいいなら、これが楽だろ w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | awk '/^[0-9]/{print $1,$3}'
911 名前:login:Penguin [2009/03/06(金) 20:23:52 ID:+R69oXB9] こんなの波動だ #!/bin/bash echo 原子番号は syuuki=~/syuuki w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 |awk '/^[0-9]/{print $1,$3}' - >$syuuki read genso echo 原子番号$gensoの元素記号は`grep $genso ~/syuuki`です。 grepが未完成 記号だけにしたい。
912 名前:login:Penguin mailto:sage [2009/03/06(金) 22:47:09 ID:tq3ZQvrP] echo 原子番号$gensoの元素記号は`ruby -ane 'BEGIN{genso = ARGV[1]}; if $F[0] == genso; p $F[1]; break; end' ~/syuuki $genso`です。
913 名前:login:Penguin mailto:sage [2009/03/07(土) 09:01:58 ID:Qelg+V+C] 「原子番号」「の元素記号は」などと書かんでいいから、 改行を入れて見やすくしろ、カス。
914 名前:login:Penguin mailto:sage [2009/03/07(土) 20:47:19 ID:zmyZifQf] というかレポートに出すんだからさ もっと初心者っぽく書いてください 期限は明日までです ↓
915 名前:login:Penguin mailto:sage [2009/03/07(土) 21:07:11 ID:cObxxbWz] よし! やっぱり自分でやろう! みなさんすいませんでした。忘れてください
916 名前:login:Penguin mailto:sage [2009/03/07(土) 21:41:55 ID:pgHRyspE] >>914 >>915 w3m -dump d.hatena.ne.jp/keyword/%BB%E0%A4%CD%A4%D0%A4%A4%A4%A4%A4%CE%A4%CB | grep "^.ね.*に$"
917 名前:login:Penguin [2009/03/08(日) 16:51:10 ID:xQcHQnf7] Perlがあればシェルスクリプトなんて要らない Perlのほうが高機能だから
918 名前:login:Penguin mailto:sage [2009/03/08(日) 17:20:38 ID:J6Fw6OuS] Perl は外部コマンド一つ呼ぶのにいちいち system() とか書かなきゃいけない時点で問題外でしょ。 シェルスクリプトは外部コマンドの呼び出しがとても多いんだから、文法レベルでサポートされてないとやってられない。
919 名前:login:Penguin mailto:sage [2009/03/08(日) 18:43:54 ID:4ovvgVHR] $date = `date`;
920 名前:login:Penguin mailto:sage [2009/03/08(日) 19:34:58 ID:J6Fw6OuS] ごめん、見直した。
921 名前:login:Penguin [2009/03/10(火) 18:06:25 ID:IwU0KhJ5] シェルスクリプトってOOじゃないんでしょ? ダサっ Perl使えない落ちこぼれが使う言語、それがシェルスクリプト
922 名前:login:Penguin mailto:sage [2009/03/10(火) 19:16:49 ID:ZRv0wOpe] xargsとsedで文字列加工をしようとしたがうまくいきません コマンド|xargs -n 1 sed 〜 だとコマンドの出力内容がファイル名として解釈されるし コマンド|xargs -n 1 echo|sed 〜 だとxargsがない場合と同じ動作になります 別にシェルスクリプトを echo ${1}|sed 〜 と作って コマンド|xargs -n 1 スクリプト とすると sed -e "s/〜 の s が未定義と怒られる 他に方法はありますか?
923 名前:login:Penguin mailto:sage [2009/03/10(火) 21:34:04 ID:t8WYWXe4] >>921 OO という観点で議論するなら perl じゃなくて もっとまともな言語と比較しろよ。
924 名前:login:Penguin mailto:sage [2009/03/10(火) 21:51:10 ID:hrcV3cEG] >>922 sed 〜 `コマンド` とか?
925 名前:login:Penguin mailto:sage [2009/03/10(火) 22:33:24 ID:HaCEu7vE] >>921 よりによって最も汚いOOを持つ言語を引っ張り出してきたな。。。
926 名前:login:Penguin mailto:sage [2009/03/10(火) 23:10:33 ID:XmHUdl+t] 317 名前:名無しさん@お腹いっぱい。 []: 2009/03/10(火) 18:05:12 シェルスクリプトってOOじゃないんでしょ? ダサっ
927 名前:login:Penguin [2009/03/10(火) 23:13:24 ID:21j8Lv5u] そもそも、ほとんどの処理を外部のコマンドに投げているのに OOはどういうことなのだろうか?
928 名前:login:Penguin mailto:sage [2009/03/10(火) 23:17:44 ID:wgUyESoz] >>922 同僚に聞いてみたんだが、xargs なしだとだめなの? たとえば、ファイル名の置換なら $ find . -print|sed -e "s/〜 になると思うんだけど。 (for i in `find .`〜 のほうが使いやすいと思うが) それか $ コマンド|xargs -i echo {}|sed -e "s/〜 とか? コマンドのところとか、sed で何をしたいのかを明確に してもらえればもうちょっと回答のしようがあると思う。
929 名前:922 mailto:sage [2009/03/10(火) 23:39:56 ID:ZRv0wOpe] >>924 コマンドの結果がファイル名として認識されました。 >>928 xargsなしで今はやっています。 メイク時の出力内容をVC方式に変換するために文字列を以下のように変換しています。 make debug 2>&1 | sed -e "s/:\([0-9][0-9]*\):/(\1):/g" | sed "s/[/]/\\\/g" | sed "s/^/c:\\\cygwin\\\home\\\\${USER}\\\\${PROJNAME}\\\source\\\/g" ただし、今の状態だとメイクが完了するまで出力がされないため、 メイクがどの程度進んでいるかの確認や、エラー/ワーニングにすぐ対応できないのです。 また、できれば2の出力だけをパイプに流したいのですが、方法はありますか? (1は普通に画面表示) イメージは make debug 2>( xargs -n 1 echo|sed 〜) です。 ちなみに コマンド|xargs -i echo {}|sed -e "s/〜 は c:\cygwin\home\ユーザ名\プロジェクト名\source\{} 出力された文字列 となり、うまくいきませんでした。 # echo "{} 文字列" と認識された?
930 名前:login:Penguin mailto:sage [2009/03/11(水) 02:34:25 ID:LOMFWb0Z] >>929 xargs -iの後の{}は'{}'みたくエスケープしないとダメなんじゃないの?
931 名前:login:Penguin [2009/03/11(水) 08:59:36 ID:DFgGOxJ9] Windows PowerShellはOOなのに シェルスクリプトはOOじゃないんだよね 時代遅れだね
932 名前:login:Penguin mailto:sage [2009/03/11(水) 14:33:02 ID:Z5TO7Bpy] >>929 >211 sed -u 〜
933 名前:login:Penguin mailto:sage [2009/03/11(水) 21:43:30 ID:bm/c4JTk] >>931 死ぬほど使いにくいけどな。WindowsPowerShell。
934 名前:login:Penguin mailto:sage [2009/03/11(水) 22:32:39 ID:q2e6tqEw] つか、オブジェクト指向が反省されている今になって、何を時代錯誤な事を言ってる人なんだ。
935 名前:login:Penguin mailto:sage [2009/03/13(金) 11:15:15 ID:6BZk1deA] c++やjavaのoopはあまり良いものではないからね。 特にjavaでしかoopを知らない人って、なんでもかんでもオブジェクト にしてしまうだろうし、あれは非効率的なんだよね。 oopも使えるというならそれはそれでいいけどシェルスクリプトの延長線上 にrubyやperlがあるから、oopに拘るならばそっちを使えばいいだけのはなしだよね。
936 名前:login:Penguin mailto:sage [2009/03/18(水) 18:33:49 ID:RWYXndAF] くだ質の763に、du -hの結果をサイズ順にソートしたいってのがあった。 $ df -h 20K ./foo 8.0K ./bar 5.1M ./hoge 元質問者は勘違いってことで解決してるんだけど、これをカッコよく1 linerで実現する方法はあるんだろうか? 置換して〜ソートして〜とか、泥臭い方法しか思いつかない...
937 名前:login:Penguin mailto:sage [2009/03/19(木) 00:49:00 ID:Ex8kaKKQ] >>936 -h外して後で1024の倍数掛ければいい
938 名前:login:Penguin mailto:sage [2009/03/19(木) 01:30:46 ID:1vjKEAU9] 俺もそう思うけど、 >>936 が話題にしているのは、たぶんdfに限らず、単位を接尾辞とした小数数字を如何にsortするかじゃないかな。
939 名前:login:Penguin mailto:sage [2009/03/19(木) 01:33:02 ID:VEb9NHr7] そーじゃなくて>>936 の出力をソートするスクリプトがあるか、だろう おれも置換したりしないと出来値
940 名前:login:Penguin mailto:sage [2009/03/19(木) 01:34:48 ID:gobNSPAB] >>937 -hは前提条件でお願い。します。
941 名前:login:Penguin mailto:sage [2009/03/19(木) 01:36:54 ID:dcED7bZL] しかしdu -h も微妙なコマンドだな KつきMつきで見たいやつが大半だろうにソートもできるようにしてくれよって気が
942 名前:login:Penguin mailto:sage [2009/03/19(木) 03:20:47 ID:yCb470li] bashで引数が0-9の間ならダンプレベルに設定しようとしています if [ -n $1 ]; then if [ $1 -ge 0 -a $1 -le 9 ]; then dlevel=$1 fi fi これを実行すると引数が無いときと 引数が数字以外のときにエラーメッセージが出てしまいます 引数が数値かどうかチェックする方法がないでしょうか? よろしくおねがいします $ ./dump.sh ./dump.sh: line 22: [: too many arguments $ ./dump.sh 3 dlevel=3 期待通りの動き $ ./dump.sh fufufu ./dump.sh: line 22: [: fufufu: integer expression expected
943 名前:login:Penguin mailto:sage [2009/03/19(木) 04:02:43 ID:3RRVnfG+] if [ -n "$1" ]; then if expr "$1" : '[0-9][0-9]*$'; then
944 名前:login:Penguin mailto:sage [2009/03/19(木) 04:04:43 ID:M6oJqh1N] case "$1" in [0-9]) dlevel="$1" ;; esac
945 名前:login:Penguin mailto:sage [2009/03/19(木) 04:57:28 ID:yCb470li] >>943 , 944 どうもありがとうございます caseの方を採用させていただきました
946 名前:login:Penguin mailto:sage [2009/03/19(木) 13:59:30 ID:KDP/tv8i] >>937-941 やぱしそれなりに泥臭いやり方しかないですかね? 最初、sortはバッファサイズ変更時に GBとかMBとか見てくれるんだからきっと、とか思ったのに。
947 名前:login:Penguin mailto:sage [2009/03/19(木) 14:48:56 ID:+WS3QA7Q] -h 外せば済む話なのに 苦労してスクリプト書く意味がわからん。
948 名前:login:Penguin mailto:sage [2009/03/19(木) 15:44:21 ID:VEb9NHr7] 目的が「duの結果をソートしたい」じゃなくて「このテキストを(意味を考えて)ソートしたい」だと何度(ry
949 名前:login:Penguin mailto:sage [2009/03/19(木) 15:54:38 ID:QnAt/IUj] >>948 dfかduかはっきりしてくれ。duならxduをつかっとけ。MやGよりも視覚的にサイズを 表現してくれた方が分かりやすい。もちろんソートできる。
950 名前:login:Penguin mailto:sage [2009/03/19(木) 19:05:34 ID:KDP/tv8i] >>949 元質問はオレなんだが、>>948 のとおり、別にduでもdfでもなく、GとかMとかのサイズ指定で かつ小数点付きのを、どうソートするか、というのが意図だったわけで。 質問の仕方がまずいのは認める。すまん。
951 名前:login:Penguin [2009/03/20(金) 10:34:47 ID:OD1Bm4W7] シェルスクリプトで開発したツールをshcでコンパイルしたとして、 それがシェルスクリプトだとバレることってありますか? もちろん調べればわかるでしょうけど 一般的なエンドユーザの能力ではどうでしょうか?
952 名前:login:Penguin mailto:sage [2009/03/20(金) 11:49:16 ID:vtofDqpI] >>951 つ chmod 311 a.out
953 名前:login:Penguin mailto:sage [2009/03/20(金) 21:45:28 ID:Pky/qqR2] tar
954 名前:login:Penguin mailto:sage [2009/03/20(金) 21:46:03 ID:Pky/qqR2] tar tvf filename.tar の結果をファイル名順にソートするにはどうすればいいでしょうか?
955 名前:login:Penguin mailto:sage [2009/03/20(金) 21:54:15 ID:vtofDqpI] sort -k 6
956 名前:login:Penguin mailto:sage [2009/03/20(金) 22:29:18 ID:Pky/qqR2] >>955 ありがとうございます。以下で出来たと思います。 tar tvf filename.tar | sort -k 6 ファイル名が9番目に来ることがあるのは、OSによるものでしょうか?
957 名前:login:Penguin mailto:sage [2009/03/20(金) 22:30:46 ID:vtofDqpI] ロケール依存じゃね? 日付の表示
958 名前:login:Penguin mailto:sage [2009/03/20(金) 22:45:25 ID:Pky/qqR2] >>957 なるほど、ありがとうございます。 当初の質問とズレますが ls -lRのディレクトリ名が 職場の環境では temp: となり 自宅では ./temp: となるのもロケール依存の問題でしょうか?
959 名前:login:Penguin mailto:sage [2009/03/20(金) 23:54:41 ID:vtofDqpI] ls -lR temp ls -lR の違いって事はない?
960 名前:login:Penguin mailto:sage [2009/03/21(土) 10:08:06 ID:/JVnxKfV] >>959 引数にディレクトリを指定せずに>>958 の違いがでます。 OSは職場がAIXで、自宅がCentOSです。 結果のリストをテキストファイルに出力してプログラムで利用しているので、 フォーマットが違うと問題があるのですが、 行末に「:」があればディレクトリと認識したり、リストのフォーマットに応じたプログラムを 書けばいいのかなと思います。 親切にありがとうございました。
961 名前:login:Penguin mailto:sage [2009/03/21(土) 13:39:10 ID:ZdP11rWE] AIXならコードベースが違うから、細かい書式も違うだろうね。 find . -printあるいはfind . -lsの結果を利用した方がいいかもね。 こっちは加工されることを前提とした出力だから。 ls -lRはそうじゃない。
962 名前:login:Penguin [2009/03/24(火) 21:43:58 ID:vhkRQKv/] bash で、複数の戻り値を返すにはどうやる? func foo() { return VAL1 VAL2 } (VAL1, VAL2)=$(foo) こんなのがやりたいんだけど。 今まで思いついた例では、 1、ファイル経由で帰す。 echo $VAL1 >/tmp/$PID.val1 echo $VAL2 >/tmp/$PID.val2 可能だけどちょっと無駄。 2、readをつかう。 #!/bin/bash $(foo) | read VAL1 VAL2 やってみたけど、動かない。なんとかしてくれ!。
963 名前:login:Penguin mailto:sage [2009/03/24(火) 22:07:39 ID:fdZEc0lM] returnで返すことにこだわる意味があるん? VAL1 VAL2 に関数内で値つっこめばいいだけじゃないの? グローバル変数がどうのとか、シェルで気にする必要ないだろと個人的に思うし。
964 名前:login:Penguin mailto:sage [2009/03/24(火) 22:13:47 ID:JcSO3hFa] >>962 ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html >関数ローカルの変数は、組み込みコマンド local で宣言できます。 >普通は、変数とその値は関数とその呼び出し側で共有されます。
965 名前:962 [2009/03/24(火) 23:09:01 ID:vhkRQKv/] グローバル変数で受け渡し? んまあそうなんですけど、 なんでもグローバルという、BASIC言語みたいなのは生理的にイヤ。 可能な限り普段から全部 local 宣言つけてますので。 なんとか、return VAL_A VAL_B とかムリっすか?
966 名前:login:Penguin [2009/03/24(火) 23:27:22 ID:JcSO3hFa] >>965 無理 > return [n] > 指定した返り値 n で関数を終了させます。 > n を省略すると、返却ステータスは関数内で最後に実行したコマンドの返却ステータスになります。 スクリプトを分けて標準入出力で受け渡すくらいしか思いつかん
967 名前:login:Penguin mailto:sage [2009/03/24(火) 23:31:50 ID:elKnmt6d] 俺も昔戻り値二つ返したかったが諦めたことがある。 泣く泣くグローバルにした。
968 名前:login:Penguin mailto:sage [2009/03/24(火) 23:32:20 ID:LPmFGK87] >>965 無理矢理だけどこんなことは出来る。 foo () { echo "$VAL1 $VAL2" } VALS=(`foo`) VAL1=${VALS[0]} VAL2=${VALS[1]}
969 名前:login:Penguin mailto:sage [2009/03/25(水) 12:00:35 ID:ZZ2mmRGj] グローバル変数がイヤならばそもそも sh じゃなくて別のスクリプト言語で書け。 そういう言語なんだからあきらめて受け入れろ。 無理に技巧をこらしたところで逆に可読性を落とすだけ。
970 名前:login:Penguin mailto:sage [2009/03/25(水) 12:15:44 ID:NaCjRRoe] >>969 そうおもう。perlでもrubyでもgaucheでもいいから。 でも、延長線上で使えるrubyのほうが馴染みやすいかも
971 名前:login:Penguin mailto:sage [2009/03/25(水) 12:23:07 ID:uD+uLQB8] >>962 > return VAL1 VAL2 < echo VAL1 VAL2 してreadしる
972 名前:login:Penguin mailto:sage [2009/03/25(水) 17:28:54 ID:GtIifwrA] /tmpに書け
973 名前:login:Penguin mailto:sage [2009/03/26(木) 15:32:50 ID:3e22XvSN] シェルスクリプトを始めて勉強するのですが、 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界(www.amazon.co.jp/dp/4797321946 ) と UNIXシェルスクリプトコマンドブック(www.amazon.co.jp/dp/4797330635 ) どちらで勉強するのが良いでしょうか?
974 名前:973 mailto:sage [2009/03/26(木) 15:33:45 ID:3e22XvSN] ×始めて ○初めて orz
975 名前:login:Penguin mailto:sage [2009/03/26(木) 16:30:55 ID:5RpvIQgk] 入門bashがオヌヌメ
976 名前:login:Penguin mailto:sage [2009/03/27(金) 00:19:45 ID:hx4pY+SP] どれでもいっしょでヌメヌメ
977 名前:login:Penguin mailto:sage [2009/03/27(金) 01:38:27 ID:SSuQKmC1] >>976 >>975 ありがとうございます。 まずは>>975 さんにヌメヌメして頂いた入門Bashから勉強していきたいと思います。
978 名前:login:Penguin mailto:sage [2009/03/27(金) 02:32:52 ID:3RSixa0K] つ「全部」
979 名前:login:Penguin mailto:sage [2009/03/29(日) 04:23:46 ID:k6vYgSJE] とあるディレクトリ以下に存在する 特定の拡張子のファイルのみについてファイルサイズの合計を知りたい場合、 最もマシンに負荷を与えずに結果を出すにはどの方法が適しているでしょうか? ・ duコマンドだと除外パターンのパラメータしかない ・ lsの結果の拡張子でgrepした後、ファイルサイズ部分をawkしてexprで足し算だと負荷が結構かかる という感じで、もっとサクっと結果を軽い処理で出せるような気がするんですが・・・。
980 名前:login:Penguin mailto:sage [2009/03/29(日) 05:38:56 ID:RIZc4nP9] findとawkで
981 名前:login:Penguin mailto:sage [2009/03/29(日) 07:07:03 ID:HsEQt0tU] >・ lsの結果の拡張子でgrepした後、ファイルサイズ部分をawkしてexprで足し算だと負荷が結構かかる expr要るのか? ls -Rl | grep "\.suffix" | awk '{size += $5} END {print "total " size}' find -name \.suffix -printf "%s\n" | awk '{size += $1} END {print "total " size}'
982 名前:login:Penguin mailto:sage [2009/03/29(日) 15:49:16 ID:HhnBqalt] >-name \.suffix o... rz
983 名前:login:Penguin mailto:sage [2009/03/30(月) 08:01:30 ID:4/oTu4d/] 10台くらいサーバセットアップする必要があり、 それぞれのapacheの設定ファイルのIP部分だけ変えたいのですが、 何かシンプルで良い方法ってあるでしょうか? 環境変数設定kono_server_no_ipを設定して、 sedあたりで設定ファイルのIP部分をkono_server_no_ipに置換処理、 みたいな感じをぱっと思いついたのですが、 もっとベターな方法ってあるでしょうか?
984 名前:login:Penguin mailto:sage [2009/03/30(月) 10:33:16 ID:rBZKWvDE] >>983 まずサーバ毎の環境変数(kono_server_no_ip)の設定はどうやるの? 環境変数の設定をエディタでやったら本末転倒だよね? 「このIP」が自分自身のipアドレスでいいなら、ifconfigで取得してsedで置換。 あと、シンプルじゃなくていいならPuppetとか。