2012年3月UNIX157: root で rm -rf / (302) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Windows禁止の職場に勤める人の集い (112)
cronに何を設定している? (379)
【諸刃の】ブレード・サーバってどうよ【剣】 (250)
O2に付属のIrixって (104)
UNIX関連イベント告知はこちらでどーぞ。 (115)
CTCテクノロジーのSolaris美人講師 (378)

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
スワップはふつー独立のパーティションにあるから
関係ないんじゃないすか。

100 :02/05/30
100げっつぉ

101 :02/05/30
101 ばーがー、くろいつ、はいでるん

102 :02/06/01
/bin、/devが消えたとこでCtl+c しましたが、何か? (もちろん再起不能)

103 :02/06/05
rootでファイルを消す必要があった時は、
# mv hoge /tmp
して、自動で消えてくれるのを待つようにしている。
下のようなスクリプトを実行してしまって得た教訓。
# set build=/tmp/hoge
rm -rf $build/*
cd $build
tar zxf /tmp/hoge.tar.gz

104 :02/08/12
渡邊さんSRAを退職されたのね。
てことで、>>1のリンク先も移動。
http://katsu.watanabe.name/doc/rmrf/

105 :03/01/02
       あるネット関連会社の社長は、「いずれにしても2ちゃんねるは
資金が底をつけば終わり。あまり知られていないことだが、
2ちゃんねる内部関係者によると今、大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」と証言する。
2ちゃんねるが判決によって力を失った場合、資金提供の打ち切りも予想される。
http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html
 以下、別の記事のキャッシュ http://memo2ch.tripod.co.jp/article.html
 2ちゃんねるに近いあるインターネット関連会社の社長は、2ちゃんねるの幹部から得
た話として証言する。「2ちゃんねるは、運営者や幹部などがそれぞれ別々に会社を
作りカネの流れを見え難くしているが、実際の資金源は複数の大手通信会社系からの
調査費名目のカネ。月額で計約700万円と言い、年間にすれば1億円近く。額はともあ
れ、これは通信会社系的には、ぼう大なトラフィックを調査すると言う表向きの理由
が一応は立つ。自社系に都合の悪い書き込みがされた時に優先的に削除してもらうこ
とも期待している」と前置きし「通信会社系の削除の期待も含めて、2ちゃんねるは
総会屋と同じになっている」と言うのだ。
 その具体的な理由として社長は、こう話す。「2ちゃんねるはボランティアの削除人
が書き込みをチェックして、好ましくない書き込みを一所懸命削除している、という
ことになっているが、あれはウソ。削除人には給料が支払われ、その給料の原資と
なっているのが、まずいことを書き込まれた企業が削除要求とともに渡す裏金。これ
はまさに、総会屋の構図そのものだ。これまでになっているのは金額で折り合え
なかったり、裏金を出さない強い態度の企業とだけだ」

106 :03/01/06
漏れのつまらん失敗談。
アンインストしようと思ったPlamo Linuxに
#cd /
#rm -fr /
したら,Windows領域自動mountしてるの忘れてて,気づいた時には
Program Filesフォルダが消えていた.

107 :03/01/13
>>106
思わず藁田
# Plamo'er なら update より再インストだろうが、
俺も気をつけねば。

108 :03/01/13
NFSで(ry
-o root 渡すマシンは考えてやろうという教訓

109 :03/01/13
恥ずかしながら本当にやってもた。
#pwd
/root/junk/
#rsync --delete rsync://localhost/test/ .
rsyncd.confの記述ミスでエラー.
#cd /etc
#vi rsyncd.conf
#rsync --delete rsync://localhost/test/ . # <<< やってもた!
/etcの下をゴミファイルに変えてしまいました。

110 :03/01/14
関西人は氏ねってことでしょうか。。。

111 :03/01/15
(^^)

112 :03/03/08
間違って、やってしまいました.....
気がついた時には....
boot領域の容量が、半分になってしまった.....
たく。。
くそ忙しいのに....涙

113 :03/03/22
最近OSの調子が悪かったので、再インスコの前にバックアップをとって、しました。
バックアップHDをつなぎっぱでやってしまったので、全て消えました。

114 :03/04/17
(^^)
115 :あぼーん:あぼーん
あぼーん
116 :あぼーん:あぼーん
あぼーん

117 :03/05/27
私は何も知らなかったころ、自分専用マシンだからまだ良いものの
rm -fr $PWD ペシッ
・・・うぐおおお! 
となったことがあるのでsudo使ってますが何か?
118 :あぼーん:あぼーん
あぼーん

119 :03/05/28
>>117
sudo rm /etc
した事があります。
直前にもsudo使ったので、パスワード確認無し…
似たような構成のマシンからそっくりコピーしてなんとか復旧。

120 :03/06/21
以前、カレントディレクトリ以下の特定の名前のディレクトリを
まるごと全部消そうとしたとき、
find ./ なんちゃらかんちゃら -exec rm -r {}/* \;
みたいにやったら……そりゃないよママン。
変な制限つけないでくれよ。
121 :あぼーん:あぼーん
あぼーん
122 :あぼーん:あぼーん
あぼーん

123 :03/08/10
既出
http://katsu.watanabe.name/doc/rmrf/
http://pc.2ch.net/test/read.cgi/unix/1015160064/

124 :03/08/10
>>123
誤爆?

125 :03/08/10
>>124
再帰だろう

126 :03/08/12
やったことあるよ、結果は分かるでしょ。
rm -rf ./
のつもりが、
rm -rf . /
になってたのよ。
127 :あぼーん:あぼーん
あぼーん
128 :あぼーん:あぼーん
あぼーん

129 :03/08/15
# rm -rf "山崎 渉"

130 :03/10/05
ついに rm -rf をやってしまいました。
一週間分の仕事がパー。
テスト中のスクリプトの中でこんな記述が
あったのが悪かったようです。
rm -rf "$DIR/$FILE"
ここで $DIR も $FILE も空だったため、
/ が消えてしまった、と。

131 :03/10/05
でも、rm -rf 自体は必要な操作なので、
IsSafePath() とでもいうシェル関数を作って、
削除前に確かめたいのですが、
どんなふうにすればいいでしょうか。
IsSafePath() {
  path=$1
  if [ $path = "" ]; then
    return 1;
  elif [ $path = "/" ]; then
    return 1;
  fi
  return 0;
}
とりあえずこんなのを書いてみましたが、
これだと "///" とか "/test/.." とか
home ディレクトリで "../" とか
ln -s / test を対象に "test/" とかが
通ってしまいます。
何かいい方法はないでしょうか。。

132 :03/10/05
>>131
そもそもrootでやる必要があることなのか ?

133 :03/10/05
>>132
そ、そ、それは・・・。
でもせっかくシェル関数を作ってみたので、
"/"と"test/../../"などとの同一性を
確実に見分ける方法を教えてくだちい。

134 :03/10/05
>>133
cmpとかは ?

135 :03/10/05
>>134
・・・それってまさか、/ 以下と target path 以下の
ファイルを全部 compare しるってことですか?

136 :03/10/05
あっ、でも、こんなのでもいいかも。
で、/ 直下と全く同じ構成なんてまずあり得ないし、
そういうのは全部禁止しちゃっても問題なさげ。
cd $path
ls > /tmp/list1.$$
cd /
ls > /tmp/list2.$$
if ! cmp /tmp/list1.$$ /tmp/list2.$$; then
  return 1;
fi
ありがとうございました!
でももっとスマートな方法はないのかなぁ。
/ だけじゃなく /usr, /etc, /var などにも
適用範囲を広げられるような。

137 :03/10/06
データ消失記念日
http://dqn.cc/83f815B835E8FC18EB88BL94O93FA.html
「2003年10月初頭、ぼくは操作ミスにより大事なデータを
失ってしまいました。この文書では、データを失った過程を説明し、
反省点および今後に向けた課題について論じます」(『はじめに』より)

138 :03/10/11
>>136
man realpath

139 :03/10/14
ところでLindowsってゴミ箱あんの?

140 :03/10/15
>>139
http://www.lindows-jp.com/img/about/p_02.jpg

141 :04/02/22
rmじゃないけど、
$ ln -s /home/hoge /piyo
見たいな事をやろうとして、間違って
$ ln -s /piyo /home/hoge
とやってしまって1ユーザのホームを全滅させちまったことがある。

142 :04/02/22
>>141
ハァ?

143 :04/02/26
rootのaliasでrmをrm -iにするだけでOKじゃんと思っていたが
でも確かに\rmってつけて動かす時あるから同じなんだよね。
うーん...

144 :04/02/28
# rm -rf .*
ってのはどうでしょうか。

145 :04/10/02
age

146 :04/10/02
一旦、まっさらにするときに試しにやったことはある。
% \rm -rf /

147 :04/10/06
rm じゃないが、パーティションの引越し(/foo→/bar)をミスったことがある。
/bar をtypoして /baz という実在しないディレクトリ名としてしまった。
# cd /foo
# tar cvf - . | (cd /baz; tar xf -)
ぱっと見では壊れてなさげだったけど、念のため再インストールした。
それ以来はこうするようにしている。
# tar cvf - . | (cd /bar && tar xf -)

148 :04/11/15
FreeBSD4.1くらいのときに、ロックか何かされてるんじゃ?
なんて、思いながら、
# rm -rf /
やりました。
予想外にディスクがガリガリ言い出したので、慌てて
電源切りましたが、二度と起動しませんでした。(ワラ

149 :04/11/20
rm -rf / なんてまず使わないのになんでコマンドとして許可されてるのかね
いまだに不思議だ

150 :04/11/20
すごい発言

151 :04/11/20
同じことを freebsd-hackers@ にポストした香具師が居たなあ……
ttp://lists.freebsd.org/pipermail/freebsd-hackers/2004-October/008493.html
で、お約束の大論争の末、FreeBSDの rm -rf / は封印された。
ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.49
# rm -rf /
rm: "/" may not be removed

152 :04/11/20
>>151
。・゚・(ノД`)・゚・。

153 :04/11/21
>>151
うへー、すげー大論争。読む気がしないや。
このスレ住人としては封印は悲しいものがあるな。

154 :04/11/21
>>151
ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.49
> Find out how flame-proof my underwear really is.
なげやりなコミットログ ワロタ

155 :04/11/25
つい、出来心で、OpenBSDにおいて、rm -rf / を実行してみた。。。ゴリゴリ消えている様子w

156 :04/11/25
# rm -rf /
rm: /home: Device busy
rm: /tmp: Device busy
ls
rm: /usr: Device busy
rm: /var: Device busy
rm: /: Is a directory
# ls: Command not found.
#
rootでの実行結果w

157 :04/11/25
Etermを導入できなかった腹いせにやってみたが、
これから、再インストール。。。
(ターミナルインストールできない俺が厨なだけか、、、

158 :04/11/25
GNUのrmだとどうなの?

159 :04/11/26
>>156
echo *

160 :04/11/26
unrm -rf /
で即時復活

161 :04/11/26
>>152-153
44bsd-csh や v7sh とかあるぐらいだから、
封印してない版の rm を ports/games にでも入れたらどうか。

162 :04/11/26
rmにゴミ箱機能をつければすべて解決

163 :04/11/26
そのゴミ箱が消されないようにしないと非解決。

164 :04/11/26
システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。

165 :04/11/26
システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。

166 :04/11/27
>>161
ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.50
にあるように、POSIXLY_CORRECT環境変数をセットしておけば
封印が解除される。
# env POSIXLY_CORRECT= rm -rf /

167 :05/01/23
>>148
C-cじゃだめなの?
まっさきに電源に手が行くところが厨っぽいですね。ぷぷ

168 :05/01/25
HDDの空き領域を全てのコマンドに対するUNDO/REDO用バッファにすれば無問題。

169 :05/01/27
つーか、root の癖してヘタレだなぁ〜w
という漏れもやったことあります。Sun3 の時代。
root でスクリプト作業をしていて、ワークディレクトリとして /tmp/work を掘って作業。
終了後、pwd せずに rm -rf *
ディスクアクセスが長い(2秒くらいたった)ので、Ctrl-C をして pwd したら・・・ / にいた。
boot ファイルなどが消滅。
仕方ないので、そのままの状態で他のマシンからファイルをコピーして、 boot ファイルは
再構築した。
全部確認が済んで、再起動の瞬間が一番怖かったw
でも、その後もalias も何も設定しなかった。
だってね・・・・ alias とかで慣れてしまったら、他のマシンの root で作業できなくなるから。
root に必須なことは、「ディフォルトの環境ですべてが出来ること」が信条。

170 :05/02/11
上で作ったゴミ箱のスクリプト欲しいんだけど最終版ないの?

171 :05/06/18
やっちまった
rm -rf /
ではなくて
rm -rf ./hoge
をやっちまった
単にディレクトリの補間ミスなんだが
2ヵ月間かけて書いたテキストがことごとく消えた
泣きそう
これも、消えてから2時間後に書いてるし…
本間にやばいな
もうかくきにはなれん
なんや、死にたくなるな
おまえらは、大切なデータが消えたときどうしてる?

172 :05/06/19
バックアップから書き戻す

173 :05/06/19
>>171
RAID1しかしてなかって
1時間おきのrsyncだったから
RAID1は同時に消えてる
rsyncも気づいていないうちに消えてる

174 :05/06/19
>>171
別のサーバでユーザ権限を持っている関係で、
よくネットワーク経由でバックアップを取る。
ある程度変更がでかくなると、別のメディアにもバックアップをとる。
なんらかの原因で死んだ時には、そこから書きもどす。
UNIX系列ではrmが恐いというのもあるけど、
何より、ハードディスクトラブルなどの類はいつ起こるか分からない。
事故を契機に、きちんと防護策を取るようにするといいと思う。
毎回編集後にrm *~やrm *.bakをやってたけど、最近恐くなったんで
この用途専用のスクリプトを書いて、rmとは別名でbinディレクトリに置いた。

175 :05/06/19
DOSのUNDELETEコマンド見たいのキボンヌ・・・
なんて言ったら怒られますか?

176 :05/06/19
そういうの実装してる fs ってある?

177 :05/06/19
NetApp の WAFL ってファイルシステムではできるらしいよ。
file system snapshot の機能で
rm hogehoge
すると
cp -p .snapshot/hourly.0/hogehoge .
で undelete になるらしい。
NASなのでどんなUNIXからでも使えると思う。
WAFL は log structured filesystem の一種みたい。

178 :05/06/19
RAID1だと危険なんだな
rsyncも消した次にしたらまったく意味ないし
バックアップで完全に他のメディアにまるごとバックアップとるしかないのか?

179 :05/06/19
毎回フルバックアップ取る必要はないし、フルバックアップも毎回同じメディアに上書きしてちゃ危険。

180 :05/06/20
ミラーリングによる耐障害性とバックアップとアーカイブは別の話。
ごっちゃに語るモンではない。

181 :05/06/20
うっさいしね

182 :05/06/20
漏れも最近痛い目を見たんで、
--
rm -f /home/.snap/snap-login
mksnap_ffs /home /home/.snap/snap-login
--
みたいなスクリプトを .xsession に書いた。
今後何かあっても、rootになって
--
mddev=$(mdconfig -a -t vnode -f /home/.snap/snap-login)
mount -r /dev/$mddev /mnt
--
とすればログイン直後の状態まで戻せる。
本格的にやるならcronで定期的に動かしたいところだけど、
mksnap_ffs って意外と負荷がかかるからなあ。

183 :05/06/20
おまえ激しいミスしてんぞ

184 :05/06/27
>>180
バックアップはデータの複写を別の箇所に保存すること、
アーカイブは複数のファイルをまとめたファイルまたはそれを保存するサーバで
バックアップとして利用できるもの、
ミラーリングはデータ全体の完全な複写を別の箇所にとっておくことで、
フル・アーカイブやフル・バックアップとも呼べるもの、
ディスクシステムとしてオートミラーリングを取り込んだのがRAID
‥という理解でいるけれども、どうだろうか。
互いに重なり合っている概念だと思う。

185 :05/07/05
>>1のコマンドは無いけど窓初心者の時「c:\windowsって使ってないなー。容量の無駄
だから消すか。」って色々消したら。
電源投入→windowsを起動しています→電源を切る準備が出来ました。
とか言う風になって和露ってしまた。

186 :05/07/12
alias rm rm -i

187 :05/07/12
>>186はまったく役にたたない最低の方法

188 :05/07/12
>>186が釣りでなかった場合のために、一応。
rmをrm -iへエイリアスする方法の問題は、
yぽこ病を誘発するとしてどこかの文書で非難されていた。
常にrm -iに対応する事で、rm後にyを打つ事に慣らされてしまう問題。
このスレでは>>32 >>74あたりが関連。
しまいにはrm *.txtなどとして、確認プロンプトで削除ファイルを選別する癖がつく場合もあるとか。
この癖が問題を起こすのが、他環境でのrm実行。
これを防ぐために、どうしてもrm -iをデフォルトにしたいなら、
rmとは別名の(既存でない)コマンドにして常時それを使うようにしろ、というのが一応の結論。
他環境でいつもの癖が出たとしても、command not foundで済むということ。

189 :05/07/12
うちの会社(部署)ではrmをrm -iのaliasにすることを禁止しています。
ときどき抜き打ちチェックが入ります。

190 :05/07/12
うわ、やだなそれ。
他にも面白い禁止事項ない?

191 :05/07/12
ラリー車速杉

192 :05/07/14
Makefileをホームディレクトリとかワークディレクトリに置いてます。
clean:
    /bin/rm -f *.bak *~ *.core core
$ make clean
でゴミ削除

193 :05/07/14
rmじゃないけど、うっかりやってしまって地味に痛かったコマンド
find ./ -type -d | xargs chmod 700
勿論/で実行してしまったよ…orz

194 :05/07/14
俺は rm -rf /hoge/hage/oyaji を削除しようとして、うっかり rm -rf /hoge/hage oyaji と
入力して Enter してしまったことならあるな。
気付いたのは /hoge/hage 配下に何も見当たらなくなってから。

195 :05/07/14
>193
*BSDならmtreeで簡単に復旧できるなぁ

196 :05/07/15
alias rm /dev/null <

197 :05/07/27
うおおおおおおおおおおおおおおおひいいいいいいいいいいいいいいいいい
ぐぎゃああああああああああああああああああああああああああああああああああああああ

198 :05/07/28
rm /bin/rm

199 :05/07/28
rm -rf .

200 :05/09/04
hp-uxでは効かないって知ってる?

201 :05/09/09
chmod -R 4777 /*

202 :05/09/09
*要るの?

203 :05/09/13
OpenBSDでは効いたがな。

204 :05/09/23
alias rm -rf/ echo だめよん。

205 :05/12/10
age

206 :06/01/04
% ls
kashi.txt piyo.mp3
% mv * ~/music/piyo/
を間違って
% mv *
% ls
song.mp3
%
としたことがある

207 :06/01/05
>>206
スマン、意味わからない。

208 :06/01/05
ヒント:
* 「mv *」は「mv kashi.txt piyo.mp3」に展開される
* 「song.mp3」 は typo

209 :06/01/05
そろそろOS入れ替えるから
新鯖構築終わったら遊んでみるかね

210 :06/01/06
何このネタスレ…と思ったけど>>73の -i ってファイル置くアイデアはちょっと面白いな。
おれも気休めのつもりで / と ~/ 直下に置いてみた。
まあおれは幸いにしてまだそれほどひどい事故に遭ったことはないんだが。
しかし考えてみると、そもそもファイル削除とディレクトリ(中身含む)削除に
同一のコマンドを使うってのが誤操作を誘発しやすくなってるんじゃないだろうか?
ディレクトリ単位での削除には別の適当なスクリプトでも使った方がいいんじゃないかな。
それでも間違える時は間違えるけど、引数チェックで / とかだったら蹴るとかできそうだし…。
…と思ったがこれだと今度はファイルとディレクトリをまとめて削除するのが面倒になるな。
やっぱりこの手の操作は自分で注意するしかないってことか…。

211 :06/01/06
>>210
けっきょくそのスクリプトの方を常用してしまうだろう。
あと、/ だけが危険なわけではない。

212 :06/01/06
むやみに rm に -f を入れる習慣も悪いよ。
特に -r の時は入れるべきじゃない。
ディレクトリ消すだけのときは rmdir を使い、
ファイル込みの場合は rm -r で、
それでパーミッションの警告が出るときだけ rm -fr にすべき。

213 :06/01/06
ってか alias rm='rm -i' ってあまりいい習慣ではないんだな…。おれは長いことこれで通してきたんだが
確かに機械的にy押してしまう傾向があるのは否定できない。これは見直したほうがいいかもしれんね。
しかし mv, cp はデフォルトで -i 付けても問題ないというか、むしろそっちの方が安全だと思うんだがどうなんだろ。
-i しないと>>206みたいなのが怖いし、上書きするケースってそんなに多くないと思うんだけど。

214 :06/01/08
ゴミ箱スクリプトを作ってaliasしてつかってる。
このスクリプトのバグで予想外のファイルが消えそうで少し恐い。
バックアップが一番か

215 :06/01/08
なんて低レベルな話題なんだろう
つーかそもそも人間が直接コマンド叩いてやるのが間違い
GUIでやれGUIで

216 :06/01/08
釣れそうですね

217 :06/01/08
WindowsではPartitionMagicみたいな失敗したらヤバイ系のソフトには必ず
コマンド入力しても実際の操作をする前に「適用」みたいなボタンがあって、
それを押さない限り操作は確定しない
または処理フローを試すだけのテストが行えるようになってる
UNIXのコマンドにはそういった緩衝材や保険がないのがイカンということだよ
GUIでやれGUIで

218 :06/01/08
正論だな。

219 :06/01/08
それぐらい注意して出来ない奴がだめ。
俺も時々ミスるが・・・

220 :06/01/08
fdisk だって最後の確認あるじゃん。

221 :06/01/15
>>210
-fr ってファイルも置k

222 :06/01/15
どっかの65万株を1円で売り出したシステム(略

223 :06/01/15
MSDOS の癖でカレントディレクトリ表示→確認ok→rm -rf
ってやろうと思ったらゴミディレクトリ消さずにホームディレクトリ
消してしもうた。ディレクトリ名が出ない時点で止めれば良かったものを
あれ何も出ないやまあ良いか的なノリで消してしまった。

224 :06/01/16
rm -i は駄目としても rm -v はやっておいた方が良くないか?
まあ単に一部のファイルは助かるかもってだけだが…

225 :06/01/19
エラー出力が流れちゃう。

226 :06/01/23
家庭用マシン、俺ユーザのMeta-jにWMの制御キー割り当ててるんだけど、suして
[/root]10# rm -rf / (←入力途中でWM操作しようとして、誤ってCtrl-jだかCtrl-mを押す)
rm: "/" may not be removed
[/root]11#
助かったわけだけど(>>151氏の話)
冬場かじかんだ指で死んだマシンが世界に何台あるだろうかとふと思った
寒い季節は気をつけようね…

227 :06/01/27
バックアップファイル(hoge~, .hoge~, ...)を消すスクリプトを作ってみたんだが
こいつのバグの所為で悲惨なことになると困るのでちょいと見てやってはくれまいか
#!/bin/sh
RM='rm -v'
# デフォルトではカレントディレクトリが対象
target_dir=.
function usage
{
echo "Usage: $0 [target-dir]"
exit 1
}
if [ $# == 1 ]; then
if [ -d "$1" ]; then
target_dir="$1"
else
usage
fi
fi
find "$target_dir" -type f -and \( -name '*~' -or -name '.*~' \) -mindepth 1 -maxdepth 1 -exec $RM \{\} \;
ちょっと試してみた感じでは一応動いてるみたいなんだけど
シェルスクリプトはあまり慣れてないので不安だ。

228 :06/02/04
>>227
三田

229 :06/02/05
>>227
-maxdepth とか -mindepth といったオプションは
判別式の前に持ってくる事を推奨する。
あと、-name を -regex '.*~$' にすると一つにまとめられるんじゃない?
find "$target_dir" -mindepth 1 -maxdepth 1 -type f -regex '.*~$' -exec $RM \{\} \;

230 :06/02/09
>>229
レスありがとん。確かに -regex 使う方が簡潔ですね。
あと引数チェックが甘かったのとBashismに毒されてたのを修正。
-mindepth, -maxdepth を先頭に持ってくる理由はよくわからなかったですが
findの実装によっては効率が悪かったりするのかな?
#!/bin/sh
RM='rm -v'
target_dir=.
function usage
{
echo "Usage: $0 [target-dir]"
exit 1
}
if [ $# -eq 0 ]; then
target_dir=.
elif [ $# -eq 1 ]; then
if [ -d "$1" ]; then
target_dir="$1"
else
usage
fi
else
usage
fi
find "$target_dir" -mindepth 1 -maxdepth 1 -type f -regex '.+~$' -exec $RM \{\} \;

231 :06/02/10
>>230
>-mindepth, -maxdepth を先頭に持ってくる理由
man find からの受け売りだよ。
ttp://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html
> 全てのオプションは常に真を返す。また全てのオプションは常に効力を持ち、
> 式の評価がオプションの位置に到達したときにのみ実行される訳ではない。
> 従って記述を明確にするためには、全てのオプションは評価式の先頭部に
> まとめて置くのが望ましい。

232 :06/02/12
#!/bin/sh
$dir="$HOME/temp/*"
rm -rf $dir
perl使った直後にシェルスクリプト組んだ場合にrm -rf /* を実行しかけ、
冷や汗を掻いた。(2行目の変数のところが誤っていた)
このときは echo で実行内容を予め確認しておいて助かった。
職場のワークステーションだったので、
プロジェクトを潰すor遅延を生じさせるところだったよ・・・

233 :06/02/12
ごめん232だけど書き間違い
正しくは↓
#!/bin/sh
$dir="$HOME/temp"
rm -rf $dir/*
皆様、気をつけてください〜〜

234 :06/02/12
怖いからWindowsのような“ごみ箱”を作っていますが、
そういう方は結構いらっしゃるのでしょうか?
(ごみ箱の中はcronで定期的に削除)

235 :06/02/12
単一ファイルを間違って消すよりも、
rm -fr で意図しない削除をして失敗することのほうが多そうだ。

236 :06/02/12
ドットファイルをまとめて消すにはどうしたらいいのだろうか?

237 :06/02/12
めんどーだから rm .* ってやればどっと消えるよ

238 :06/02/12
「どっと」消えるよ

239 :06/02/12
rm -rf .[!.]*

240 :06/02/14
>>239
..erophoto が消えません!><

241 :06/02/14
すみません、
rm -rf * .[^.]* ..?*
と3つ消せばよさそうです!><

242 :06/02/16
あちゃ〜(ノ∀`)
いま、ちょうどやっちまったよ… rm -rf bin しようとしたら rm -rf /bin
だははは ls すらできねぇ
もういいや、再インストールだゲラゲラ

243 :06/02/17
こういう場合の復活のしやすさってOSによるよね。
配布イメージが細かくパッケージに分かれてるOSだと面倒だから
再インストールする方が早いかも。
*BSDなんかは簡単なんじゃが。

244 :06/02/17
>>243
逆だろ。*BSDだと、OS基本部分がパッケージ管理されていないから
どのファイルが消えたか確認するのも大変。
しかも、インスコCDでブートした時のシェル環境が貧弱。
SolarisまたはLinuxなら、OS基本部分もパッケージ管理されてるし、
インスコCDでブートした時のシェル環境が便利だから、
CDブートして、HDDマウントして、パッケージ復元すればいいだけ。

245 :06/02/17
*BSDのほうが面倒?/bin が消えたってわかってるんなら
インストールCDの/binの部分を書き戻したらおわりじゃん。

246 :06/02/17
>>243 >>245 は、*BSD以外のパッケージシステムに慣れてないだけ。
慣れればパッケージの方が楽。
今時分割tar.gzを手動展開する方が時代遅れ。

247 :06/02/17
>>242
運が悪かったな
おれは先ほど rm -rf tmp/ のつもりが rm -rf /tmp したけど無問題だったぜアヒャヒャ

248 :06/02/17
/binのリカバリだよね。
/binにどのパッケージが書くのかをみて対象をパッケージ追加するの?
時代遅れかどうかはともかく、bin.rpm なんてものが存在しなきゃ
tgzでいいんじゃマイカ?

249 :06/02/17
そうか、慣れると
tar zpxf /mnt/usr/DIST/base.tgz -C /mnt ./bin
よりも簡単に復旧できるのか。
超強力なパッケージシステムだな。
ぜひ、その手順を教えてくれ。
上のコマンド一発より短いんだから、ここに手順を
貼るのも簡単だろ。(w

250 :06/02/17
>>249
それ、NetBSDか? FreeBSDだとbase.aa base.ab ... に分割されてるわけだが。
しかも、RELEASE版に戻してしまっていいならそれでもいいが、
STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。

やはり、baseも含めて何らかのパッケージ管理をするべき。

251 :06/02/17
> それ、NetBSDか? FreeBSDだとbase.aa base.ab ... に分割されてるわけだが
FreeBSD でも
cat /mnt/usr/DIST/bin/bin.?? | tar zpxf - -C /mnt ./bin
で済むから、10文字増えるだけだよ。
> しかも、RELEASE版に戻してしまっていいならそれでもいいが、
> STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。
自分で make する時に、配布イメージまで作る習慣をつけておけば無問題。
(俺はそうしてる)
そうしてない限り、パッケージ管理してたって駄目。
てゆうか、上のコマンドより少ない手間で済むパッケージシステムなんて
あるの?

252 :06/02/17
単純なシステムのほうが修復しやすいよな。

253 :06/02/17
tar だと atimeが復元できないからヤダ。

254 :06/02/17
配布ファイル中の atime は復元できるでしょ。
それとも、そのマシン上でアクセスされた時刻って意味?
だったらバックアップを使った restore が必要だねえ。
その場合は tar じゃなくてパッケージシステムの場合も駄目だねえ。

255 :06/02/17
とりあえず、RPM や deb や portage の場合、どうやって復旧するのが
いいのか、いまどきのパッケージシステムを使ってる人に教えてほしい
なあ。tar より簡単でなきゃヤダなんて無理は言わないからサ。
まさか、再インストール以外に方法がないなんてことはないよねえ。(w

256 :06/02/17
何この馬鹿?

257 :06/02/17
>>244>>246 はどこに消えたの?
嘘がバレて出てこれなくなった?
時代の先端をいくパッケージ復元方法キボン

258 :06/02/17
ごめんなさい。

259 :06/02/18
素直に謝ったか。よしよし、許してつかわすぞ。

260 :06/02/18
何この馬鹿?

261 :06/02/18
>>242 でつ
この際、最低限のものを/homeとかにもコピっときますた。
cp ls mv tar これだけあればなんとか復帰可能…かなw

262 :06/02/18
>>257
知りたいならそんな言い方したら教えてくれなくなるぞ。
素直に「教えてください」と言え。
あと、板違いなので犬板で聞くかググるかすれば答えは見つかる。

# あと、ら抜きやめろよな。

263 :06/02/18
>>254
tarってatime記録されてたっけ?
dumpやcpioなら記録されてるけど。
まあ、atimeなんて戻してもしょうがないが。

264 :06/02/18
実験1
cd /home
rm -rf .*
これで / 以下全て消滅。但し、HPなら rm が .. をはじくように
なってるので無問題のはず。Sunは不明。
実験2
マウントディレクトリのトップで、
unlink .
fsdb が使えれば修復できるが。Linuxはヤバいかもよ。

265 :06/02/18
tar はアホだからディレクトリの更新時刻が
全て現在に変わってしまったはず。
find -depth | cpio ならきれいに復元してくれる。
しかも tar はパス名100バイトまでしか保障されない。
cpio は1024バイトまで。プロなら tar は使わない。

266 :06/02/18
Windowsだけど、あるシェアウェアのバグでC:ドライブのルートから
ごっそり削除されたことがある。
tempフォルダ内のゴミを削除するルーチンが暴走したらしい。
バックアップとってたから被害少なかったけどショックだったなぁ。

267 :06/02/18
> あと、板違いなので犬板で聞くかググるかすれば答えは見つかる。
この一行の返答の方が、>>249>>251 のコマンドラインよりも
長いってところが笑えるな。結局 >>244>>246 は嘘つきケテーイ
ってことか。

268 :06/02/18
Linux 系の場合、/bin だけ復旧するようなうまい手はないのか、
それとも、方法はあるけど、ここには貼れないくらい手順が長いのか、
どちらなのかな。
ここに貼れないくらい長くても、もしも >>262 の言うことが正しくて、
ググれば答が見つかるのであれば、ググった結果の URL を貼ること
くらいは簡単にできるよなあ。
>>261 はどうやって復旧したの?

269 :06/02/19
パッケージシステム作るときに
/bin 消したときの復元しやすさまで考える必要ってあんの?

270 :06/02/19
OS を作るときには、障害が起きた時の復旧のしやすさを考えた方が
いいとは思うよ。
今回みたいなオペミスだけでなく、システム管理用に作ったスクリ
プトのバグとか、ハードウェアの障害とかで同じようなことが起きる
ことはあるから。
対処方法として、パッケージシステムで頑張るか、それとも他に
手段を用意するかは、どちらでもいい話。
実際、上で出ている *BSD での解は、OSの基本部分とそれ以外を
分けて、OSの基本部分についてはパッケージシステムを使わずに
回復できるようにするってやり方なわけだし。

271 :06/02/19
/bin に限ってるから調子に乗る馬鹿がでてくる。
/usr/bin とか消した時の議論もしろよ。

272 :06/02/19
/usr/bin でも同じじゃね?
*BSD の場合、/usr/bin には OS の基本部分に属するコマンド
しか入らない (パッケージは別の場所にインストールされる)
から、手順は >>249>>251 の延長線上でしょ。

273 :06/02/19
/etc を消したのならともかく /bin /sbin /usr/bin /usr/sbinを消しても、CDなりからすぐに簡単に戻せるよなぁ。
>STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。
たかがSTABLEだったら/usr/srcをチェックアウトしてmakeしなおせばええやん。

274 :06/02/20
バックアップネタならバックアップスレでやってよ
スレ (´∀`( ´∀`) チガイ
でも、もまえらなかなか参考になる技をお持ちですな

275 :06/02/25
>>273
/bin なしで make ができるのかと小一時間(ry

276 :06/02/26
/etc を消したのならともかく /bin /sbin /usr/bin /usr/sbinを消しても、CDなりからすぐに簡単に戻せるよなぁ。

277 :06/02/26
パッケージ管理されてるところを中途半端に消されると
確かに復活は面倒だね。
データベースはあるんだから消えてるファイルだけを復活させる仕組みも
作れば作れるんだろうが。

278 :06/03/10
ってか素直に cron でテープアーカイブつくっとけよ。
きょーび HDD の値段なんかたかがしれてるだろ

279 :06/04/05
FreeBSDなら、/rescueの中に色々入ってるからCDから起動する必要もないね

280 :06/04/05
あれっていろいろあるように見えるけど、ddとかで直接ダメージを与えたりすると
まずくね?

281 :06/05/07
LFSなら削除したファイルの復旧が簡単そうに思えるけど、どうなんだろ

282 :06/09/26
あるディレクトリに -i と -rf ってファイルを置いたけど何も変わらなかったよ

283 :07/06/08
保守

284 :08/01/15
>>247
昨日
あやまって
rm -rf */tmpと意味不明なことをやってしまい
カレントディレクトリー内のデータがあぼん

