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 あたりに色々と。
831 名前:login:Penguin mailto:sage [2008/03/24(月) 06:30:29 ID:bi7lOxG6] zshだが許せ。 for n in {1..100073}; mv お宝画像($n).jpg ero-pic`printf %06d $n`.jpg
832 名前:login:Penguin mailto:sage [2008/03/24(月) 10:57:24 ID:62iD1Dht] >>817 >>820 >>827 >>829 >>826 =>>828 だけど、ええとそれってシェルスクリプトで使えるの? /usr/bin/rename が置き換えられているとか? どうなっているんだろう。 >>830 うちでは動かないようだ。 日本語が混じるとためかな。あとかっことか。 で結局こうやったのだけど。 $ls | sed s/.*\(//g | sed s/\).*//g | awk '{printf("mv \"お宝動画(%d).jpg\" \"ero-pic%06d.jpg\"\n",$1,$1)}' | sh 前やったときはawkの代わりにcのプログラムでやってた。まぁawkでも同じか。
833 名前:login:Penguin mailto:sage [2008/03/24(月) 10:57:58 ID:62iD1Dht] >>831 zshって便利そうだね。
834 名前:login:Penguin mailto:sage [2008/03/24(月) 22:35:08 ID:7MP5JU0g] >>813 いろんなやり方があるけど、スクリプト内でいきなりmvなりrenameして 失敗すると悲劇なので、 mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像2.jpg" "新しいお宝画像2.jpg" mv "旧いお宝画像3.jpg" "新しいお宝画像3.jpg" mv "旧いお宝画像4.jpg" "新しいお宝画像4.jpg" mv "旧いお宝画像5.jpg" "新しいお宝画像5.jpg" mv "旧いお宝画像6.jpg" "新しいお宝画像6.jpg" (以下略) みたいに一旦テキストに落として、それざっと眺めてからshで流しなおしたほうが良いよ。 以前、 mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像2.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像3.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像4.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像5.jpg" "新しいお宝画像1.jpg" mv "旧いお宝画像6.jpg" "新しいお宝画像1.jpg" (中略) mv "旧いお宝画像1000.jpg" "新しいお宝画像1.jpg" ってやっちゃった(´・ω・`)
835 名前:login:Penguin mailto:sage [2008/03/24(月) 23:31:47 ID:If29/JKD] >>798 なんて頭の悪い…
836 名前:login:Penguin mailto:sage [2008/03/24(月) 23:35:42 ID:If29/JKD] >>819 > perl版renameというのは普通のrenameとは違いますよね?多分。 renameがperl版renameじゃないUNIX類って具体的には何があります? UNIX類じゃないけど、VMSはそうでした。
837 名前:login:Penguin mailto:sage [2008/03/25(火) 00:24:28 ID:FMsixLid] >>832 > 日本語が混じるとためかな。あとかっことか。 括弧の方だな。すまん。クォートするなりしてやってくれ。
838 名前:login:Penguin mailto:sage [2008/03/25(火) 00:44:35 ID:Mm1m5DLO] >>836 $ whereis rename rename: /usr/bin/rename $ less /usr/bin/rename "/usr/bin/rename" may be a binary file. See it anyway? 多分debianが変わり者では?
839 名前:login:Penguin mailto:sage [2008/03/25(火) 00:50:23 ID:6V9ksjI9] >>836 util-linux に入ってるよ。
840 名前:login:Penguin mailto:sage [2008/03/25(火) 00:56:57 ID:ukA1etix] そういやDebianはprenameとかいう名前になってんだっけね? 古典的なLinuxはこのrenameなのかな。 /* * rename.c - aeb 2000-01-01 * -------------------------------------------------------------- #!/bin/sh if [ $# -le 2 ]; then echo call: rename from to files; exit; fi FROM="$1" TO="$2" shift shift for i in $@; do N=`echo "$i" | sed "s/$FROM/$TO/g"`; mv "$i" "$N"; done -------------------------------------------------------------- * This shell script will do renames of files, but may fail * in cases involving special characters. Here a C version. */
841 名前:login:Penguin mailto:sage [2008/03/25(火) 01:44:34 ID:Mm1m5DLO] >>840 古典的なLinuxというより一般的な普通のLinuxはそうだろうな。 Here C Version.のほうな。 d.hatena.ne.jp/takunama/20061123/rename d.hatena.ne.jp/moriyoshi/searchdiary?word=*%5Bdebian%5D debianのrenameは/usr/bin/prenameへのリンクで prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト つーのが真相らしい。perl版renameはdebianの方言つーことだわな。困ったもんだね。
842 名前:login:Penguin mailto:sage [2008/03/25(火) 01:51:01 ID:uIxNik7B] それ自身はポータブルなPerlスクリプトだから もし使いたかったら$HOME/binあたりに突っ込めばいいんじゃない
843 名前:login:Penguin mailto:sage [2008/03/25(火) 02:00:22 ID:+i6zdHek] >>813 ls -1 ero_dir | sort | ruby -nle 'printf "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
844 名前:login:Penguin mailto:sage [2008/03/25(火) 02:03:33 ID:+i6zdHek] 訂正orz ls -1 ero_dir | ruby -nle 'print "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
845 名前:login:Penguin mailto:sage [2008/03/25(火) 02:05:27 ID:6V9ksjI9] >>841 > prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト ↓だってさ。 # This script was developed by Robin Barker (Robin.Barker@npl.co.uk), # from Larry Wall's original script eg/rename from the perl source.
846 名前:login:Penguin mailto:sage [2008/03/25(火) 03:45:05 ID:mfggD9uB] ラクダ本のだってのはだいぶ上の方で言及されとるがな。
847 名前:login:Penguin mailto:sage [2008/03/25(火) 06:52:15 ID:Mm1m5DLO] >>845 prenameは Debian のパッケージメンテナが独自に 「the perl source(perlのオルジナルセット、いわゆるラクダ本)」から パッケージ生成時に追加したスクリプト、つーことですね。 /usr/bin/renameがC版の代わりにこれで置き換えて拡張してあるのが debianの方言ということで。 実はラクダ本のやつは見たことがあるな。
848 名前:login:Penguin mailto:sage [2008/03/25(火) 17:01:59 ID:7L4Qk+Sn] ・>>840 にある元のシェルスクリプトはsed版正規表現を理解する ・Here a C versionは正規表現を全く理解しない ・perl版はperl版正規表現を理解する というわけでLinuxでも三種類あるんですね。
849 名前:login:Penguin mailto:sage [2008/03/25(火) 17:59:25 ID:Mm1m5DLO] こういう微妙な違いってひょっとするとトリごとに結構あるのかもしれないね。 スレからはずれるけど、apache/httpdのコンフィグがバージョン系列は 一緒なのにDebian系(ubuntuも)とRH系(RedHat/Fedora/CentOS)で まるっきり違ってて面くらったことがある。
850 名前:login:Penguin mailto:sage [2008/03/25(火) 18:02:21 ID:IQ4Jbr/0] コマンドなんかもちょっと違うくらいだから、設定ファイルの書き方なんて違っていて当たり前。
851 名前:login:Penguin mailto:sage [2008/03/26(水) 21:17:50 ID:B6BxqxUi] ツリー表示について find / -type d|sort|sed -ne'1b;s/[^\/]*\//┗━━/g;s/┗━━┗━━/┃ ┗━━/g; s/┗━━┗━━/┃ ┗━━/g; s/┗━━┃/┃ ┃/g;p' これだと下記のような表示になるのですが ┗━━proc ┃ ┗━━1 ┃ ┃ ┗━━attr ┃ ┃ ┗━━fd ┃ ┃ ┗━━task ┃ ┃ ┃ ┗━━1 ┃ ┃ ┃ ┃ ┗━━attr ┃ ┃ ┃ ┃ ┗━━fd ┃ ┗━━1106 ┃ ┃ ┗━━attr 不要な線を無くして見栄えを良くしたいのですが、何か良い方法はありませんでしょうか ┗━━proc ┃ ┗━━1 ┃ ┃ ┗━━attr ┃ ┃ ┗━━fd ┃ ┃ ┗━━task ┃ ┃ ┗━━1 ┃ ┃ ┗━━attr ┃ ┃ ┗━━fd ┃ ┗━━1106 ┃ ┃ ┗━━attr
852 名前:login:Penguin mailto:sage [2008/03/26(水) 21:52:30 ID:f9ufLLgD] よくわからんけど tree -dA じゃダメなの?
853 名前:851 mailto:sage [2008/03/26(水) 22:04:51 ID:B6BxqxUi] そういうコマンドがあるのは知ってるのですが # which tree /usr/bin/which: no tree 残念なことに入ってないんです。 いろいろ調べまわった結果がこれなんです。 もう少し自分でも調べてきます。
854 名前:login:Penguin mailto:sage [2008/03/26(水) 22:31:33 ID:f9ufLLgD] そうかtreeのないトリもあるのか。
855 名前:login:Penguin mailto:sage [2008/03/26(水) 23:21:22 ID:5Znd97qm] yumとかaptで入れられないっけ?
856 名前:login:Penguin mailto:sage [2008/03/27(木) 00:04:09 ID:ZXE2f6WU] >>853 PATH が通ってないだけとか。locate 辺りで調べてみたら? 他に何かあったっけ>探す方法
857 名前:851 mailto:sage [2008/03/27(木) 00:35:50 ID:yDbPGpUf] なんとか自己解決できました 下記のシェルスクリプトを「/usr/bin/tree」に置いて代用することにしました。 #!/usr/bin/perl use strict; my($top)=$ARGV[0]; if($top eq ""){ $top="."; } print "[$top]\n"; &tree("",<$top/*>); sub tree { my($bar,@dir)=@_; for my $i(0..$#dir){ my($bl1)=($i<$#dir)?"┣":"┗"; my($bl2)=($i<$#dir)?"┃":" "; my(@path)=split(/\//,$dir[$i]); if(-d $dir[$i]){ print "$bar $bl1 [$path[$#path]]\n"; tree("$bar $bl2",<$dir[$i]/*>); }else{ print "$bar $bl1 $path[$#path]\n"; } } } ちょっと中身を理解するのは難しいですけど、使いこなせたらperlも結構便利そうですね。
858 名前:login:Penguin mailto:sage [2008/03/27(木) 01:47:43 ID:nVTK+35Z] >>857 > 下記のシェルスクリプト ちょっとマテ
859 名前:login:Penguin mailto:sage [2008/03/27(木) 04:19:25 ID:LOwKjqa0] どう見てもシェルスクリプトでなくPerlスクリプトだなw ちなみに、鳥は何なの?
860 名前:851 mailto:sage [2008/03/27(木) 19:23:00 ID:yDbPGpUf] あ、確かにperlスクリプトですねw ちなみに鳥はCentOS4.6で、サーバー構築の勉強用で使ってます。 最小構成でインストールしたからtreeコマンドが入って無かったのかもしれないです。
861 名前:login:Penguin mailto:sage [2008/03/27(木) 19:43:49 ID:ysMS9Gn7] 美女の現われるスクリプトを教えて下さい。
862 名前:login:Penguin mailto:sage [2008/03/27(木) 19:56:21 ID:ORW3s1IJ] >>861 emerge beautiful_girl
863 名前:login:Penguin mailto:sage [2008/03/27(木) 23:51:02 ID:QsCLAAyg] >>851-857 pstreeだと思うんだ・・
864 名前:login:Penguin mailto:sage [2008/03/28(金) 00:18:06 ID:jk3nWqNP] >>863 find / だけど?
865 名前:login:Penguin mailto:sage [2008/03/28(金) 00:18:55 ID:deyesKz0] >>864 そだったw
866 名前:789 [2008/03/28(金) 01:42:56 ID:QgSpL7VJ] にやにや もりあがってんじゃねーかw
867 名前:login:Penguin mailto:sage [2008/03/28(金) 01:46:42 ID:deyesKz0] >>866 javascriptをjavaと呼ぶひと、こんばんはw
868 名前:login:Penguin mailto:sage [2008/03/28(金) 14:06:32 ID:Z7X2dF3N] cshで質問です。 下記のように変数をperlに渡したいんですが、変数を認識してくれません。 どうすれば良いですか? set hoge = funi perl -pe 'print $hoge' file
869 名前:login:Penguin mailto:sage [2008/03/28(金) 15:16:41 ID:KjmTtujq] >>868 シングルクォートをダブルクォートに変える
870 名前:login:Penguin mailto:sage [2008/03/28(金) 15:47:45 ID:Z7X2dF3N] >>869 ありがとうございます。 試してみましたが、ダメのようです。 setenvで与えると上手く行きましたが、setで出来る方法も知りたいです。
871 名前:login:Penguin mailto:sage [2008/03/28(金) 16:04:18 ID:UFHtgKJC] 無理。 あえてやるなら perl -e 'print "'"$hoge"'"' これはperlに print "funi" という式を渡したに等しい。
872 名前:login:Penguin mailto:sage [2008/03/28(金) 17:22:58 ID:Z7X2dF3N] >>871 ありがとうございます。 やってみたら出来ました。 意味は分かんないのでこれから調べてみようと思います。
873 名前:login:Penguin mailto:sage [2008/03/28(金) 17:26:00 ID:s6QtoqP9] csh じゃなきゃいかんの? sh 系で書いた方がいいんじゃない?
874 名前:login:Penguin mailto:sage [2008/03/29(土) 22:39:26 ID:Je2/7f5V] リダイレクト 「>&-」 (ディスクリプタ番号に 「-」 を指定した場合) の振舞いについて記述している manpage を探しています。 (manpage でなくともそれに準ずる文書であれば構いません) JM Project の bash(1) などや google で検索してみたのですが見つかりません。 >&- を使用しているシェルスクリプトは見つかりましたが、そこには正式な説明はありませんでした。 google って記号検索がとても弱いようなので シェルスクリプトとか GAME言語みたいな記号で頑張るタイプのを探すのは大変。 何か効果的な検索技があるんですかね。
875 名前:login:Penguin [2008/03/29(土) 22:48:22 ID:6BdICwv7] シェルスクリプトで連番を振る際に 1から100を1、2、3…ではなく 001、002、003…と出力させたい場合どうしたらよいでしょう? val=1 while $val lt 100 do echo $val val=expr`$val+1` done
876 名前:login:Penguin mailto:sage [2008/03/29(土) 22:53:17 ID:z7EKOxA5] >>875 for i in {0..9}; do printf "%03d\n" ${i}; done
877 名前:login:Penguin mailto:sage [2008/03/29(土) 22:57:09 ID:ZodWq0Ht] printfが嫌なら echo "000$i" | sed 's/0*¥(...¥)$/¥1/'
878 名前:874 mailto:sage [2008/03/29(土) 23:01:58 ID:Je2/7f5V] すみません。事故解決しました。 JM Project の bash(1) に記述されてました。
879 名前:875 [2008/03/29(土) 23:02:33 ID:6BdICwv7] >>876-877 凄まじくソッコーのレス ありがとうございます。 形式を指定してるってことくらいは分かりました。 調べてきます! ありがとございました。
880 名前:login:Penguin mailto:sage [2008/03/29(土) 23:06:18 ID:z7EKOxA5] >>875 単純に、必要な個数の名前のリストがありゃいいだけなら、 これでもいいと思う。 seq -f "moe_ero_guro_%03g.png" 0 9
881 名前:login:Penguin mailto:sage [2008/03/29(土) 23:16:52 ID:U1N+QPd9] >>876 {0..9} は bash3 じゃないと動かないはず。 まだ bash 2.05b の環境ってけっこうあるよね?
882 名前:login:Penguin mailto:sage [2008/03/29(土) 23:19:47 ID:ZodWq0Ht] seqは、あーここLinux板だからまず間違いなく入ってるな。
883 名前:login:Penguin mailto:sage [2008/03/29(土) 23:23:13 ID:ZodWq0Ht] seqだととびとびの値とかも作れるんだが、 単に連番がつくりたいとき個人的によくやるのは yes '' | cat -n | sed 100q とか。
884 名前:login:Penguin mailto:sage [2008/03/29(土) 23:30:36 ID:WiwCN3W0] seqって便利だね。知らんかった。 seq -f %03g 1 100
885 名前:login:Penguin mailto:sage [2008/03/29(土) 23:33:55 ID:z7EKOxA5] >>881 聞かれたから一応、答えておこう。そんな環境は知らん。 bash 2.05bなのはRHEL3かVineか、2005年ぐらいで閉鎖空間へ移行したやつだけだろ。
886 名前:login:Penguin mailto:sage [2008/03/29(土) 23:36:52 ID:WiwCN3W0] そうなのか。ある意味Vine恐るべしだな。
887 名前:874 mailto:sage [2008/03/29(土) 23:41:18 ID:Je2/7f5V] 組込系だったりすると bash どころか busybox ん中の sh (ash) だったりもする。 La Fonera の seq は -f オプションなんか無いので printf "%03d\n" `seq 1 10`
888 名前:login:Penguin mailto:sage [2008/03/30(日) 00:08:49 ID:36hI9fyL] この仕様は初めて知ったw $ printf "%03d%03d\n" 1 2 3 4 5 001002 003004 005000
889 名前:login:Penguin mailto:sage [2008/03/30(日) 00:34:47 ID:91o/3wOF] おまいらのseq には -w ってオプション無いの? seq -w 1 100
890 名前:874 mailto:sage [2008/03/30(日) 00:48:35 ID:VLE1BQAD] BusyBox v1.1.3 (2006.11.21-19:49+0000) multi-call binary Usage: seq [first [increment]] last Print numbers from FIRST to LAST, in steps of INCREMENT. -w ? そんなオプション見たこと無い。(笑)
891 名前:login:Penguin mailto:sage [2008/03/30(日) 15:18:36 ID:AAKkqqTb] 拡張子の変換ってどうやってる?俺は for f in *.hoge; do mv $f ${f%.hoge}.fuga done っていちいち打ち込んでるんだけど、なんかいい方法ない?
892 名前:login:Penguin mailto:sage [2008/03/30(日) 16:16:42 ID:SBrBro/C] >>891 過去ログ読め。
893 名前:login:Penguin mailto:sage [2008/04/01(火) 00:07:30 ID:mTzNKv6N] ニコ動の動画IDをwgetで落とせる直リンに変換するスクリプトないっすか?
894 名前:login:Penguin mailto:sage [2008/04/01(火) 00:12:45 ID:+SHNTduy] >>893 仕様出てるだろ。
895 名前:login:Penguin mailto:sage [2008/04/01(火) 00:12:57 ID:bWFHq2/G] >>893 nicovideo-dl
896 名前:login:Penguin mailto:sage [2008/04/01(火) 22:06:47 ID:Mk5CpRwr] $ oppai bash: oppai: command not found
897 名前:login:Penguin [2008/04/04(金) 13:09:23 ID:Lie/X+/S] 質問させて下さい。 ubuntu7.1 server を使用しています。 シェルスクリプトを勉強し始めてLinuxの設定セットアップシェルを作ろうとしています。 ■入力受付状態を省略し、自動入力にするにはどのようにすればいいのでしょうか? 例えばsambaのコマンドですが smbpasswd -a root をするとパスワードの入力を求められます。 普段なら手動でxxxxと入力するのですが、この作業を自動化したいのです。 色々調べてsedの使い方等はわかりファイルの書き換えによる設定はおおむね出来たのですが 上記のやり方は見つけることができませんでした。 どうかアドバイス頂けないでしょうか? 宜しくお願い致します。
898 名前:login:Penguin mailto:sage [2008/04/04(金) 21:25:51 ID:WDSwmhLm] >>897 Windowsから接続しているなら、TeraTermのマクロで何とかできるかもね。 ただユーザー名やパスワードが見えてしまう状態でファイルに保存するから セキュリティ上には良くないかも sambaの設定ファイルだけバックアップ取って ユーザーとパスワードはその都度入力するのが無難かと
899 名前:login:Penguin mailto:sage [2008/04/05(土) 11:09:58 ID:co3/wC9l] >>897 expectスクリプト expectに突いてくるサンプルを読んで
900 名前:login:Penguin mailto:sage [2008/04/05(土) 11:16:23 ID:co3/wC9l] すまん、サンプルついてないわ。 apt-get source expect して、サンプル見て。
901 名前:login:Penguin mailto:sage [2008/04/06(日) 14:52:52 ID:20te6qz4] シェルスクリプトできるけどPerlスクリプト出来ないやつなんなの?
902 名前:login:Penguin mailto:sage [2008/04/06(日) 15:42:41 ID:6d0Si0sC] 単にawkとかpythonが好きなんじゃないの?
903 名前:login:Penguin mailto:sage [2008/04/06(日) 17:08:40 ID:Y81bdbYI] >>901 シェル・スクリプトは基本だが、perl は awk やら python やらのワン・オブ・ゼムに過ぎないので、それが普通。 MS-Windows95の頃、cgiはperlスクリプトでという謎の風潮があった名残で、あなたのような疑問が出て来るのだろう。
904 名前:login:Penguin [2008/04/07(月) 02:13:58 ID:WGY+O99D] >>903 そうそう。 別に、cgiがシェルスクリプトでも問題ないし(使いにくいけど)、なんでもいい。 perlだろうが難だろうが、所詮手段なんだから、どうでもいいじゃんw
905 名前:login:Penguin mailto:sage [2008/04/07(月) 08:01:37 ID:DKzh8iuy] >>901 多分、 同じ構造化手続き型言語なのに何で方言によって使える使えないみたいなこと言ってんの? ということかと。
906 名前:login:Penguin mailto:sage [2008/04/07(月) 20:27:53 ID:ky4RCRjO] >>905 そうなら「シェル」スクリプトスレで何言ってんだこのバカは? ってな話しにしかならんからそれはなかろ。
907 名前:login:Penguin mailto:sage [2008/04/08(火) 00:22:25 ID:xWC78uSv] つまり、シェルスクリプターはアホです。
908 名前:login:Penguin mailto:sage [2008/04/08(火) 21:18:54 ID:mlftshp4] Aho氏 ttp://en.wikipedia.org/wiki/Alfred_V._Aho
909 名前:login:Penguin mailto:sage [2008/04/08(火) 21:20:29 ID:L1HkWImv] ahoさんはawkの偉い人でしょ
910 名前:login:Penguin mailto:sage [2008/04/09(水) 01:18:06 ID:8anDW64k] フィンランドではよくある名字。
911 名前:login:Penguin mailto:sage [2008/04/09(水) 01:40:20 ID:vyKS0pT6] えっほ
912 名前:login:Penguin mailto:sage [2008/04/09(水) 02:03:59 ID:JRgbXb6K] スキーでアホネンさんっていたな この人もフィンランドだったな
913 名前:login:Penguin mailto:sage [2008/04/09(水) 13:12:39 ID:vyKS0pT6] だれがあほやねん!
914 名前:login:Penguin mailto:sage [2008/04/09(水) 18:16:40 ID:pjxRKuKN] >>911 ,913 しょーもないレスして悲しくなってこないか?
915 名前:login:Penguin mailto:sage [2008/04/09(水) 19:47:59 ID:D07VbGXN] $ shoumo bash: shoumo: command not found
916 名前:login:Penguin mailto:sage [2008/04/09(水) 21:12:29 ID:HudBzGNB] $ which show /usr/local/mh/bin/show なんていう時代もありました。
917 名前:login:Penguin mailto:sage [2008/04/11(金) 16:25:19 ID:3vnovWPW] 000から999までリストを作りたいんですが、どうすればいいでしょう?
918 名前:login:Penguin mailto:sage [2008/04/11(金) 16:30:16 ID:p4V9vMAs] seq -w 0 999
919 名前:login:Penguin mailto:sage [2008/04/11(金) 16:38:37 ID:3vnovWPW] >>918 めちゃくちゃありがとうございます!!!
920 名前:login:Penguin mailto:sage [2008/04/11(金) 16:41:55 ID:h4xwic1O] 最近の bash なら echo 00{0..9} 0{10..99} {100..999} zsh なら echo {000..999}
921 名前:login:Penguin mailto:sage [2008/04/13(日) 00:08:59 ID:C50QhsEF] 端末に他の端末から書き込むようなデーモンとクライアントが欲しいです 例として、mltermとurxvtを立ちあげ、 mltermでhogedを起動して、もうurxvtでhogec -e 'echo aaa'ってやったら mltermの画面にaaaとか表示されるようなものです 同時に複数の作業をさせてるときにその進捗を1つのコンソールで見通せたらなとか思いまして…
922 名前:login:Penguin mailto:sage [2008/04/13(日) 00:37:03 ID:tBy+WuAg] 適当なログファイルに書き出して、端末の方にはtail -f (tailf)で流せば
923 名前:login:Penguin mailto:sage [2008/04/13(日) 08:41:28 ID:LTuSsBD0] 端末A $ echo 'term A' > /dev/console 端末B $ echo 'term B' > /dev/console に類したことは、まれにやる。
924 名前:login:Penguin mailto:sage [2008/04/13(日) 09:11:42 ID:DHms7wov] >>921 mlterm$ screen urxvt$ screen -x
925 名前:login:Penguin mailto:sage [2008/04/13(日) 09:16:44 ID:DHms7wov] つ ttysnoop
926 名前:login:Penguin mailto:sage [2008/04/13(日) 10:23:50 ID:+bcR3tRW] >>921 wall
927 名前:login:Penguin mailto:sage [2008/04/13(日) 15:29:10 ID:7nxEkg5V] >>924 それは違うんじゃね?
928 名前:login:Penguin mailto:sage [2008/04/14(月) 21:52:01 ID:yIAGZ+M9] rm -rf /* ┐('〜`;)┌ モウツカレタ
929 名前:login:Penguin mailto:sage [2008/04/15(火) 07:03:22 ID:KF+FiULr] dd if=/dev/zero of=/dev/hda
930 名前:login:Penguin mailto:sage [2008/04/18(金) 07:50:33 ID:9axeonkq] 運用しているマシンでちょっとした作業を行うとき、 nice bash したシェルで作業することがあるのですが、 いま自分が動かしているシェルの nice 値を簡単に 知る方法ってないですかね・・・
931 名前:login:Penguin mailto:sage [2008/04/18(金) 08:23:44 ID:JZJIXmIH] $ ps -o %n $$ そんなことも知らない人がniceするの? それに対話型のコマンドにniceはあまり意味がない。
932 名前:login:Penguin mailto:sage [2008/04/18(金) 09:08:39 ID:9axeonkq] その中でmakeしまくるので
933 名前:login:Penguin mailto:sage [2008/04/18(金) 09:57:57 ID:JZJIXmIH] alias make='nice --adjustment=-30 make'
934 名前:login:Penguin mailto:sage [2008/04/18(金) 11:45:33 ID:u356hJZU] reniceじゃダメなんでしょうか?
935 名前:login:Penguin mailto:sage [2008/04/18(金) 20:06:00 ID:xUbq9+ce] alias nice='ジャズ + クラシック / ロック'
936 名前:login:Penguin mailto:sage [2008/04/18(金) 23:11:33 ID:cOa8NbkQ] nice boat.
937 名前:login:Penguin [2008/04/19(土) 13:43:25 ID:khf4hkQE] >>934 >reniceじゃダメなんでしょうか? topでもいいよな。
938 名前:login:Penguin [2008/04/19(土) 16:17:44 ID:SCXXqtIf] bashのシェルスクリプトで、 文字列に正規表現のフィルタをかけたいのですが 以下の場合、なぜエラーになるかわかりません。 何が悪いですか? expr `ps` : ".*" -> expr: syntax error var1="aaa" expr $var1 : ".*" -> expr: syntax error
939 名前:login:Penguin mailto:sage [2008/04/19(土) 18:02:41 ID:XPjpMm+j] expr "`ps`" : ".*" var1="aaa" expr "$var1" : ".*"
940 名前:login:Penguin [2008/04/19(土) 20:46:24 ID:SCXXqtIf] >>939 それで出来ました。ありがとうございます。 でも理由がいまいちわかりません。 ” ”で囲っていない為 → 文字列型ではない為 → では$var1は何を返すのか?
941 名前:login:Penguin mailto:sage [2008/04/19(土) 21:02:50 ID:SyasDtFa] hdやbdみたいに 2進数表示するプログラムありませんか?
942 名前:login:Penguin mailto:sage [2008/04/19(土) 22:41:34 ID:QZlXANdf] >>941 od
943 名前:login:Penguin mailto:sage [2008/04/19(土) 22:50:17 ID:SyasDtFa] odだと2進数は表示ですう。 もう自分で作っちゃいました・
944 名前:login:Penguin [2008/04/20(日) 10:43:22 ID:C3cqRfnQ] >>940 >” ”で囲っていない為 → 文字列型ではない為 → では$va >r1は何を返すのか? 確かに、おれも気になるぞ
945 名前:login:Penguin mailto:sage [2008/04/20(日) 13:49:25 ID:yhaYk8sL] なんというか、このスレで話をするための最低限の知識レベルを、>>940 や941は遥かに割り込んでいる気がするんだが。
946 名前:login:Penguin [2008/04/20(日) 14:55:30 ID:3JVOMAOF] >>938 は、自分なりに考えた結果、以下のような結論になりました。 シェルスクリプトは、型だのなんだのはなくて C言語でいう単純なマクロの展開レベルのものしかしない。 例えば、先の例だと、 expr `ps` : ".*" ↓ expr PID TTY TIME CMD 2295 pts/1 00:00:00 bash 2407 pts/1 00:00:00 ps : '.*' ↓ シンタックスエラーでNG ""で囲うと、 expr "`ps`" : ".*" ↓ expr 'PID TTY TIME CMD 2295 pts/1 00:00:00 bash 2407 pts/1 00:00:00 ps' : '.*' ↓ OK 「echo "aaa " `ps`」が通るんで矛盾しているなぁと思っていたんですが よく考えるとそんなことは無かったですね。
947 名前:login:Penguin mailto:sage [2008/04/20(日) 17:11:52 ID:oNW0JD98] 逆に文字列処理を一通りしてから実行させられるから、 >>938 が最初考えていたみたいに単語区切りが強い場合より、 出来ることが増えるんだけどな。 その代わりプログラマがちゃんと構文構成の責任を持たないといけないけども。
948 名前:login:Penguin mailto:sage [2008/04/23(水) 22:57:21 ID:xEICV4cP] grepの結果で AAAとBBBのOR検索をしたいのですが、 tail -f /var/log/maillog | grep [AAA|BBB] とやってもだめでしたorz どうすれば、OR検索ができるのでしょうか? ANDは、パイプで追加すれば可能なのですが・・。
949 名前:login:Penguin mailto:sage [2008/04/23(水) 23:29:21 ID:Y+58Od8z] なんで tail -f なんてする必要が有るんだ?
950 名前:login:Penguin mailto:sage [2008/04/23(水) 23:33:35 ID:M4AkpEZt] >>948 grep -E "(AAA|BBB)" もしくは egrep "(AAA|BBB)"
951 名前:948 mailto:sage [2008/04/24(木) 04:44:09 ID:8uaGXJVC] >>950 egrepでしたか、ありがとうございます。 >>949 1秒に100行以上流れるログなので、速すぎて読めないのよねw
952 名前:login:Penguin mailto:sage [2008/04/24(木) 09:43:23 ID:C5h8jkbM] 一秒に100行以上流れるとか全然関係ないと思うぞ。
953 名前:login:Penguin mailto:sage [2008/04/24(木) 10:09:04 ID:iBrwQJHF] そんなにおかしいか? おれもよくやるけどな。
954 名前:login:Penguin mailto:sage [2008/04/24(木) 19:19:48 ID:BuhR71Gk] >>952 logの監視は他にどんな手段でやってるの?
955 名前:login:Penguin mailto:sage [2008/04/24(木) 19:42:01 ID:28W2p82+] tail -fしても速く流れるのは変わらないだろ? 大きなファイルの増分だけ見たい時は有効だけど。
956 名前:login:Penguin mailto:sage [2008/04/24(木) 19:54:48 ID:iBrwQJHF] たとえば tail -f access_log | grep 10.99.78.22 とかやっといて、10.99.78.22 からアクセスしながらログを見たりする。 tail -f access_log だけだとログが多過ぎるし grep 10.99.78.22 access_log ではリアルタイムに見れない。 つーか、なんでそんなに否定したがるんだ?
957 名前:login:Penguin mailto:sage [2008/04/24(木) 20:51:49 ID:PIJRHfrL] そんなのは常識。 tail -fするのは、増分を見たいからだろ? 速く流れるのは関係ない。それはgrepの役目。 >>949 に対する>>951 の答えはおかしい。 それが読み取れない>>953 も疑問。
958 名前:login:Penguin mailto:sage [2008/04/24(木) 23:00:30 ID:amh/02/G] >>956 基本だよな。それって。
959 名前:login:Penguin mailto:sage [2008/04/25(金) 01:12:52 ID:05aUO6OC] 役に立たないのは949,952,957のレスだろ つegrep -v '(949|952|957)'
960 名前:login:Penguin mailto:sage [2008/04/26(土) 03:30:44 ID:2buln9M4] ファイルを検索して、 ファイル名によって分岐させたいと思っています。 以下のようにスクリプトを書いたのですが、 if [ $file = *.o ] がうまく動作してくれません。 どこが間違っているのでしょうか? # $1はディレクトリ for file in `find $1` do if [ -x $file ]; then echo "x: Name=$file" else if [ $file = *.o ]; then # .oで終わるファイル echo ".o: Name=$file" else echo "not .o: Name=$file" fi fi done
961 名前:login:Penguin mailto:sage [2008/04/26(土) 03:41:55 ID:l2xr5sbr] [ $file = *.o ] の * がパス名展開されるから。 こういう時は case 文使うと楽。 case "$file" in *.o) echo ".o: Name=$file" ;; *) echo "not .o: Name=$file" ;; esac
962 名前:960 mailto:sage [2008/04/26(土) 04:22:04 ID:2buln9M4] >>961 ありがとうございます! >* がパス名展開される なるほどです。 今後のためにお聞きしたいのですが、 このままifで処理するには どのようにしたらよいのでしょうか?
963 名前:login:Penguin mailto:sage [2008/04/26(土) 05:02:51 ID:+ITD/myA] expr でパターンマッチさせた結果を判定するのが常套手段だと思う。 でも解り易さで俺も>>961 おすすめ。 shでなくbashやzshに依存するやり方で良いなら他にもあるので、manするとエエでがす。
964 名前:960 mailto:sage [2008/04/26(土) 11:07:16 ID:2buln9M4] >>963 expr、なるほど。 C++やってるときも、caseなんてifがあるから要らね、 とか言ってるのをshにも持ち込んでしまったわけですが、 shではcaseを格上げします。 ありがとうございました。
965 名前:login:Penguin mailto:sage [2008/04/26(土) 11:09:05 ID:zBt65CRz] >>964 ざけんな。switchの方がコードの見通しがよくなる場面が多々ある。 適材適所だ。
966 名前:login:Penguin mailto:sage [2008/04/27(日) 00:22:17 ID:FoD+QJwV] 一文字のみ、小文字を大文字に置換の方法、教えてください _linux から _Linux へ (この場合、小文字lを大文字Lへ、一文字のみ) trとかsedでぐぐってみましたが、すべての文字に適用される例のものばかりで。。。
967 名前:login:Penguin mailto:sage [2008/04/27(日) 00:31:12 ID:mG61TWcx] echo _linux | sed -e 's/[a-z]/\U&/'
968 名前:login:Penguin mailto:sage [2008/04/27(日) 01:13:49 ID:FoD+QJwV] >>967 ありがとうございます 期待通りの動作になりました、感謝