[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 08/05 09:21 / Filesize : 196 KB / Number-of Response : 858
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その10



1 名前:名無しさん@お腹いっぱい。 [2008/02/11(月) 19:21:07 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ
シェルスクリプト総合 その9
pc11.2ch.net/test/read.cgi/unix/1187130302/

742 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 19:38:59 ]
変数、サブシェルなどの展開は一度だけ。
再度展開したい時はeval。

743 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 20:15:21 ]
>>742
eval をさっそく調べ、勉強になりました。
ありがとうございます。


744 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:26:56 ]
質問させてください。
シェルスクリプトで16進数を2進数に変換するにはどうしたらいいでしょうか?


745 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:49:57 ]
どうしてもシェルスクリプトというならこんな感じか。
最適なのはbc。sedだけでもできる。

h2b() {
for h in `echo $1 | sed 's/\(.\)/ \1/g'`; do
case $h in
0) echo -n 0000;;
1) echo -n 0001;;
2) echo -n 0010;;
3) echo -n 0011;;
4) echo -n 0100;;
5) echo -n 0101;;
6) echo -n 0110;;
7) echo -n 0111;;
8) echo -n 1000;;
9) echo -n 1001;;
a|A) echo -n 1010;;
b|B) echo -n 1011;;
c|C) echo -n 1100;;
d|D) echo -n 1101;;
e|E) echo -n 1110;;
f|F) echo -n 1111;;
esac
done
echo
}


746 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 00:54:10 ]
>>755
あ、どうしてもってわけじゃないです。
コマンドとかありますか?何度もすいません。

747 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:17:50 ]
bcで16進数を2進数に変換。
できそうでよくわからない・・・orz

748 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:18:21 ]
bcならこんな感じかな、便利だね知らなかったよ。
echo "obase=2; ibase=16; $1" | bc

749 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:32:27 ]
>>748
ありがとう。しかしながら
例えば 0xffffff00 これを10進数に変換したいと思い

echo "obase=10; ibase=16; 0xffffff00" | bc

とやってみましたがsyntax errorがでました・・・orz

750 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 01:40:21 ]
頭に0xは付けずに,それから大文字で書かないといけないっぽい.



751 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 02:03:41 ]
>>750
なるほど。ありがとうございました。

752 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 06:48:02 ]
>>749
bcなんか使わなくても printfで一発だろww

$ printf '%d\n' 0xffffff00
4294967040


753 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 08:48:45 ]
んっと、釣られとくけど、

志村ー

754 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:18:18 ]
>>753
なにが釣りなのかわからないゆとりな俺にkwskたのむ

シェルスクリプトのtmtowtdiな感じって好きだ

755 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:28:34 ]
printf(3)は二進がないからなあ。
printf(1)の%bは違う意味だし。

756 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 13:35:12 ]
>>775
欲嫁。
>>749 は 16進→10進の質問。
>>752 はそれに最適解を答えている。

757 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:01:10 ]
昨日質問した者です。ちょっと間違ってました。ごめんなさい。

正しくは ffffff00 これを 255.255.255.0 に変換したい。です。
これってできるのでしょうか?

758 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:09:13 ]
簡単だね
>>757
$ hex=ffffff00
$ printf '%d.%d.%d.%d\n' `echo $hex | sed 's/../0x& /g'`
255.255.255.0

759 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 22:57:09 ]
>>758
すごいなぁ。ありがとう。

760 名前:名無しさん@お腹いっぱい。 [2008/04/26(土) 12:50:24 ]
>>758 これは(・∀・)イイ!! もれももらた



761 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/26(土) 16:59:52 ]
よく読まずに余計な突っ込みした >>753 は今ごろ赤面ww

762 名前:名無しさん@お腹いっぱい。 [2008/04/28(月) 17:23:56 ]
>>761

kannke-nexekedo
お前のレスうざい

763 名前:名無しさん@お腹いっぱい。 [2008/04/29(火) 09:04:12 ]
シェルで、拡張子の付いていないファイルを一発でワイルドカード指定するには
どうすればいいですか?

あるいは、何かのオプション変更とかで、
* で、hogeとかだけにマッチして、
hoge.hog にはマッチしないようにして、
*.* とやった時だけ hoge.hogにマッチするようにしたいんです。

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 09:43:06 ]
一部シェル限定ならできる
一発でなくていいならできるようにはできる

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 11:18:22 ]
>>764
kwsk