285 :08/07/25
From: [656] 名無しさん@お腹いっぱい。 <sage>
Date: 2008/07/02(水) 12:54:18
カナーリ昔々の話、お茶の水三省堂のコンピュータ書籍売り場でUNIX本を物色してたら、
大学生風のガリ青年とキモデブ青年の2人がやってきた。
ガリ青年がBASICの入門書を手に取ったら(98/88の時代だからね)、
キモデブが素頓狂な大声で
「えー!!BASICなんかダメだよぉ、構造化できないし!インタプリタだし!
 最低でもFORTRANを使わないとぉ!」
と絶叫した(ツバがかなり飛んでた)
フロアにいた人達は生暖かい目でキモデブを観察。ガリ青年は恥ずかしそうに
「ちょ!大声だすなよ〜恥ずかしいだろ〜みんなこっちを見てるよ〜」
と小声で抗議してた。
>>1-1000はちょっとそんな感じ?

286 :08/10/27
http://www.nicovideo.jp/watch/sm2278996
とりあえず貼っておく

287 :10/03/07
先日会社の同僚が rm -rf / やっちまったよ…
おかげでテストが1日遅れ

288 :10/07/13
このご時世に、そういうコマンドが残ってるのは
おかしいように思えてきた

289 :10/07/13
このご時世にバックアップすらとってないのか?

