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 あたりに色々と。
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で勉強してるのですが 簡単なスクリプトから初めて、レベル上げながら演習できるようなサイトってないですか? 入門用のページは変数の説明やループ制御文の説明など あまり実践向きではないので、実際に作りながら理解できるサイトを探しています