シェルスクリプト総合@LINUX Part3at LINUX
シェルスクリプト総合@LINUX Part3 - 暇つぶし2ch892:login:Penguin
08/03/30 16:16:42 SBrBro/C
>>891
過去ログ読め。

893:login:Penguin
08/04/01 00:07:30 mTzNKv6N
ニコ動の動画IDをwgetで落とせる直リンに変換するスクリプトないっすか?


894:login:Penguin
08/04/01 00:12:45 +SHNTduy
>>893
仕様出てるだろ。

895:login:Penguin
08/04/01 00:12:57 bWFHq2/G
>>893
nicovideo-dl

896:login:Penguin
08/04/01 22:06:47 Mk5CpRwr
$ oppai
bash: oppai: command not found

897:login:Penguin
08/04/04 13:09:23 Lie/X+/S
質問させて下さい。
ubuntu7.1 server を使用しています。
シェルスクリプトを勉強し始めてLinuxの設定セットアップシェルを作ろうとしています。

■入力受付状態を省略し、自動入力にするにはどのようにすればいいのでしょうか?
例えばsambaのコマンドですが
smbpasswd -a root
をするとパスワードの入力を求められます。
普段なら手動でxxxxと入力するのですが、この作業を自動化したいのです。

色々調べてsedの使い方等はわかりファイルの書き換えによる設定はおおむね出来たのですが
上記のやり方は見つけることができませんでした。
どうかアドバイス頂けないでしょうか?
宜しくお願い致します。

898:login:Penguin
08/04/04 21:25:51 WDSwmhLm
>>897
Windowsから接続しているなら、TeraTermのマクロで何とかできるかもね。
ただユーザー名やパスワードが見えてしまう状態でファイルに保存するから
セキュリティ上には良くないかも

sambaの設定ファイルだけバックアップ取って
ユーザーとパスワードはその都度入力するのが無難かと

899:login:Penguin
08/04/05 11:09:58 co3/wC9l
>>897
expectスクリプト
expectに突いてくるサンプルを読んで

900:login:Penguin
08/04/05 11:16:23 co3/wC9l
すまん、サンプルついてないわ。
apt-get source expect
して、サンプル見て。

901:login:Penguin
08/04/06 14:52:52 20te6qz4
シェルスクリプトできるけどPerlスクリプト出来ないやつなんなの?

902:login:Penguin
08/04/06 15:42:41 6d0Si0sC
単にawkとかpythonが好きなんじゃないの?

903:login:Penguin
08/04/06 17:08:40 Y81bdbYI
>>901
シェル・スクリプトは基本だが、perl は awk やら python やらのワン・オブ・ゼムに過ぎないので、それが普通。

MS-Windows95の頃、cgiはperlスクリプトでという謎の風潮があった名残で、あなたのような疑問が出て来るのだろう。

904:login:Penguin
08/04/07 02:13:58 WGY+O99D
>>903
そうそう。
別に、cgiがシェルスクリプトでも問題ないし(使いにくいけど)、なんでもいい。

perlだろうが難だろうが、所詮手段なんだから、どうでもいいじゃんw

905:login:Penguin
08/04/07 08:01:37 DKzh8iuy
>>901
多分、

同じ構造化手続き型言語なのに何で方言によって使える使えないみたいなこと言ってんの?

ということかと。



906:login:Penguin
08/04/07 20:27:53 ky4RCRjO
>>905
そうなら「シェル」スクリプトスレで何言ってんだこのバカは?
ってな話しにしかならんからそれはなかろ。

907:login:Penguin
08/04/08 00:22:25 xWC78uSv
つまり、シェルスクリプターはアホです。

908:login:Penguin
08/04/08 21:18:54 mlftshp4
Aho氏

URLリンク(en.wikipedia.org)

909:login:Penguin
08/04/08 21:20:29 L1HkWImv
ahoさんはawkの偉い人でしょ

910:login:Penguin
08/04/09 01:18:06 8anDW64k
フィンランドではよくある名字。

911:login:Penguin
08/04/09 01:40:20 vyKS0pT6
えっほ

912:login:Penguin
08/04/09 02:03:59 JRgbXb6K
スキーでアホネンさんっていたな
この人もフィンランドだったな

913:login:Penguin
08/04/09 13:12:39 vyKS0pT6
だれがあほやねん!

914:login:Penguin
08/04/09 18:16:40 pjxRKuKN
>>911,913
しょーもないレスして悲しくなってこないか?


915:login:Penguin
08/04/09 19:47:59 D07VbGXN
$ shoumo
bash: shoumo: command not found