290 :11/07/17
       /::.::.::.::.::.:/::.::.::.::.::.::.::ヽ::.::.::.::.:| : : : :
       /::.::.::.::.::.::.:/::.::.::.::.::.: /!::.:: l::.::.::.::.:| : : : :
     ..::.::.::.::.::.::.::.::/:./:.::.::.::/:〈 |::.::.:|::.::.::.::.:| : : : :   
    /::.::.::.::.::./::.::./イ::.::.::.:/:/ Y::.::.|::.::.::.::.:| : : : :
    ::.::.::.::.::./::.::.;'  |::.::.::.,':/l  :.::.::| 、::.::.::.| : : : :
   l::.::l::.::.::.::.::./  |::.::.{/    \| \::.:| : : : :
   |::.::|::.::.::{::./l   人::.::.| u  yぅ笊_.:::| : : : :
   |::.::|::.::.::∨ ィ笊ぅ\|     んxハ 》:j : : : :  ひい〜っ!
   ∨ハ::.::.::.:.. 《 {xぃ}      ヒ辷ツ  | : : : :
      八::.::.::.ハ  ゞー′            | : : : :
        \::.::.| , ,   ′     ' ' '   | : : : :
       |\j      __     し /| : : : :
       |:: 八    /ー─ ヽ     /::.| : : : :
       |::.::.::.\   {_, - 、__ノ    /::.::j : : : :
       |::.::.::.::.::.丶__       イ::.::.:| : : : :
        ::.::.::.::.::.::/ ノ─ァー<   |.::.::.:| : : : :
         ∨::.::./7 / / /_)   /|.::.::.:| : : : :
        ∨:Y/ /  {/ / -r<  |::.::.:;| : : : :

291 :11/07/17
君だれ子ちゃん?

292 :11/08/03
cp -rf /

293 :11/10/13
一生に一度はやりたい rm -rf /
でも今時は仮想マシンとかあるし大した話でもないよな

294 :11/10/13
そして、仮想マシンに実マシンからNFSマウントしたまま rm -rf / やると。

295 :11/11/19
すきなだけできるしね

296 :11/12/02
一般ユーザで rm -f * の方が被害がある

297 :11/12/24
rm -rf / じゃ面白くないな。

マウントしたまま /をmkfs(newfs)とか、
/のデバイスに/dev/zeroをddとか、
そういう実験報告を頼む!

298 :11/12/25
自分でやって報告しろよ。

299 :12/01/03
イライラしたら仮想PCでやってスッキリしてるわ
イメージさえ取っておけばやり放題

300 :12/01/03
>>299
当然、仮想マシンに実マシンからNFSマウントしたまま rm -rf / やってるんだよな?

301 :12/01/03
>>300
いやいやいやいや

302 :12/02/21
やってまたらスッキリした
TOP カテ一覧 スレ一覧 2ch元 削除依頼
SONY NEWS-OS (439)
彼女にloginできません (323)
nkfってなんだ (302)
やっぱりBSDしか (118)
SONY NEWS-OS (439)
☆ 古いPCを復活させよう (203)
--log9.info------------------
【超豪華キャスト】花の乱4【華麗なる日野一族】 (888)
他の大河ドラマの脚本が田渕or小松脚本だったら (548)
【2010年大河ドラマ】龍馬伝part153 (508)
暴れ馬だああああああ (272)
【戦場で】伊勢谷友介の高杉晋作【三味線!!!】 (338)
もう大河は日本以外をテーマにするのも良いのでは? (108)
「江」を漢字四字で表すスレ Part2 (428)
【戦国武将】 真田幸村 【人気NO.1】 (401)
草なぎ剛主演大河を妄想しながら待ちわびるスレ (153)
加藤浩次の兎丸 (159)
10分で挫折・・・スイーツ(笑)大河は無理だわ (548)
【クビライ】北条時宗 第三章【赤マフラー】 (845)
1974年大河ドラマ 勝海舟 (114)
長澤まさみのせいで史上最悪の大河に【二バナナ目】 (710)
【大内義興】毛利元就【尼子経久】 (817)
【引き続き】武市半平太を虐げたい その2 (603)
--log55.com------------------
【NJPW】新日本プロレスワールド part.585
【NJPW】新日本プロレスワールド part.586
Cycle*2019 ツール・ド・フランス part64 第20ステージ
2019 F1 GP 第11戦ドイツGP Lap5
【DAZN】フォーミュラGP【F1 F2 F3】Lap138
Cycle*2019 ツール・ド・フランス part65 第20ステージ
2019 F1 GP 第11戦ドイツGP Lap6
2019キングジョージ中継