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 あたりに色々と。
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の後の{}は'{}'みたくエスケープしないとダメなんじゃないの?