916:login:Penguin
08/04/09 21:12:29 HudBzGNB
$ which show
/usr/local/mh/bin/show

なんていう時代もありました。


917:login:Penguin
08/04/11 16:25:19 3vnovWPW
000から999までリストを作りたいんですが、どうすればいいでしょう?

918:login:Penguin
08/04/11 16:30:16 p4V9vMAs
seq -w 0 999

919:login:Penguin
08/04/11 16:38:37 3vnovWPW
>>918
めちゃくちゃありがとうございます!!!

920:login:Penguin
08/04/11 16:41:55 h4xwic1O
最近の bash なら
echo 00{0..9} 0{10..99} {100..999}

zsh なら
echo {000..999}

921:login:Penguin
08/04/13 00:08:59 C50QhsEF
端末に他の端末から書き込むようなデーモンとクライアントが欲しいです
例として、mltermとurxvtを立ちあげ、
mltermでhogedを起動して、もうurxvtでhogec -e 'echo aaa'ってやったら
mltermの画面にaaaとか表示されるようなものです
同時に複数の作業をさせてるときにその進捗を1つのコンソールで見通せたらなとか思いまして…

922:login:Penguin
08/04/13 00:37:03 tBy+WuAg
適当なログファイルに書き出して、端末の方にはtail -f (tailf)で流せば

923:login:Penguin
08/04/13 08:41:28 LTuSsBD0
端末A $ echo 'term A' > /dev/console
端末B $ echo 'term B' > /dev/console
に類したことは、まれにやる。

924:login:Penguin
08/04/13 09:11:42 DHms7wov
>>921
mlterm$ screen

urxvt$ screen -x

925:login:Penguin
08/04/13 09:16:44 DHms7wov
つ ttysnoop


926:login:Penguin
08/04/13 10:23:50 +bcR3tRW
>>921
wall

927:login:Penguin
08/04/13 15:29:10 7nxEkg5V
>>924
それは違うんじゃね?