766 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:33:12 ]
>>764 は、具体的な「やりかた」を書かない(書けない)知ったかの
>>680 と同一人物、に1俵。

767 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:39:25 ]
>>765
シェルは何だ?
ワイルドカード使うシチュエーションは?カレントディレクトリだけなのか?
ファイルの表示ができればいいだけなのか?各ファイルに何かするのか?

>>766
あいにく違うな
1俵よこせ


768 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:43:35 ]
>>767
じゃなくて、逆にその「できるシェル」を教えて欲しい。
シチュエーション関係なしに、すべての場合において
* が hoge.hogにはマッチしないようにしたい。

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:46:16 ]
EXTENDED_GLOBつきのzshで*~*.*かな。

770 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:55:22 ]
* 1個の動作を変えられるようなシェルはないかと思う

同じくzshで
setopt EXTENDED_GLOB
ls -d [^.]#




771 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 12:57:46 ]
command.com

772 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:01:56 ]
少なくとも >>766 だけうざいな

773 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:50:40 ]
シェルを秘密にしたいのだからエスパースレに行くべきだな。
全ての場合を見通して答えてくれるエスパー様(>>766)に任せよう。

774 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 13:58:03 ]
できるシェルを教えてくれっていう質問だから、
シェルを秘密にしてるのとは違うかと

775 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 20:45:09 ]
よく読まずに余計な突っ込みした >>773 は今ごろ赤面ww

776 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:08:40 ]
>>775
お前のレスうざい


777 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:32:45 ]
OSを秘密にしているのだから、エスパー様の出番だな。
余計な突っ込みした、知恵足らずの>>775は今ごろ赤面ww

778 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:41:31 ]
シェルはOSには依存しないな。
余計な突っ込みした、知恵足らずの>>777 は今ごろ赤面ww

779 名前:名無しさん@お腹いっぱい。 [2008/04/29(火) 21:43:02 ]
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。

780 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 21:54:17 ]
まあよくある願望とごっちゃにしたな



781 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:04:17 ]
たとえば最近の例を引き合いに出すが、
>>757 の質問(OS不明)に >>758 が的確に回答してる。
どこにもOSに依存してるところはないな。

>>757 に対して「OSが秘密じゃ答えられない」なんていってる奴は
無知をさらけ出してる奴。OSがわかったところで答えられないだろう。

782 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:06:52 ]
全然関係ない事例を持ち出して
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
> シェルはOSには依存しないな。
を誤魔化そうとする>>778憐れ。

783 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:08:34 ]
本件事例の
>>769 の回答は、OSには依存しないな。

784 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:17:34 ]
糞みたいな雑談でスレを延ばすなよ
コードで語れ

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:22:29 ]
G Em7 Am7 Am7/D D7 G

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:23:36 ]
>>769は誤回答。お題は「* で、hogeとかだけにマッチして、hoge.hog にはマッチしない」

787 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:25:33 ]
OSに依存しない誤回答ですね。

788 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/29(火) 22:45:17 ]
誤解答を例示して
> シェルはOSには依存しないな。
を誤魔化そうと必死の>>778憐れ。

789 名前:名無しさん@お腹いっぱい。 [2008/05/02(金) 11:38:05 ]
$ls
test1.jpg  test10.jpg test2.jpg
test3.jpg  test4.jpg  test5.jpg
test6.jpg  test7.jpg  test8.jpg
test9.jpg

と1桁の数字からなる連番ファイルがあるときに

$ls
test0001.jpg  test0002.jpg  test0003.jpg
test0004.jpg  test0005.jpg  test0006.jpg
test0007.jpg  test0008.jpg  test0009.jpg
test0010.jpg

というように4桁の連番ファイルにリネームしたいのですが、
ご教授お願いします。

790 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:40:37 ]
>>789
mv
sed
printf
for

これだけ調べればできる



791 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:41:07 ]
書き忘れた、

test10.jpg
これ 1桁の数字じゃないよな

792 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:43:03 ]
>>789
環境依存かつ汎用性ナシだけど、
おれならこうやっちゃう。
$ for i in {1..9}; do mv test$i.jpg test000$i.jpg; done
$ mv test10.jpg test0010.jpg

793 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:49:01 ]
>>789

#!/bin/sh

for file in *.jpg
do
num=`expr $file : '[^0-9]*\([0-9]*\)'`
base=`expr $file : '\([^0-9]*\)'`
num=`printf %04d $num`
echo mv $file $base$num.jpg
done


794 名前:789 mailto:sage [2008/05/02(金) 11:52:46 ]
>>791
最初1桁の例だけ書いてたんで、
2桁も混じっているということを書き忘れました。

>>792
$ for i in {1..9}; do mv test$i.jpg test000$i.jpg; done
$ for i in {10..99}; do mv test$i.jpg test00$i.jpg; done

ってかんじですかね。ありがとうございます。

795 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:52:51 ]
>>790
具体例を示さない奴は黙ってろ。あと、sedよりexprの方がいいな。

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:53:29 ]
>>794
>>793

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:55:18 ]
3桁のときは、0を一つ、2桁の時は、0を2つ
一桁のときは、0を3つってつけてけばいいねん
sedだけでできる

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:56:45 ]
>>797
そんなことをしなくても >>793 で一発。

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 11:57:56 ]
でしたね^^
解決したようで

800 名前:793 mailto:sage [2008/05/02(金) 12:09:21 ]
sedだけでやるならこうかな

#!/bin/sh

for file in *.jpg
do
new=`echo $file | sed 's/[0-9]/0000&/; s/[0-9]*\([0-9][0-9][0-9][0-9]\)/\1/'`
mv $file $new
done




801 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:11:08 ]
ごちゃごちゃしてるなぁ

802 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:13:48 ]
そう思うならprintfの方がすっきりする

803 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:16:28 ]
カレントディレクトリ配下で自分が所有者のファイルを探してすべて消したいのですが、
どのように書けばいいですか?

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:17:35 ]
find . -user `whoami` -exec rm -f {} \;

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 12:18:06 ]
ありがとうございます
試してみます

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/02(金) 20:11:05 ]
>>795
> >>790
> 具体例を示さない奴は黙ってろ。あと、sedよりexprの方がいいな。
お前が真っ先に黙れ。

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 12:08:46 ]
若干スレ違いですが、
シェルスクリプラーなみなさんが詳しそうなので質問させてください。

unix,linuxで、
カーネルの脆弱性なんかでrootに権限昇格の可能性があるのって
特定コマンドを利用不可にしていたら難しい、
なんてことあるでしょうか?

また、特定コマンドを利用した回数、利用したユーザ、
とか調べる方法ってないでしょうか?

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 13:02:50 ]
つ BSD acct & lastcomm

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 13:55:52 ]
>>807-809
具体例を出さない書き込みは禁止。

810 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 15:43:33 ]
若干どころじゃなくスレ違い。



811 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 15:47:30 ]
「シェルスクリプロ」って何ですか?

812 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/05(月) 15:57:16 ]
シェルスクリプる

813 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 08:56:10 ]
a 5 9 2
b 7 3 6
c 5 3 2
d 8 3 7
e 4 4 4

のようなテキストファイルから

a 5 9 2 16
b 7 3 6 16
c 5 3 2 10
d 8 3 7 18
e 4 4 4 12

のように行の値の合計を右端に出力したいのですがどうしたらできますか?
awk '{print $1,$2,$3,$4,$1+$2+$3}'
のようにではなく、列の値の数が3でなくても対応できるようにしたいです。

814 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 09:01:46 ]
>>813
簡単だね。

#!/bin/sh

while read line
do
set $line
shift
sum=0
for i in "$@"
do
sum=`expr $sum + $i`
done
echo "$line $sum"
done < file


815 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 09:20:27 ]
適当にがんばってみたらできたました。
ありがとうございました。
awk '{sum=0;for(i=1;i<=NF;i++)sum+=$i; print $"$i",sum}' test.txt

816 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 09:38:50 ]
>>815
ちゃんと「シェルで」答えてくれた >>814 に礼もなしで
自己解決かよ。

しかも、awkでやるならスレ違い。awkスクリプトはシェルスクリプトにあらず。

817 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 09:41:33 ]
おいおい、 >>815 の awkだと間違ってるぞ。
1列目の文字がたまたま数値的に 0 と評価されたら
結果的に正しく動いてるように見えるけど、
1列目に数値と解釈される文字があったらアウト。
このスレ的には >>814 が正解。

818 名前:名無しさん@お腹いっぱい。 [2008/05/06(火) 20:45:33 ]
unix初心者ですが、シェルについて教えてください。
if文で、if〜then〜else〜endif を使用しています。
if文の判定は、ファイル有無の判定です。
判定対象のファイルを正規表現で記述すると、elseまで辿り着きますが、
メタキャラ"?"で判定すると、elseまで辿り着かず、

「照合パターンに合いません」

と出力され終了してしまいます。
シェルの構文は下記の通りです。


#!/bin/csh
if ( -f /tmp/a?a.log ) then
echo "ファイルが見付かりました"
else
echo "ファイルが見付かりませんでした"
endif

メタキャラを使用して、ファイル判定をする方法を教えて頂けませんでしょうか。

宜しくお願い致します。


819 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 20:50:12 ]
>>818
cshでスクリプトを作ってはいけません。
どうしてもcshが良いなら独学でどうぞ。

820 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 21:05:42 ]
>>818
#!/bin/sh

if [ -f /tmp/a?a.log ]; then
echo 'ファイルが見付かりました'
else
echo 'ファイルが見付かりませんでした'
fi




821 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 21:15:22 ]
#!/bin/sh

[ -f /tmp/a?a.log ] && {
echo 'ファイルが見付かりました'
} || {
echo 'ファイルが見付かりませんでした'
}

822 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 21:19:42 ]
#!/bin/sh

s=; [ -f /tmp/a?a.log ] || s='せんで'; echo 'ファイルが見付かりま'"$s"'した'

823 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 21:27:57 ]
s=;(</tmp/a?a.log)2>/dev/null||s='せんで';echo 'ファイルが見付かりま'"$s"'した'

824 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 22:16:35 ]
ゴルファーがいるw

825 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 22:21:36 ]
すんません、検索したけど見つからなかったので教えてください。
bash + awk, bc, perl あたりで、小数部が3桁の計算をして、
その結果を変数に格納してます。その後、その変数の値を
絶対値にして返してくれるコマンドはありませんか?
上記のbash, awk, bc, perl あたりでできれば一番良いのですが。
よろしくお願いしまつ。

826 名前:名無しさん@お腹いっぱい。 [2008/05/06(火) 22:44:52 ]
> 820、821

ありがとうございました。
Bシェルで作成します。


作成したのですが、複数ファイルがマッチした場合、

ファイル名: binary operator expected

が表示され、マッチしたにも関わらず、elseが適用されます…。

ご存知でしたら、複数マッチしても、真となるような方法を教えて頂けませんでしょうか。

827 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 22:58:20 ]
>>825
マイナス符号を取ったらいいだけだろ

$ var1=-123.456
$ expr $var : '-*\(.*\)'
123.456
$ var2=123.456
$ expr $var : '-*\(.*\)'
123.456


828 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 23:01:42 ]
>>826

#!/bin/sh

if ls /tmp/a?a.log 2>/dev/null; then
echo 'ファイルが見付かりました'
else
echo 'ファイルが見付かりませんでした'
fi


829 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 23:14:46 ]
>>825

$ var=-123.456
$ echo ${var#-}
123.456
$ var=123.456
$ echo ${var#-}
123.456

830 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 23:22:26 ]
bash依存乙。



831 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/06(火) 23:29:02 ]
だからksh由来だと何度(ry

まあテンプレにもあるようにsh以外ならそう明記すべきだな。

832 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 11:40:42 ]
カレントディレクトリ配下のファイルにsedをかけたいのですが、
どのようにしたらできますか?

833 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 11:50:19 ]
>>832
要エスパー質問だなw

for file in *
do
sed 's/hoge/hage' "$file" > "$file".new
done

てことをやりたいのか?

834 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 11:54:09 ]
>>832
OSやシェルの種類/バージョンは秘密ですか?
それを秘密にしたままでは誰も答えられないでしょう。
このレス以外、レスは0件でしょう。

