1read 100read
2012年3月UNIX157: root で rm -rf / (302) TOP カテ一覧 スレ一覧 2ch元 削除依頼
\chapter{\TeX} % 第八章 (355)
CTCテクノロジーのSolaris美人講師 (378)
私は感動した!!ありがとうUNIXの皆さん!2006夏〜 (756)
お前ら、WebDAVについてご自由にお語り下さい。 (687)
NetHack 地下:56 (485)
田中康夫のThinkPadを強奪してFreeBSDを入れる会 (188)

root で rm -rf /


1 :02/03/03
ネタとしては死ぬほど見かけるこれ、実際にした人は少ないと思います。
ぜひ一度はやってみましょう。

参考
ttp://www.sra.co.jp/people/katsu/doc/rmrf/

2 :02/03/03
今だ!2ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

3 :02/03/03
やってどうすんのよ?www
けど実際にやってみたやつがいるとわ。。
ーーーーーーーー終了ーーーーーーーーーーーーー

4 :02/03/03
http://www.sra.co.jp/people/katsu/doc/rmrf/freebsd/log.txt
↑実際に実行したアフォのコンソール出力

5 :02/03/03
>>1
自分に実行しろ

6 :02/03/03
rm -rf >>1

7 :02/03/03
VMware でやれ。

8 :02/03/03
VMwareでやるならNon-persistentモードでやれば
何度でも rm -rf / の実験が手軽にできるよ。

9 :02/03/03
オレやったことあるよ。Vine 1.1で。
XEmacsコンパイルして、展開したソース消そうとして、
% rm -fr XEmacs(スペース)/
ってやっちゃったの。やけに時間かかるな。あれっ?ひょっとして..
で、あわてて止めたけど、もう ls も cd も無かった。
Windows パーティションも巻き添えになって綺麗に消えてきれました。
当時は知識がなかったので、仕方なく始めから入れ直したけど、
FDで起動していろいろ調べれば面白かったかもね。
犬厨だった2年ほど前の事でした。
#今も厨だけどね。

10 :02/03/03
(´-`).。oO(rm .*~ しようとして rm .* したことがあったなぁ)

11 :02/03/03
rm -rf /
とrootでやろうとすると
laser5linux
でやると効かないよ
いやね
ほかもそうかな

12 :02/03/03
オレのパソコンNECだけど、試しにやってみたら、不要ファイルが消えて
パソコンの調子が良くなったよ。みんなも一度はやってみなよ。

13 :02/03/03
>>10
俺もある...
これ以降findでゴニョゴニョとするようになった

14 :02/03/03
やった人ほんとに少ないかな?
だれでも一度はやることではないかと。
ちなみに2度やった人を攻めるつもりもありません。

15 :02/03/03
自慢じゃないけど、UNIX歴10年以上だけど、
# rm -rf /
や、それに類することは一度もやったことない。
rm とはちょっと違うけど、
CDPATHを設定していて、
cd 時に意図とは違うディレクトリに移動してしまい、
その違うディレクトリ上でファイル操作を行なってしまって
混乱したことがあった。
それ以来 CDPATH の設定をやめた。
また、シェルの各種の「便利な機能」も誤操作の元なので、
できる限り設定を外して使わないようにした。

16 :02/03/04
root で rm の入力ミスはやばいので、
rm の option 引数全部書いてから
行頭に戻って sudo 書いて実行してます。

17 :02/03/04
単純な疑問です。なぜOSやコマンドが消えているのにプロセスが停止しないのでしょう?
メモリにプログラムやOSがすでに格納されているから? と思っているのですが。

18 :02/03/04
man 2 unlink

19 :02/03/04
>>17
その状態においてスワップしたらとまるUNIX多いです。
(カーネルだけあるけど何も動かん状態)
とまらなかった、という解もあるけれども、
必ずしもそれが一般解ってわけでもありません。
その訳に気付け もっとOSと対話しろ

20 :02/03/04
誰か rm をハックして rm -fr / とできないパッチを公開して下さい

21 :02/03/04
つーか、i オプション使えばいいのでわ?

22 :02/03/04
>>20
大概のUNIXにはGENZINAという機能があり
aliasというコマンドを使って味噌
つかな早い安いでかいの大容量HDD時代なんだからrmなんて
使わないで自分でごみ箱プログラム作っておくのが常識最強
恐ろしく忘れたころごみ箱掃除すりゃいいんだよ

23 :02/03/04
#!/bin/sh
MSG1=そのようなファイルやディレクトリはありません。
MSG2=ごみ箱の中身を表示します。
MSG3=ごみ箱の中身を消去します。
MSG4=このプログラムはごみ箱を使うためのプログラムです。
DATE="$(date +%y%m%d-%H%M%S)"
TRASH=Trash
if [ -d ~/"$TRASH" ];then
:
else
mkdir ~/"$TRASH"
fi
case $1 in
-s | --status ) ls -A ~/"$TRASH"/
;;
-d | --delete ) rm -rf ~/"$TRASH"/*
;;
-h | --help )
echo " -s --status : $MSG2"
echo " -d --delete : $MSG3"
echo " -h --help : $MSG4"
;;
esac
if [ -e "$*" ];then
mv "$*" "$*$DATE"
mv "$*$DATE" ~/"$TRASH"
fi
はじめて組んだスクリプトなんでつっこみキボンヌ
もうちょっと詰めたい所があるけどとりあえずこれだけ。

24 :02/03/04
やりたいこと、
その1、せっかくMSG1とかにしてるので
環境変数あたりで英語のメッセージをだせるようにしたい。
その2、ごみ箱に移動させるときの引数が"$*"だと
複数のディレクトリを同時に処理できないのでなんとかしたい。
その3、その2の処理のときにエラーメッセージもだしたいが、
caseの"$1"と処理の"$*"でぶつかってしまうのでそれをなんとかしたい。
って、こんな簡単なスクリプトで1時間以上なやむなんて…(鬱

25 :02/03/04
>>24
マシンに力があるなら圧縮を取り入れるとファイルも1個になりで吉
a=${a:-`date '+%y%m%d_%H:%M:%S'`}
lha a /mnt/sys.login/ゴミ箱/"$a"back.lzh $*
\rm -R $*
圧縮は好みで選択。複数なデレクトリやファイルでもダイジョブだろ

26 :02/03/04
いつから
>#!/bin/sh

> DATE="$(date +%y%m%d-%H%M%S)"
なんてことができるようになったんだ。知らなかった…。

27 :02/03/04
だめだーーー(涙
if [ -e "$*"];then が原因だったっぽい。
ってことで
if [ -e "$*" ];then
mv "$*" "$*$DATE"
mv "$*$DATE" ~/"$TRASH"
fi

tar -cvf ~/"$TRASH/back-$DATE.tgz "$*"
rm -R "$*"
に修正でっす。
うひひさんありがとー♪

28 :02/03/04
>tar -cvf ~/"$TRASH/back-$DATE.tgz "$*"
俺も厨なんであれだがこの行おかしくね?

29 :02/03/04
あ、>>26さん。
僕はlinuxなんで/bin/shはbashです。
でも、ashでもできましたよ?(たった今確認)
むー、今度は case文のところでエラーがでたぞ(汗
(27の修正で…)

30 :02/03/04
>>28
おかしいっす。
「"」の数があってない(藁

31 :02/03/04
一応完成かな?
#!/bin/ash
case $LANG in
ja_JP*)
MSG2="ごみ箱の中身を表示します。"
MSG3="ごみ箱の中身を消去します。"
MSG4="このプログラムはごみ箱を使うためのプログラムです。"
;;
*)
MSG2="Show files in TRASH BOX"
MSG3="Delete files from TRASH BOX"
MSG4="This program is to use TRASH BOX"
;;
esac

DATE="$(date +%y%m%d-%H%M%S)"
TRASH=Trash
if [ -d ~/"$TRASH" ];then
:
else
mkdir ~/"$TRASH"
fi
case $* in
-s | --status ) ls -A ~/"$TRASH"/
;;
-d | --delete ) rm -rf ~/"$TRASH"/*
;;
-h | --help )
echo " -s --status : $MSG2"
echo " -d --delete : $MSG3"
echo " -h --help : $MSG4"
;;
*)
tar -czf ~/"$TRASH"/back-"$DATE".tgz $*
rm -R $*
;;
esac

32 :02/03/04
ちなみに、alias で rm -i とオプションを付けるのは却って危険です。
絶対にやめましょう。

33 :02/03/04
初心者だったころ,
# rm -fr /etc
をやったことある. 再起動もできなくなった.
諦めて再インストールした.

34 :02/03/04
>>29
SunOS[45] の /bin/sh じゃできんよ。
ksh あたりが由来の拡張機能じゃないかね?

35 :02/03/04
オセマ
ナクタ
| | |
ニスリ

36 :02/03/04
作ってる奴に質問なんだが
-s オプションってtgzファイルが一個見えるだけで
何の意味もないんでない?
lsを使うんじゃなくて"tar tvf ゴミ箱のなかのファイル"
っていうふうにするんでは?
というかすでに$TRASH はディレクトリである必要もないし。
ところで圧縮書ける時のtarのオプションおかしくね?
ファイルを追加する場合はcじゃなくてrでなかった?

37 :02/03/04
>>34
つかえないshもあるってことですね。
肝に命じておきます。
>>36
いちおう最初の予定でそのままmvするはずだったので、
ls -A になってますた。そのために秒数までfile名に埋め込んだので…
何時ごみ箱にほうりこんだか分れば良いかなと…
あとは、時間からほうりこんだfileを予測して、
わからない分はtar -tzf hogeで確認ってことで?
駄目っすか?(汗
そんな感じで r じゃなくて c にしました。
でも、36さんのやつの方が良さそうなので書きなおしてみまっす。

38 :02/03/04
あ、元作者さん居たのか。
居ないのかとおもって書き直し始めてたのに。
まぁ書き直してくれるなら任せよ。
一度gunzipしてからtar rしないといけないのが
微妙に面倒くさい感じ。

39 :02/03/04
任せるつもりが完成してしまったんではっとく
#!/bin/sh
case $LANG in
ja_JP*)
MSG2="ごみ箱の中身を表示します。"
MSG3="ごみ箱の中身を消去します。"
MSG4="このプログラムはごみ箱を使うためのプログラムです。"
;;
*)
MSG2="Show files in TRASH BOX"
MSG3="Delete files from TRASH BOX"
MSG4="This program is to use TRASH BOX"
;;
esac
DATE="$(date +%y%m%d-%H%M%S)"
RECYCLE=trash.tar
if [ -w ${RECYCLE}.gz ];then
gunzip ${RECYCLE}.gz
fi
case $* in
-s | --status )
tar tvf $RECYCLE
gzip $RECYCLE
;;
-d | --delete )
rm $RECYCLE
;;
-h | --help )
echo " -s --status : $MSG2"
echo " -d --delete : $MSG3"
echo " -h --help : $MSG4"
;;
*)
tar rf $RECYCLE $*
gzip $RECYCLE
rm -r $*
;;
esac

40 :02/03/04
しまった。-s オプションが与えられた時の処理を
-s | --status )
if [ -r $RECYCLE ]; then
tar tvf $RECYCLE
gzip $RECYCLE
else
echo "$MSG5"
fi
にしないと-dした後におかしな動きになるわ。

41 :02/03/04
こうなりました。
ん〜、case文のなかにif文…
美しくない…
#!/bin/ash
case $LANG in
ja_JP*)
MSG2="ごみ箱の中身を表示します。"
MSG3="ごみ箱の中身を消去します。"
MSG4="このプログラムはごみ箱を使うためのプログラムです。"
;;
*)
MSG2="Show files in TRASH BOX"
MSG3="Delete files from TRASH BOX"
MSG4="This program is to use TRASH BOX"
;;
esac
TRASH=DustBox
case $* in
-s | --status ) tar -tzvf ~/"$TRASH"
;;
-d | --delete ) rm -rf ~/"$TRASH"
;;
-h | --help )
echo " -s --status : $MSG2"
echo " -d --delete : $MSG3"
echo " -h --help : $MSG4"
;;
*)
if [ -f ~/"$TRASH" ];then
tar -rzf ~/"$TRASH" $*
else
tar -czf ~/"$TRASH" $*
fi
rm -R $*
;;
esac

あとは取り出しをどうするかだな。
できれば組み込みたい。。。

42 :02/03/04
>>41
tar rzf って可能?
うちの環境ではエラー吐いたんだけど。
バージョンはこんな感じ
> tar --version
GNU tar version 1.11.2
あと、取り出しよりも前に引数がなかった場合に
エラーメッセージ出したいんだけど、どうすればいい?
シェルスクリプト書いたことなくてよくわかんね。

43 :02/03/04
rzfはこっちの環境でか可能です。
tar (GNU tar) 1.13.17
debian GNU/linux のpotatoなんで結構古いはず。
って。woodyもそんなにかわらん
tar (GNU tar) 1.13.25 (woody)

44 :02/03/04
これって、TRASH にファイルを突っ込むソフトはどれ?

45 :02/03/04
ごめん、よく読んだら組み込んであった

46 :02/03/04
Debian はいけるのか。俺、FreeBSD だからなぁ
とりあえず、引数のチェックを入れてみた
こんなもんでどうだろう?
#!/bin/sh
case $LANG in
ja_JP*)
MSG2="ごみ箱の中身を表示します。"
MSG3="ごみ箱の中身を消去します。"
MSG4="このプログラムはごみ箱を使うためのプログラムです。"
MSG5="ごみ箱は空です"
;;
*)
MSG2="Show files in TRASH BOX"
MSG3="Delete files from TRASH BOX"
MSG4="This program is to use TRASH BOX"
MSG5="TRASH BOX is empty"
;;
esac
RECYCLE=$HOME/.recycle.tar
if [ ! $1 ]; then
echo "use -h for help"
exit
fi
case $* in
-s | --status )
if [ -r $RECYCLE ]; then
tar tvzf $RECYCLE
else
echo "$MSG5"
fi
;;
-d | --delete )
rm $RECYCLE
;;
-h | --help )
echo " -s --status : $MSG2"
echo " -d --delete : $MSG3"
echo " -h --help : $MSG4"
;;
*)
if [ -w ${RECYCLE}.gz ]; then
gunzip ${RECYCLE}.gz
tar rf $RECYCLE $*
else
tar cf $RECYCLE $*
fi
gzip $RECYCLE
rm -r $*
;;
esac

47 :02/03/04
お、良い感じ。

48 :02/03/04
んで、良くわからんのが
たとえば
$dust -g [file1 file2]
としたときに、スクリプト側でどんな風に引数わたしたら
良いかわかんない(汗
この場合 dust がこのスクリプトで -g が get でfileの取り出しを
する引数、んで、第2引数以下を取り出すfile名にしたいんだけど…

49 :02/03/04
>>48
ちょっと調べてみたけど引数は$0〜$9までで
$0はコマンド名、$1がオプションとなると8個までしか
同時にファイルを指定できないんだよね。
$2〜$9を並べれば一応できるけどちょっと不便・・・。
もっと詳しい人降臨希望。

50 :02/03/04
ちょと訂正あり。
case $* in
-s | --status )
if [ -r ${RECYCLE}.gz ]; then
tar tvzf ${RECYCLE}.gz
else
echo "$MSG5"
fi
;;
-d | --delete )
rm ${RECYCLE}.gz
;;
{}.gzが抜けてますた。

51 :02/03/04
ん〜、shiftで行けるのかな?
こんな感じで。
#!/bin/sh
case $1 in
-r ) shift
echo "get $*"
;;
* )echo "end"
esac
exit 0
どうだろう?

52 :02/03/04
どうも、
for $hoge in $@
do
$hoge
done
ですべての引数を処理できるらしい

53 :02/03/04
>>50
その通りでした。訂正さんくす!

54 :02/03/04
取り出しを組み込んでみたよ。
ln -s dust recycle
した上で使ってくれ。
#!/bin/sh
TRASH=$HOME/.trash.tar
TMPDIR=/tmp
MYNAME=`basename $0`
(中略)
if [ $MYNAME = "recycle" ]; then
if [ -r ${TRASH}.gz ]; then
tar xvzf ${TRASH}.gz -C $TMPDIR

for file in $1 $2 $3 $4 $5 $6 $7 $8 $9
do
cp ${TMPDIR}/$file .
done
else
echo "MSG5"
fi
exit
fi
(後略)

55 :02/03/04
ゴミ箱にいくつも同じファイル名のファイルがあった場合や
引数が多すぎた場合の処理だとか、TMPDIR の後始末が課題になるな

56 :02/03/04
なんか投稿できてなかったぽいのでもう一度。
前略
case $1 in
-s | --status )
if [ -r ${RECYCLE}.gz ]; then
tar tvzf ${RECYCLE}.gz
else
echo "$MSG5"
fi
;;
-d | --delete )
rm ${RECYCLE}.gz
;;
-g | --get )
shift
tar zxvf ${RECYCLE}.gz $*
後略
exit 0
これでどうかな?
>>54
いきなり難しくなった(藁
ちょっとman読むね。

57 :02/03/04
>>56
ノォォォォッ!!
tar xvzf hoge.tar.gz ファイル名
でファイルが取り出せるなんて
UNIX使い始めて4年目にして初めて知った!(激恥
#!/bin/sh
TRASH=$HOME/.trash.tar
MYNAME=`basename $0`
(中略)
if [ $MYNAME = "recycle" ]; then
if [ -r ${TRASH}.gz ]; then
tar xvzf ${TRASH}.gz $@
else
echo "MSG5"
fi
exit
fi
(後略)
コレだけでよかったのか?
こんなの考えてたのに・・・。
mkdir ${TMPDIR}/$$
tar xvzf ${TRASH}.gz -C ${TMPDIR}/$$
for file in $1 $2 $3 $4 $5 $6 $7 $8 $9
do
cp -r ${TMPDIR}/$$/$file .
done
rm -rf ${TMPDIR}/$$

58 :02/03/04
>>57
> tar xvzf hoge.tar.gz ファイル名
> でファイルが取り出せるなんて
> UNIX使い始めて4年目にして初めて知った!(激恥
僕もtarのoptionながめてて、ついさっき知りました :-)
> #!/bin/sh
>
> TRASH=$HOME/.trash.tar
> MYNAME=`basename $0`
>
> (中略)
>
> if [ $MYNAME = "recycle" ]; then
> if [ -r ${TRASH}.gz ]; then
> tar xvzf ${TRASH}.gz $@
> else
> echo "MSG5"
> fi
>
> exit
> fi
>
> (後略)
>
> コレだけでよかったのか?
っぽいですね。
でも、僕はまだ $* と $@ の違いがわかってなかったり。。。
ん?$*にはIFSってのがからんで$@には関係ないのかな?
って、IFSってのが良くわからん(汗
んで、どっちを採用しましょう?
僕的にはcase文にいれたいですけど…
どっちがよりスマートなんでしょう…

59 :02/03/04
>>58
http://www.rhythm-cafe.com/kb/shell/index.asp?sid=46&id=55
に$@ と$* の違いが載ってたよ
まぁ、取り出しをどうするかなんてのは好みでいいんじゃないかな。
でも、俺のやり方だとシンボリックリンク用意しないといけないから
そっちのがスマートかもね。

60 :02/03/04
>>59
おぉ、thx!!一発でわかった(爆
俺頭悪いな(汗
ってことで、ちょこちょこ修正して
ん〜、2ch/Linuxスレのupローダにでもあげときますわ。
使いたい人は御自由にどうぞってことで。

61 :02/03/04
あああああああ、ネタのようだ。。。。。
折角つくったfileをrm しちまった…
あほだ<俺

62 :02/03/04
>>61
ちょっと目を離したすきにヤルじゃん。オチも良いよ
っていうかさぁワラタ
良いネタ師になれる
僕はあくまでrmとして使うから復活は全く考慮しない
倉庫代わりのクセはイヤンだから
でも凝るのもなかなか良いかもね

63 :02/03/04
こんな時こそゴミ箱を!
ってシャレになんねーな(w
俺の作った野でよければ
http://musou2.compress.to/dust
に置いとくよ。

64 :02/03/04
翻訳メッセージの取得に gettext コマンドを使うとそれっぽいかも。
そこまですることのもんでもないかもしれんが(ワラ

65 :02/03/04
>>46のやつは保存してたので、それを元に書きなおした♪
ミスってたら、やだな。
http://linux2ch.omosiro.com/cgi-bin/upload.cgi
の081.binです。拡張子を取って好きにリネームしてください。
んで、PATHの通ったとこに。

66 :02/03/04
-g オプションの後にファイル名を与えないと
全部のファイルが取り出されるのは仕様ってことでいいか(w

67 :02/03/04
>>66おっけーでしょう?(藁
普通にtarでも引数を指定しなかったらすべて取りだすし。
あれ?もしかして。"-s"あたりに統合できるのか?(汗

68 :02/03/04
スレとはあんま関係無いけど、
FATパーティションをマウントし、"con"って名前のファイル作って
Windowsを起動したらどうなりますか?

69 :02/03/05
流れよく読んでないけど、
#!/bin/sh で動かない script なら、
行頭の文字を
#!/bin/bash, #!/usr/bin/bash などと限定した方が
いいと思う。

70 :02/03/05
畜生、おれのスレをスレ違いだらけにしやがって。

71 :02/03/05
>>70 おれのスレだってさ(プ

72 :02/03/05
こらこら、騙るでないw

73 :02/03/05
むかし >>9 と同じようなコトした。スペース入れて、やけに時間かかると思ったのも
同じ。今は/に“-i”って空のファイルを置いてる。気休め、気休め。

74 :02/03/05
>>20
rm -i を rm のエイリアスに設定していると、知らないうちに \rm と打っている自分が
います。
zsh とかで \rm -R * するとホントに消して良いのか? ってメッセージが出ますよね。
それを \rm -R /* の時だけ、繰り返しメッセージ出すように変えられませんかね?
或いはコマンド自体、完全に禁止してしまうとか。

75 :02/03/05
>>64
bash2なら
http://www.unixuser.org/~ysjj/bash_script_i18n.html
というのがあるYO!

76 :02/03/05
>>1
アホ

77 :02/03/05
1は天才

78 :02/03/05
ばかとてんさいはかみひとえ

79 :02/03/05
>>78
でも馬鹿は馬鹿。

80 :02/03/27
ここで出来たスクリプト、おっきなファイルを捨てようとすると
重いのはまぁ納得だし、我慢するけどスペース含んだファイルを
捨てれないのが微妙にイタい。

81 :02/03/27
>>80
>我慢するけどスペース含んだファイルを
>捨てれないのが微妙にイタい。
本当だ、気づかなんだ…
なんか解決策ないっすかね?

82 :02/03/27
$find / -depth \( \( -type d -exec rmdir -- \{\} \; \) -o \( ! -type d -exec rm -- \{\} \; \) \)

83 :02/05/16
1で参照されているページを書いた者です。
>19 その状態においてスワップしたらとまるUNIX多いです。
それは普通ないと思ってます。
「多い」とのことですが、私の基準ではそれは病的な実装です。
実証されれば、広く発表するに値する情報かと思います。
具体的に、どんなOS(のどんなバージョン)で起きるのでしょうか?
再現する方法がありますか?
止まるとは、具体的にはpanicするということでしょうか?
ちなみに、
http://www.sra.co.jp/people/katsu/doc/rmrf/
での実験中にはpaging activityも通常どおりありました。

84 :02/05/16
>17 なぜOSやコマンドが消えているのにプロセスが停止しないのでしょう?
UNIXと呼ばれるもののsemanticsでは、
unlink(2)やrm(1)しても、コマンド(や対応するファイル)は*消えない*んです。
ディレクトリから消えるので、ls(1)とかするとなくなったように見えますが、
だれかが参照しているかぎり(コマンドを実行中とか、open(2)してるとか)
ファイルシステムには残ってるというわけです。

85 :02/05/16
でも、NFSクライアントがバイナリを実行中に、
NFSサーバ側からそのファイルを rm すると、
本当に消えて NFS クライアントがコアダンプしたりもする。

NFSクライアント側から消した場合は一応問題はないが、
.nfs???? とかいうファイルが出来てそれはそれでうざい。

86 :02/05/16
>80 スペース含んだファイルを捨てれないのが微妙にイタい。
quoteに全く気を使っていないからでしょう。
ここで書かれたスクリプトについては検証していませんが、あくまでも一般論として:
quoteに気を使わないで書かれたスクリプトは、トロイの木馬的なセキュリティホールを空けてしまう
可能性が大です。理由は自明でしょう。使ってはいけません。
セキュリティとは関係なくとも、いかにも事故を誘発しそうな気がしますよね。
shでスクリプトを書く場合、$@や$1のように表記するのが正しい局面というのはほとんどありえません。
"$@"や"$1"のようにすべきです。
通常の変数については、中身にある種の仮定が常に成立することをもって
quoteを省略する根拠とすることもありえましょう。
ちなみに、"$@"という表現はportabilityに問題があった時代もありました。
現在の事情はよく知りません。
だれかshに詳しい人教えて下さい。

87 :02/05/16
>>86
"$@" ってポータビリティに問題があった時代があったのですか?

たとえば、NEWS-OS 4.x の /usr/bin/nohup で、
通常なら "$@" と書くべきところが $* になっていて、
「これ書いた人シェルスクリプト知らねーんじゃねーの?」
と、思っていましたが、知った上であえて
$* と書いていたのでしょうか?

88 :02/05/18
>1
そーか? 寝惚けてた俺はカレントのファイルを消そうとして
rm -rf ./* → rm -rf /*
と打ったことに気がついて一瞬で目がさめたよ。

89 :02/05/18
寝惚けて妙な事をする事は無いけど、たまに恐ろしく
眠くて意識を失ないかけのときは何をしでかすか分からんから
そんな時の自分は恐い。

90 :02/05/18
rm -rf * とかは、必ずbashで C-x * して
コマンドライン中で展開してから実行する。
あと、1回目はlsして、2回目にそれをrmに換えるとか。

91 :02/05/19
rmがオプション取らないようにmakeしなおした。

92 :02/05/19
>>91
その手の回避策を取っていると、環境が変わった時に惨劇を引き起こす場合のある罠

93 :02/05/19
>>88
よくある話ですな。

94 :02/05/19
ディレクトリ単位で消す時はなるべくファイラ使うようにしてます。

95 :02/05/19
>>94
で、長いディレクトリを消そうとしたら、バッファの扱いが適当じゃなくて・・・。

96 :02/05/19
>>92>>74
「yぽこ病」ってのもあるらしい。

97 :02/05/19
yes |

98 :02/05/19
なんかレベル低いスレだなぁ・・・

99 :02/05/30
亀だけど、
>>19
スワップはふつー独立のパーティションにあるから
関係ないんじゃないすか。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
OpenLDAP (305)
gnus (881)
netatalkについて語るスレ (831)
OpenSolaris/Illumos (OpenIndiana, etc.) 5 (920)
UNIXerなアニヲタは何に萌えてますか? Part4 (510)
OpenLDAP (305)
--log9.info------------------
 ○ 萩原聖人 part8 ○ (555)
池内博之 (177)
津田寛治3 (884)
進藤学 version.5・5 (606)
***林遣都L*** (379)
谷原章介 part7 (712)
【唯一無二】柏原崇5【美形俳優】 (439)
徳井義実 (128)
ΩΩ小澤征悦ΩΩ (146)
勝地涼 6 (586)
和田正人 3.5 (263)
つるの剛士part44 (800)
遠藤要〜Round1 (354)
吉田栄作 3 (195)
【第1回】鈴木亮平【キャンペーンボーイ】 (104)
益岡徹 2 (404)
--log55.com------------------
クルーズ船から4人目の死者。名探偵コナン並みの死亡率になってきたぞ。
京急「油壺の温泉が湧き出やぁぁっす」
英国インペリアルなんとかセンター「日本は新型コロナで76万人死ぬ」
【精神論】経団連会長「新型肺炎、みんなで一致してねじ伏せるしかない」
武ッコロウイルス、「完治した」として退院した感染者の14%に再び陽性反応
【台湾】蔡政権、新型コロナウイルス対策を次々と迅速に実施して支持率急上昇
NYダウ平均株価、2日間で1911ドル下落 米国史上最大の下げ幅\(^o^)/
イタリア「パスタ茹でるな」スーパーから食料品が消える