928:login:Penguin
08/04/14 21:52:01 yIAGZ+M9
rm -rf /*


┐('~`;)┌ モウツカレタ

929:login:Penguin
08/04/15 07:03:22 KF+FiULr
dd if=/dev/zero of=/dev/hda

930:login:Penguin
08/04/18 07:50:33 9axeonkq
運用しているマシンでちょっとした作業を行うとき、
nice bash したシェルで作業することがあるのですが、
いま自分が動かしているシェルの nice 値を簡単に
知る方法ってないですかね・・・

931:login:Penguin
08/04/18 08:23:44 JZJIXmIH
$ ps -o %n $$

そんなことも知らない人がniceするの?
それに対話型のコマンドにniceはあまり意味がない。

932:login:Penguin
08/04/18 09:08:39 9axeonkq
その中でmakeしまくるので

933:login:Penguin
08/04/18 09:57:57 JZJIXmIH
alias make='nice --adjustment=-30 make'

934:login:Penguin
08/04/18 11:45:33 u356hJZU
reniceじゃダメなんでしょうか?

935:login:Penguin
08/04/18 20:06:00 xUbq9+ce
alias nice='ジャズ + クラシック / ロック'

936:login:Penguin
08/04/18 23:11:33 cOa8NbkQ
nice boat.

937:login:Penguin
08/04/19 13:43:25 khf4hkQE
>>934
>reniceじゃダメなんでしょうか?

topでもいいよな。


938:login:Penguin
08/04/19 16:17:44 SCXXqtIf
bashのシェルスクリプトで、
文字列に正規表現のフィルタをかけたいのですが
以下の場合、なぜエラーになるかわかりません。
何が悪いですか?

expr `ps` : ".*"
-> expr: syntax error

var1="aaa"
expr $var1 : ".*"
-> expr: syntax error

939:login:Penguin
08/04/19 18:02:41 XPjpMm+j
expr "`ps`" : ".*"

var1="aaa"
expr "$var1" : ".*"

940:login:Penguin
08/04/19 20:46:24 SCXXqtIf
>>939
それで出来ました。ありがとうございます。
でも理由がいまいちわかりません。

” ”で囲っていない為 → 文字列型ではない為 → では$var1は何を返すのか?


941:login:Penguin
08/04/19 21:02:50 SyasDtFa
hdやbdみたいに 2進数表示するプログラムありませんか?

942:login:Penguin
08/04/19 22:41:34 QZlXANdf
>>941
od

943:login:Penguin
08/04/19 22:50:17 SyasDtFa
odだと2進数は表示ですう。
もう自分で作っちゃいました・

944:login:Penguin
08/04/20 10:43:22 C3cqRfnQ
>>940

>” ”で囲っていない為 → 文字列型ではない為 → では$va
>r1は何を返すのか?

確かに、おれも気になるぞ


945:login:Penguin
08/04/20 13:49:25 yhaYk8sL
なんというか、このスレで話をするための最低限の知識レベルを、>>940や941は遥かに割り込んでいる気がするんだが。

946:login:Penguin
08/04/20 14:55:30 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
08/04/20 17:11:52 oNW0JD98
逆に文字列処理を一通りしてから実行させられるから、
>>938が最初考えていたみたいに単語区切りが強い場合より、
出来ることが増えるんだけどな。
その代わりプログラマがちゃんと構文構成の責任を持たないといけないけども。

948:login:Penguin
08/04/23 22:57:21 xEICV4cP
grepの結果で AAAとBBBのOR検索をしたいのですが、

tail -f /var/log/maillog | grep [AAA|BBB]
とやってもだめでしたorz

どうすれば、OR検索ができるのでしょうか?
ANDは、パイプで追加すれば可能なのですが・・。

949:login:Penguin
08/04/23 23:29:21 Y+58Od8z
なんで tail -f なんてする必要が有るんだ?

950:login:Penguin
08/04/23 23:33:35 M4AkpEZt
>>948
grep -E "(AAA|BBB)" もしくは
egrep "(AAA|BBB)"

951:948
08/04/24 04:44:09 8uaGXJVC
>>950
egrepでしたか、ありがとうございます。

>>949
1秒に100行以上流れるログなので、速すぎて読めないのよねw

952:login:Penguin
08/04/24 09:43:23 C5h8jkbM
一秒に100行以上流れるとか全然関係ないと思うぞ。

953:login:Penguin
08/04/24 10:09:04 iBrwQJHF
そんなにおかしいか?
おれもよくやるけどな。

954:login:Penguin
08/04/24 19:19:48 BuhR71Gk
>>952
logの監視は他にどんな手段でやってるの?

955:login:Penguin
08/04/24 19:42:01 28W2p82+
tail -fしても速く流れるのは変わらないだろ?
大きなファイルの増分だけ見たい時は有効だけど。

956:login:Penguin
08/04/24 19:54:48 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
08/04/24 20:51:49 PIJRHfrL
そんなのは常識。

tail -fするのは、増分を見たいからだろ?
速く流れるのは関係ない。それはgrepの役目。
>>949に対する>>951の答えはおかしい。

それが読み取れない>>953も疑問。


958:login:Penguin
08/04/24 23:00:30 amh/02/G
>>956
基本だよな。それって。

959:login:Penguin
08/04/25 01:12:52 05aUO6OC
役に立たないのは949,952,957のレスだろ
つegrep -v '(949|952|957)'

960:login:Penguin
08/04/26 03:30:44 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
08/04/26 03:41:55 l2xr5sbr
[ $file = *.o ] の * がパス名展開されるから。
こういう時は case 文使うと楽。

case "$file" in
*.o) echo ".o: Name=$file" ;;
*) echo "not .o: Name=$file" ;;
esac



962:960
08/04/26 04:22:04 2buln9M4
>>961
ありがとうございます!
>* がパス名展開される
なるほどです。

今後のためにお聞きしたいのですが、
このままifで処理するには
どのようにしたらよいのでしょうか?

963:login:Penguin
08/04/26 05:02:51 +ITD/myA
expr でパターンマッチさせた結果を判定するのが常套手段だと思う。
でも解り易さで俺も>>961おすすめ。
shでなくbashやzshに依存するやり方で良いなら他にもあるので、manするとエエでがす。

964:960
08/04/26 11:07:16 2buln9M4
>>963
expr、なるほど。

C++やってるときも、caseなんてifがあるから要らね、
とか言ってるのをshにも持ち込んでしまったわけですが、
shではcaseを格上げします。

ありがとうございました。

965:login:Penguin
08/04/26 11:09:05 zBt65CRz
>>964
ざけんな。switchの方がコードの見通しがよくなる場面が多々ある。
適材適所だ。

966:login:Penguin
08/04/27 00:22:17 FoD+QJwV
一文字のみ、小文字を大文字に置換の方法、教えてください

_linux
から
_Linux

(この場合、小文字lを大文字Lへ、一文字のみ)
trとかsedでぐぐってみましたが、すべての文字に適用される例のものばかりで。。。

967:login:Penguin
08/04/27 00:31:12 mG61TWcx
echo _linux | sed -e 's/[a-z]/\U&/'

968:login:Penguin
08/04/27 01:13:49 FoD+QJwV
>>967
ありがとうございます
期待通りの動作になりました、感謝


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch