1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/ 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 あたりに色々と。
124 名前:login:Penguin mailto:sage [2009/06/24(水) 14:40:30 ID:BWmtmrUC] >>123 そんな面倒なことはせんでもええ if ! type -P w3m >/dev/null; then echo '(# ゚Д゚)' fi
125 名前:112 mailto:sage [2009/06/24(水) 17:05:52 ID:qAybS9Ki] 何度もすみません。 Pオプションが、原文のman bashにしか書いようで、 書いてある英語がよく分からないのですけれど (-_-A; こういうことが書いてあるんでしょうか? pオプションは、エイリアスとか関数があったら何も返さないけれど、 そういう時でもPオプションは、ファイルだけを対象にしてそのパスを表示する。 間違ってたら恥ずかしいです。 if ! COMMAND=$(builtin type -P w3m 2> /dev/null); then if [[ ! -x $COMMAND ]]; then echo "not installed w3m" >&2 exit 1 fi fi ファイルテストと合わせて、COMMANDを取得するところはこんな感じになりました。 他は、>>117 ,118と同じです。
126 名前:login:Penguin mailto:sage [2009/06/24(水) 19:01:09 ID:h5ARTQfu] aliasにするには同シェルスクリプトファイル内に書くか.を使うか 例えばこう shopt -s expand_aliases . ~/.bashrc type -t w3m SECTURL="$SECTURL"'&Sec'"$i"'='"${SECT[$((i-1))]}" みたいなのは SECTURL="$SECTURL"\&Sec"$i"\="${SECT[$((i - 1))]}" とエスケープ使ったほうが読みやすいかもな
127 名前:login:Penguin mailto:sage [2009/06/24(水) 19:29:28 ID:w4EkT5LC] >>126 俺は関数化して環境登録することが多いです。 function w3m() { ls -l } export -f w3m
128 名前:login:Penguin mailto:sage [2009/06/26(金) 01:44:08 ID:+M5S3VDp] 質問です。前処理をして、 www.youtube.com/get_video?video_id=-AKQ6CUJa90&t=vjVQa1PpcFP1kWNkoPQ7xks6cfYQ2Ttsd-nzkuvfQsw=&el=detailpage&ps= のようなURLを列挙したファイル(you.txt)を用意してあり、 yt=$(cat you.txt | sed -e "s/&t.*//g; s/^.*video_id=//g") && \ wget -O $yt.flv -c -i you.txt で動作させた場合、 思惑通り一個目は、-AKQ6CUJa90.flv というファイル名で取ってこれるのですが、 二個目以降はファイル名の抽出が働かず、 ローカルに保存されるのは同名のファイル名となってしまいます。 どのようにすれば思惑通りファイルを取ってこれるのでしょうか?
129 名前:login:Penguin mailto:sage [2009/06/26(金) 02:55:31 ID:5uTursO/] for
130 名前:login:Penguin mailto:sage [2009/06/26(金) 03:43:24 ID:5uTursO/] for youtube_url in `cat you.txt`; do wget -c -O "`echo "$youtube_url" | sed 's/video_id=\(.*\)&t\1/g'`.flv" "$youtube_url" sleep 5 done でどうでしょうか
131 名前:login:Penguin mailto:sage [2009/06/26(金) 06:18:01 ID:3RE4KePV] for youtube_url in `cat you.txt`; do wget -c -O "`echo "$youtube_url" | sed 's/^.*video_id=\(.*\)&t.*$/\1/'`.flv" "$youtube_url" sleep 5 done …でどうでしょうか(^_^;)
132 名前:login:Penguin mailto:sage [2009/06/26(金) 06:31:57 ID:3RE4KePV] id変わってる…(^_^;;)
133 名前:128 mailto:sage [2009/06/26(金) 11:30:36 ID:WtRHx5He] >>130 , 131 お知恵を元にして、目的を果たせました。ありがとうございます。 感謝しています。 なお、自分の書き込んだ内容でも、いちおうファイル名の抽出には成功する模様? 試行錯誤してみるのも、面白いですね。ではでは。
134 名前:login:Penguin [2009/06/30(火) 11:41:15 ID:Iil9pev3] 質問です。 現在、kshを使用してテストをしているのですが、 ステップが多すぎて(1k↑)カバレッジを求められてます。 カバレッジツールが無いかグーグル先生に聞いてみましたが 全く引っかからなく・・・ シェルのカバレッジを求めている人はどんな方法で求めていますか?
135 名前:128 mailto:sage [2009/07/01(水) 04:20:50 ID:3OeIBl6N] echo "What terms?"; read terms; terms="${terms// /+}" T="$HOME" mkdir -p $T/${terms} for n in $(seq 0 10); do w3m -dump_source \ "images.google.com/images?hl=en&lr=&safe=off&um=1&sa=1&q=${terms}&svnum=30&start=${n} " \ | sed -e 's/","http/\n","http/g; s/","/\n","/g' | grep -E -w "\",\"http:.*.jpg" | sed -e 's/^.*http/http/g' | wget -P $T/${terms} -r -l 1 --timeout=60 --tries=3 -c -e robots=off -U 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' -i - done
136 名前:login:Penguin mailto:sage [2009/07/06(月) 22:31:23 ID:tHSUGfrq] ( sleep 1h; echo "hello" ) > file ってやると、fileは1時間openしっ放しになるンすかね?
137 名前:login:Penguin mailto:sage [2009/07/07(火) 09:03:43 ID:jQkxOO5Q] >>136 なるだろ。lsofとか使って観察してみるといい。
138 名前:login:Penguin mailto:sage [2009/07/08(水) 01:51:04 ID:SE49fktK] sleep 3600 > file でよくないか?
139 名前:login:Penguin mailto:sage [2009/07/08(水) 02:18:59 ID:VRCFK11t] お前は何を言っているんだ
140 名前:136 mailto:sage [2009/07/08(水) 07:54:59 ID:77+BAR3B] >>137 だおうもありまとう >>138 なんでもいいよ!!
141 名前:login:Penguin [2009/07/12(日) 10:36:19 ID:KKJfcIYB] 質問があります. 直接スクリプトの話ではないんですが, あるファイルに xxx という文字が含まれていなければ xxx を末尾に追記したい, という場合みなさんどうされています? grep とか使って条件分けすればできるのはわかるんですが,もっとスマートに やる方法があれば教えてください.
142 名前:login:Penguin mailto:sage [2009/07/12(日) 10:37:35 ID:1p3v2qzF] sed
143 名前:login:Penguin mailto:sage [2009/07/12(日) 10:41:49 ID:1p3v2qzF] ああファイルの話だったか じゃあ素直にgrep
144 名前:141 mailto:sage [2009/07/12(日) 10:44:36 ID:KKJfcIYB] >>142 それよりは % grep XXX file || echo XXX >> file の方がわかりやすい気が. 質問の意図としては,下記のように記述できる nanika コマンドのようなもの がないか知りたかったです. % nanika XXX file
145 名前:login:Penguin mailto:sage [2009/07/12(日) 12:20:21 ID:2S8ITALR] ない
146 名前:login:Penguin mailto:sage [2009/07/12(日) 12:53:03 ID:VHWHiWuB] >>144 ない。 なぜ nanika XXX file がスマートなのか知りたい。
147 名前:login:Penguin mailto:sage [2009/07/12(日) 18:16:12 ID:elf51XSl] grep --creeping-deth
148 名前:login:Penguin mailto:sage [2009/07/12(日) 19:44:16 ID:o8qLTMAv] death じゃないのか。
149 名前:login:Penguin mailto:sage [2009/07/12(日) 20:31:41 ID:elf51XSl] >>148 --orz
150 名前:login:Penguin mailto:sage [2009/07/14(火) 14:57:37 ID:gyyoowtT] nanika() { while read line do case "$line" in *$1*) return esac done <"$2" echo $1 >>"$2" }
151 名前:login:Penguin mailto:sage [2009/07/14(火) 15:44:41 ID:CH7bWn6s] つまらん。
152 名前:login:Penguin mailto:sage [2009/07/14(火) 21:42:07 ID:LzAZSljQ] :(){ :|:& };:
153 名前:login:Penguin [2009/07/20(月) 15:40:26 ID:K8L8w1qf] age
154 名前:login:Penguin [2009/07/20(月) 21:55:40 ID:ae6hxCnx] ps aux | grep processA でグレップしたプロセスのIDを変数に格納するにはどうかいてやればいいでしょうか?
155 名前:login:Penguin mailto:sage [2009/07/20(月) 22:11:42 ID:ODKc/pMj] 変数=`ps aux | grep processA | gawk '{print $2}'`
156 名前:login:Penguin [2009/07/20(月) 22:32:09 ID:ae6hxCnx] >>155 ありがとう 特定のプロセスAが起動したら、date >> /home/log としたいと考えています。ただし、プロセスAは、 grep で把握できるとして、 複数の場合があります。 この場合方法ですが、 ps aux | grep processA | gawk '{print $2}'` | wc -l でこの帰り値が、0でないとき として if 分で、制御すべきでしょうか?(Whileなどで無限ループしたなかにif を配置) なにかもっとシンプルな方法ないでしょうか?
157 名前:login:Penguin mailto:sage [2009/07/20(月) 22:49:46 ID:ODKc/pMj] ああ、改めて見たら >>154 にレスしてるみたいに見えるな。
158 名前:login:Penguin mailto:sage [2009/07/20(月) 23:01:27 ID:iUvo3V7o] >>156 以下でできるかも 変数=`pgrep プロセスA` [ -n $変数 ] && date >> /home/log
159 名前:login:Penguin [2009/07/21(火) 10:43:13 ID:BO90gQOW] >>156 変数に入れる必要あるの? pgrep processA >/dev/null && date >> /home/log
160 名前:login:Penguin mailto:sage [2009/07/21(火) 23:11:34 ID:xGYTho7h] pidof とか使わんの?
161 名前:login:Penguin mailto:sage [2009/07/23(木) 17:30:46 ID:WFggSjQ8] ここで聞くべきか若干怪しいかと思うのですが、 sudo 経由した場合のみ、特定コマンド(たとえばps)を 一般ユーザ権限で利用させる方法ってないでしょうか? ps をパーミッション700にしておき、 root以外は使用できなくなる状態へしたいのですが、 sudo 経由した場合のみ使わせたいと思ってます。
162 名前:login:Penguin mailto:sage [2009/07/23(木) 18:06:19 ID:P+5ig7CA] くだ質池
163 名前:login:Penguin [2009/07/26(日) 07:44:48 ID:FW8uMlXc] ttaファイルを再生するスクリプトを作ってみました。 一応ちゃんと動くのですが、、、 バックグラウンドで動かしているttaencがエラーで死んだ場合に (単純な例では$1のファイルがない、とか) playコマンドが入力を待ち続けてしまうのです。 何かよい方法ないですか? #! /bin/sh -e WAV=`mktemp -t $$.wav` rm -f $WAV mknod $WAV p trap "rm -f $WAV" 0 ttaenc -o $WAV "$1" > /dev/null 2>&1 & play -q $WAV > /dev/null 2>&1
164 名前:login:Penguin mailto:sage [2009/07/26(日) 08:26:44 ID:BwoYtVgZ] >>163 ifで$?を判定すればいいんじゃないかな
165 名前:login:Penguin mailto:sage [2009/07/26(日) 09:00:23 ID:VmbGTICm] >>164 コア吐いたらダメっしょ。 trapしたほうがよくね?
166 名前:163 mailto:sage [2009/07/26(日) 09:07:33 ID:FW8uMlXc] >>163 自己レス playとttaencを両方ともバックグラウンドにし、 ttaencをwaitすることでエラーを捕捉、必要ならplayを停止。 これで解決しました。 #! /bin/sh -e WAV=`mktemp -t $$.wav` rm -f $WAV mknod $WAV p trap "rm -f $WAV" 0 ttaenc -o $WAV "$1" & DECODE_PID=$! play -q $WAV > /dev/null 2>&1 & PLAY_PID=$! exec 2> /dev/null wait $DECODE_PID || (kill -10 $PLAY_PID) >>164 $?について調べたのですが、バックグラウンドプロセスには効かないようです。 でも、調べる過程で解決の発想を得られました。ありがとう!
167 名前:login:Penguin [2009/07/30(木) 18:32:54 ID:8kF2jsLv] シェルスクリプト初めて数日ですが、ファイルの書き換えやなんかは検索すると出てくるんですが 選択肢形式の作り方がいまいちわかりません。 lokkitやsystem-config-networkみたいな選択形式を作りたいのですが 何かヒントをいただけないでしょうか?
168 名前:login:Penguin mailto:sage [2009/07/30(木) 18:37:48 ID:3Jkdy3aR] >>167 whiptail とか?
169 名前:login:Penguin mailto:sage [2009/07/30(木) 19:33:48 ID:1ZQVAEXh] dialog
170 名前:login:Penguin mailto:sage [2009/07/30(木) 19:43:13 ID:fH5JNdXj] $ lokkit bash: lokkit: command not found $ system-config-network bash: system-config-network: command not found $ whiptail bash: whiptail: command not found はう?? $ xmessage -button 'nipple,ass' 'which?'
171 名前:login:Penguin mailto:sage [2009/07/30(木) 20:01:21 ID:3Jkdy3aR] >>170 何が言いたいんだ?
172 名前:167 [2009/07/30(木) 20:08:32 ID:8kF2jsLv] >>168-169 ありがとうございます。 両方とも試してみましたがどちらもライブラリを追加しないと機能しないっぽいですね。 はじめて数日の私にはなかなか敷居が高いようです。 うーん・・・今さわってる環境でライブラリ追加させてもらえると大丈夫だと思いますが ダメって言われたらアウトっぽいですね・・・。
173 名前:login:Penguin mailto:sage [2009/07/30(木) 20:10:01 ID:3Jkdy3aR] 引き数で渡すとかじゃだめなん?
174 名前:167 [2009/07/30(木) 20:21:04 ID:8kF2jsLv] 引数で渡してもいいんですが 項目が少し多いので引数を渡すまでに選択肢で絞りたかったというのがあります。 関連ライブラリがいまいちまだ特定できないですが、道のりは遠そうです・・・
175 名前:login:Penguin mailto:sage [2009/07/30(木) 20:37:05 ID:w4YhvOQC] >>172 両方とも試してみたって、どうやって試したん?
176 名前:login:Penguin mailto:sage [2009/07/30(木) 21:09:43 ID:neY1QnOU] シェルスクリプトに詳しいみなさんに聞きたいのですが、 ユーザ追加して第三者に利用させるときに これ禁止させておけばよい、といったコマンドありますか? 例えば find などです。
177 名前:login:Penguin mailto:sage [2009/07/30(木) 21:17:05 ID:otd/7QOf] >>176 シェルの内部コマンドだけで相当できるから考えるだけ無駄。
178 名前:login:Penguin mailto:sage [2009/07/30(木) 21:17:21 ID:uCTsIRNg] なんでfindはだめなの? TOMOYO入れたら?
179 名前:login:Penguin mailto:sage [2009/07/30(木) 21:25:06 ID:wVBjHvC9] >>174 コマンドラインに収まらなくてもいいのなら、zenityは? echo -e "選択肢1\n選択肢2\n選択肢3" | zenity --list --column="項目"
180 名前:login:Penguin mailto:sage [2009/07/30(木) 23:35:05 ID:zSR6vlNV] >>174 bash 限定でいいなら、 select i in "Yes" "No" "Cancel"; do [ -n "$i" ] && break done case "$i" in Yes) echo "$i, we can.";; No) echo "$i, it's so hard.";; Cancel) echo "...";; esac
181 名前:login:Penguin mailto:sage [2009/07/31(金) 00:19:11 ID:eB5hWQQH] $(ls) と `ls` は同じと考えていいの?
182 名前:login:Penguin mailto:sage [2009/07/31(金) 01:07:21 ID:dqFrtp13] よくない
183 名前:login:Penguin mailto:sage [2009/07/31(金) 08:21:07 ID:Q0h6j6GB] 同じじゃないのか?
184 名前:174 [2009/07/31(金) 10:38:52 ID:unqMPfm1] >>179 zenityもcommand not foundって言われてしまったので入ってないようです。 ですが選択肢としていろいろと勉強になりました。 ありがとうございます。 >>180 サンプルありがとうございます。 大変勉強になりました。 bash限定ならこのあたりが限界っぽいですね。せめて項目の文字を色分け出来るくらいはしたかったですが モジュール追加出来ないからって事で先方にはあきらめてもらうようにします。
185 名前:login:Penguin mailto:sage [2009/07/31(金) 10:47:53 ID:dFOhVUdW] >>182 どう違うの?
186 名前:login:Penguin [2009/07/31(金) 11:03:30 ID:JVm6T/2T] Bashで設定を変更するものを作ってるんですがCtrl + C とかでプロンプトに抜けられないようにするにはどうすればいいんでしょうか?
187 名前:login:Penguin mailto:sage [2009/07/31(金) 11:08:16 ID:dFOhVUdW] >>186 trap
188 名前:186 [2009/07/31(金) 11:16:14 ID:JVm6T/2T] >>187 ありがと。 出来ました。
189 名前:login:Penguin [2009/07/31(金) 16:40:28 ID:YezVKpJb] コンフィグ情報から DEVICEとIPADDRだけを抜き出したいのですが下記だとDEVICEの行が5行表示され ます。 構文が間違っているからだと思いますがアドバイスもらえないでしょうか。 eth0=/etc/sysconfig/network-scripts/ifcfg-eth0 while read eth0 do echo $eth0 | sed -n '/DEVICE/p' /etc/sysconfig/network-scripts/ifcfg-eth0 done < /etc/sysconfig/network-scripts/ifcfg-eth0
190 名前:login:Penguin mailto:sage [2009/07/31(金) 16:49:00 ID:Q0h6j6GB] sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0
191 名前:login:Penguin mailto:sage [2009/07/31(金) 16:51:37 ID:dFOhVUdW] なんで何度も /etc/sysconfig/network-scripts/ifcfg-eth0 を書いてんだろ。
192 名前:login:Penguin mailto:sage [2009/07/31(金) 16:52:11 ID:sKGfGulX] >>189 答え先に書かれちゃったか。 1行目のeth0はどこで使ってるの?とか、whileでループさせる意味は?とか ちょっと落ち着いて考えた方が良い
193 名前:login:Penguin mailto:sage [2009/07/31(金) 16:56:53 ID:IvZ7j8yJ] >>189 今後の為に基礎から勉強しなおしてきた方がいいよ
194 名前:login:Penguin mailto:sage [2009/07/31(金) 16:57:14 ID:6mUE4jrQ] > 1行目のeth0はどこで使ってるの?とか、whileでループさせる意味は?とか > ちょっと落ち着いて考えた方が良い 落ち着いて考えてもわかんねーよ 1行目のeth0がどこにも使われてないのはわかるけど
195 名前:189 [2009/07/31(金) 17:37:11 ID:YezVKpJb] みなさん回答ありがとうございます。 改めて見ると意味わからないことしてました。 下記のコードで意図する事ができました。 ありがとうございました。 while read do echo | sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0 break done < /etc/sysconfig/network-scripts/ifcfg-eth0
196 名前:login:Penguin mailto:sage [2009/07/31(金) 17:45:29 ID:sKGfGulX] >>195 全力で釣られてやる。 >>190 さんが書いてるように、sed1行でいける sed -n '/DEVICE/p;/IPADDR/p' /etc/sysconfig/network-scripts/ifcfg-eth0 whileしたあげくに無条件でbreakとか意味わからん。 各行で何をしているのかもう少し考えよう
197 名前:login:Penguin mailto:sage [2009/07/31(金) 20:49:41 ID:M2gWEg8T] >>195 まずその「よく分からないけどとにかく丸写しでそれらしく作っとけばいいだろう」 という思想を改めるべきだな。
198 名前:login:Penguin [2009/07/31(金) 21:59:52 ID:JVm6T/2T] 何やら上でもsedの質問出てますが質問させてください。 sedでtet.txt内にあるhogeをhogehogeに書き換えるものをつくりました。 sed -i 's/hoge/hogehoge/g' /tmp/test.txt 次にhogeとhogehogeの部分を変数にしたのですが今度は書き換わってくれません。 $aにはhoge $bにはhogehoge sed -i 's/$a/$b/g' /tmp/test.txt test.txtを見ると更新はされているので何らかのアクションがあるみたいなんで すが何か指定方法間違ってますでしょうか?
199 名前:login:Penguin mailto:sage [2009/07/31(金) 22:03:23 ID:Y1b6fdMF] sed -i "s/$a/$b/g" /tmp/test.txt
200 名前:login:Penguin mailto:sage [2009/07/31(金) 22:06:26 ID:Gbr9waoH] >>199 ""だとシェル変数展開されないっすか?
201 名前:sage mailto:sage [2009/08/01(土) 01:27:09 ID:2gkCvOw5] シェルでリスタートとかかけると 活性化しますとか表示されるんですが、これ表示させないようにする方法ありますか? /dev/nullとかしても表示されたので表示させない方法あれば教えてください。
202 名前:login:Penguin mailto:sage [2009/08/01(土) 01:38:27 ID:MXySzGMG] >>201 使ってるディストリのスレへ。
203 名前:login:Penguin mailto:sage [2009/08/01(土) 02:29:31 ID:SZCdXM7k] >>198 $ a='hoge' $ b='hogehoge' $ cat >/tmp/test.txt hogepiyo$a$b$c $ sed -i 's/$a/$b/g' /tmp/test.txt $ cat /tmp/test.txt hogepiyo$b$b$c # hogeはそのまま、$aは$bに。 $ cat >/tmp/test.txt hogepiyo$a$b$c $ sed -i "s/$a/$b/g" /tmp/test.txt $ cat /tmp/test.txt hogehogepiyo$a$b$c # hogeがhogehogeに、$aはそのまま。
204 名前:login:Penguin mailto:sage [2009/08/01(土) 04:42:15 ID:SZCdXM7k] >>181 入れ子のとき注意がいる。 $ echo $(echo a:$(echo b:$(echo c:$(echo d)))) a:b:c:d $ echo `echo a:`echo b:`echo c:`echo d```` a:echo b:c:echo d $ echo `echo a:\`echo b:\\\`echo c:\\\\\\\`echo d\\\\\\\`\\\`\`` a:b:c:d
205 名前:login:Penguin mailto:sage [2009/08/02(日) 01:23:15 ID:tM/nSNrk] 画面を切り替えたりするとselect文が数行表示されない(実際には選択は出来る)ことが よくあるんですが、データの受信が表示までに間に合ってないような感じです。 これを避ける方法などはあるんでしょうか? 使用しているターミナルはPoderosaになります。
206 名前:login:Penguin [2009/08/03(月) 09:09:05 ID:J0mTyN5X] 今までbashでスクリプト組んで表示はExiteで翻訳とか適当にコピペってたのですが シェルスクリプトって日本語表示出来ますか? お偉いさんが英語じゃわからんとかぬかしやがったので・・・
207 名前:login:Penguin mailto:sage [2009/08/03(月) 09:14:24 ID:+8DYA08E] >>206 文字コード決めうちでよければ比較的簡単だな。 問題はそれで表示できるかどうかは実行する人が 使ってるターミナルに依存するということだ。一般的に やろうとするとロケール見て切り替えみたいなことを しなきゃならないが結構面倒だね。 ま、お偉いさんの環境に合わせておけばいいんじゃね?
208 名前:206 [2009/08/03(月) 09:29:50 ID:J0mTyN5X] >>207 やっぱりそうですよね。 アクセスしてきたターミナルの文字コードを判別してとか切り替えられればいいんですが さすがに無理ですよね。 お偉いさんだけじゃなくてユーザーも使うんで文字コードって混在してるんですよね。 標準的な文字コードってどんなの使われてるのかはよくわかりませんが まぁ無理って方向で進めていこうかと思います。 ありがとうございます。
209 名前:login:Penguin mailto:sage [2009/08/03(月) 09:57:12 ID:pu8sCNil] ローマ字でいいんじゃね。
210 名前:login:Penguin mailto:sage [2009/08/03(月) 10:31:49 ID:3RzsW8i/] exciteのわけわからん翻訳貼り付けるのは ユーザーが可哀想だろw 自分の英語に自信が持てないなら、いっそ日本語の方がいいんじゃね。 そのディストリビューションで日本語選んでインストールしたとき デフォルトになる文字コード選んどけば 誰も文句いわないんじゃね? 自分でLANGいじるようなやつは、文字化けのなおしかたぐらい知ってるだろ。
211 名前:login:Penguin mailto:sage [2009/08/03(月) 10:52:42 ID:3RzsW8i/] なんか変だ。 ユーザー作ったときデフォルトでなってる文字コードにしとけばいいんじゃね、だ。 LANGとかLANGUAGEとかいじるやつは文字化けの直し方ぐらい知ってるだろ。 デフォルトがCとかenとかなら…シラネ
212 名前:login:Penguin [2009/08/04(火) 12:15:50 ID:OyyR8ocQ] 動けばいいって程度で作ってたものをどうやら他にもリリースするとかで見栄えをよくしろと言われました。 bashで文字を寄せたり全体を中央寄せにしたりするコマンドとか関数ってありますか?
213 名前:login:Penguin mailto:sage [2009/08/04(火) 12:53:29 ID:h5jokg18] COLUMNS見て計算する。 いっそwhiptailやdialog使うとかな。
214 名前:login:Penguin mailto:sage [2009/08/04(火) 21:45:57 ID:1cLNSoFd] printf ? あとよく知らないけど fmt とか groff とか?
215 名前:212 [2009/08/04(火) 22:25:14 ID:OyyR8ocQ] >>213 文字数はじき出して何とか出来ました。 あとスクリプトの中で /etc/rc.d/network restart といれているんですが、手動で/etc/rc.d/network restartすると大丈夫なんですが #!/bin/bash /etc/rc.d/network restart とかで実行するとshould not be world writeable users cannnot control this device と表示されて実行されていないようです。 権限の問題かと思い色々と変えてみましたがダメでした。 なにか他に注意すべき点があればご教示いただければと思います。
216 名前:login:Penguin mailto:sage [2009/08/04(火) 22:32:07 ID:ACq2bWOB] > 色々と変えてみましたがダメでした。 そりゃダメだろうな。
217 名前:login:Penguin mailto:sage [2009/08/04(火) 22:49:56 ID:p9z/5JkD] もしかして: should not be world writable users cannot control this device
218 名前:212 [2009/08/05(水) 09:09:45 ID:Sso6+/38] >>217 すいません スペル間違えてました。 217で記述されている内容が表示されておりました。
219 名前:login:Penguin mailto:sage [2009/08/05(水) 09:38:19 ID:gztfuFMV] いろいろgrepしたけどうちのマシンには そのメッセージを吐くプログラムは入ってないようだ。 ディストリビューションと、どのプログラム/スクリプトが そのメッセージ出してるか書けば? ちなみにそのスクリプトはrootで実行してるんだよね?
220 名前:212 [2009/08/05(水) 10:47:05 ID:Sso6+/38] >>219 すいません。 CentOS5.3 です。スクリプト内容は膨大なのですがエラーが出る場所は /etc/rc.d/init.d/network restart の部分になります。 実行しているのは別のユーザーでてっきりrootで実行してるもんだと思ったら別ユーザーで実行していたようです。 ファイルは -rwxr-xr-x 1 root root 1234 7月 31 00:00 test.sh 実際に実行していたログインユーザーはtestというユーザーでした。 上記の事とエラー内容から権限がないために出ていると思います。 testユーザーでもrestartをかけれる権限を付与するか、testユーザーを rootのグループに入れるような事が出来れば出来そうな気もしますが自分には少しレベルが高そうですね。
221 名前:login:Penguin mailto:sage [2009/08/05(水) 13:12:18 ID:gztfuFMV] のりピーが心配で仕事が手に着かない。 init.dのスクリプトは一般ユーザーが使うようには出来てない。 仮にパーミッション緩めまくって実行できるようにしても、 インターフェースの設定はuid=0じゃないと出来ないので どこかで権限を昇格するかrootのプロセスに引き継ぐかしないと行けない。 具体的な実装方法の話に入ると、 そもそも一般ユーザーがインターフェースupdownする必要が 本当にあるのかという事から検討したくなって 長くなりそうなのでとりあえずがんばれと言っておく。
222 名前:219 [2009/08/05(水) 13:35:06 ID:Sso6+/38] >>221 ありがとうございます。 ネットワークの設定を一般ユーザー(といっても特定のユーザーのみですが) が出来るようにしたいと思っております。 そんなに頻繁にあるわけではないのですがroot権限を持ったものが常駐しているわけでは ないということもありましたのでネットワーク周りだけを触るスクリプトを組みました。 権限の昇格やrootのプロセスをシェルスクリプトで引き継げるようであれば行いたいと思います。 ご存じのかたおられましたらアドバイスいただけると助かります。
223 名前:login:Penguin mailto:sage [2009/08/05(水) 14:02:44 ID:gztfuFMV] そのぐらいならsudoでどぞ。
224 名前:login:Penguin mailto:sage [2009/08/05(水) 21:35:22 ID:dz5dEKuL] >>222 ifcfg-eth0とかに「USERCTL=yes」でroot以外でもできそう www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-networkscripts-interfaces.html