835 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 11:58:42 ]
OSはわかりません。(アウトソーシングでunameが使えないため)
ShellはBashです。
$ bash --version
GNU bash, version 3.1.17(1)-release

>>833
それだと、カレントディレクトリのファイルしか置き換えできません。
カレントディレクトリ配下をすべて置き換えたいです。
また、置き換えしたいので、.newファイルを作成したいのではないです。
(名前を変更すればいいだけですが。)

836 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 12:02:49 ]
>>835
find . -type f -exec sed -i 's/hoge/hage' {} \;

837 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 12:06:32 ]
>>834
OS関係ないだろw

すでに適切な回答がなされた後で再読み込みもせずに余計なことを書いた
>>834 は今ごろ赤面。

838 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 12:09:01 ]
>>835
「カレントディレクトリ配下」という言葉の使い方を間違ってます。

839 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 14:40:31 ]
>>832, >>834-835, >>837-839
具体例を出さない書き込みは禁止。

840 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:20:43 ]
>>838
配下っていう意味的にはあってるでしょ



841 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:21:36 ]
>>840
合ってない。直下のディレクトリのみ指す用語。

842 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:24:34 ]
>>841
配下って言うのは、傘下って意味。
参加は直下以外も指す。

ダイハツの下もTOYOTAの傘下でしょ。

843 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:39:44 ]
>>842
勝手に言葉を定義されても、困るのですが。

844 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:46:27 ]
その人の支配に属していること。また、その者。手下。部下。
- 三省堂提供「大辞林 第二版」より

類語:
⇒ 関連語 てした【手下】
⇒ 関連語 さんか【傘下】
⇒ 関連語 したやく【下役】
- YAHOO辞書より

845 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:47:48 ]
一言「サブディレクトリ以下も含む」と付け加えれば意味が通じたのに、
>>832 は「サブディレクトリ」という用語を知らないに1票。

846 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 18:52:45 ]
例えば、
/aaa/bbb
というディレクトリがあって、
touch /aaa/bbb/ccc.txt
ってやりたい時、
bbbディレクトリに書き込みパーミッションがあれば、
aaaディレクトリは書き込み禁止であっても書き込める。
よって、bbbはaaaに支配されているわけではない。
aaa自体の書き込みパーミッションは、
aaa直下に作成するファイルにしか効かない。
つまり、bbbはaaaの支配には属していない。

847 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:10:11 ]
基本的には親ディレクトリを削除したら下は全部削除されるんだから支配されてるでしょ。
孫請け会社が親とは直接的なやり取りがないのとおなじ

848 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:19:12 ]
リンク

849 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:19:17 ]
>>846 >>847
だから、勝手に言葉を定義されても困るのですが。

>>845
「再帰的(reccursive)に」というキーワードがありますね。 よくあるオプションは-rですか。


850 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:21:22 ]
-Rだな



851 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:33:05 ]
>>849
言葉を定義してるはあなたも同じでしょ。

YAHOO辞書に従うと、類義で傘下があるから傘下としてはただしいんだし。

852 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 19:42:10 ]
>>851
いや、してませんけど。
言葉は流動的なもので、大辞林や広辞苑にこう書かれている、としても、
それがすべての場合に同様に正確にあてはまるわけではないのは、日常の
言葉のやりとりで体得していないのですか?
プログラム言語じゃあるまいし。

853 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 20:20:38 ]
>>847
逆。下のディレクトリがあると親ディレクトリは削除できない。
そういう意味では子に親が支配されてる。

あと、NFSとかnullfsでループバックマウントする場合、
子のディレクトリを別の場所にマウントすると
まさに親ディレクトリに関係なく子のディレクトリにアクセスできる。
ディレクトリ間は単にリンクしあっているだけであって、支配関係はない。

854 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 22:40:38 ]
>>852
指標にはなるでしょ。
根拠をしめしてるだけ、ちゃんと示してる。

>>853
削除できないようにしてるだけ。

855 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/07(水) 22:59:03 ]
いったいなんのスレだここはw

856 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/08(木) 05:17:48 ]
こういう宗教戦争があるのがUNIX板のいいところ

857 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/08(木) 08:25:57 ]
どうでもいいが、>>836 で正解もらってるのに、
>>835 = >>832 から礼の一言もなしに書き逃げしてるなw






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<196KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef