- 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あたりに色々と。
- 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しても速く流れるのは変わらないだろ?
大きなファイルの増分だけ見たい時は有効だけど。
|

|