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


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

root で rm -rf /



1 名前:名無しさん@お腹いっぱい。 [02/03/03 21:54]
ネタとしては死ぬほど見かけるこれ、実際にした人は少ないと思います。
ぜひ一度はやってみましょう。

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

10 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/03 22:11]
(´-`).。oO(rm .*~ しようとして rm .* したことがあったなぁ)


11 名前:名無しさん@お腹いっぱい。 [02/03/03 22:14]
rm -rf /
とrootでやろうとすると
laser5linux
でやると効かないよ
いやね
ほかもそうかな

12 名前:名無しさん@お腹いっぱい。 [02/03/03 22:32]
オレのパソコンNECだけど、試しにやってみたら、不要ファイルが消えて
パソコンの調子が良くなったよ。みんなも一度はやってみなよ。

13 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/03 22:33]
>>10

俺もある...
これ以降findでゴニョゴニョとするようになった


14 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/03 22:47]
やった人ほんとに少ないかな?
だれでも一度はやることではないかと。
ちなみに2度やった人を攻めるつもりもありません。

15 名前:名無しさん@お腹いっぱい。 [02/03/03 22:58]
自慢じゃないけど、UNIX歴10年以上だけど、
# rm -rf /
や、それに類することは一度もやったことない。

rm とはちょっと違うけど、
CDPATHを設定していて、
cd 時に意図とは違うディレクトリに移動してしまい、
その違うディレクトリ上でファイル操作を行なってしまって
混乱したことがあった。
それ以来 CDPATH の設定をやめた。
また、シェルの各種の「便利な機能」も誤操作の元なので、
できる限り設定を外して使わないようにした。

16 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 01:14]
root で rm の入力ミスはやばいので、
rm の option 引数全部書いてから
行頭に戻って sudo 書いて実行してます。

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

18 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 08:22]
man 2 unlink



19 名前:名無しさん@お腹いっぱい。 [02/03/04 08:41]
>>17
その状態においてスワップしたらとまるUNIX多いです。
(カーネルだけあるけど何も動かん状態)
とまらなかった、という解もあるけれども、
必ずしもそれが一般解ってわけでもありません。

その訳に気付け もっとOSと対話しろ

20 名前:厨房 [02/03/04 09:57]
誰か rm をハックして rm -fr / とできないパッチを公開して下さい

21 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 10:16]
つーか、i オプション使えばいいのでわ?

22 名前:うひひ mailto:sage [02/03/04 10:23]
>>20
大概のUNIXにはGENZINAという機能があり
aliasというコマンドを使って味噌

つかな早い安いでかいの大容量HDD時代なんだからrmなんて
使わないで自分でごみ箱プログラム作っておくのが常識最強
恐ろしく忘れたころごみ箱掃除すりゃいいんだよ

23 名前:作ってみた。 mailto:sage [02/03/04 13:26]
#!/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 名前:作ってみた。 mailto:sage [02/03/04 13:31]
やりたいこと、

その1、せっかくMSG1とかにしてるので
環境変数あたりで英語のメッセージをだせるようにしたい。

その2、ごみ箱に移動させるときの引数が"$*"だと
複数のディレクトリを同時に処理できないのでなんとかしたい。

その3、その2の処理のときにエラーメッセージもだしたいが、
caseの"$1"と処理の"$*"でぶつかってしまうのでそれをなんとかしたい。

って、こんな簡単なスクリプトで1時間以上なやむなんて…(鬱

25 名前:うひひ mailto:sage [02/03/04 13:46]
>>24
マシンに力があるなら圧縮を取り入れるとファイルも1個になりで吉
a=${a:-`date '+%y%m%d_%H:%M:%S'`}
lha a /mnt/sys.login/ゴミ箱/"$a"back.lzh $*
\rm -R $*

圧縮は好みで選択。複数なデレクトリやファイルでもダイジョブだろ


26 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 14:19]
いつから
>#!/bin/sh

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

27 名前:作ってみた。 mailto:sage [02/03/04 14:31]
だめだーーー(涙
if [ -e "$*"];then が原因だったっぽい。

ってことで

if [ -e "$*" ];then
mv "$*" "$*$DATE"
mv "$*$DATE" ~/"$TRASH"
fi



tar -cvf ~/"$TRASH/back-$DATE.tgz "$*"
rm -R "$*"

に修正でっす。

うひひさんありがとー♪

28 名前:名無しさん@お腹いっぱい。 [02/03/04 14:37]
>tar -cvf ~/"$TRASH/back-$DATE.tgz "$*"

俺も厨なんであれだがこの行おかしくね?




29 名前:作ってみた。 mailto:sage [02/03/04 14:41]
あ、>>26さん。
僕はlinuxなんで/bin/shはbashです。
でも、ashでもできましたよ?(たった今確認)

むー、今度は case文のところでエラーがでたぞ(汗
(27の修正で…)


30 名前:作ってみた。 mailto:sage [02/03/04 14:46]
>>28
おかしいっす。
「"」の数があってない(藁

31 名前:作ってみた。 mailto:sage [02/03/04 15:06]
一応完成かな?

#!/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 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 15:08]
ちなみに、alias で rm -i とオプションを付けるのは却って危険です。
絶対にやめましょう。

33 名前:nana4 [02/03/04 15:19]
初心者だったころ,

# rm -fr /etc

をやったことある. 再起動もできなくなった.
諦めて再インストールした.

34 名前:名無しさん@Emacs mailto:sage [02/03/04 15:21]
>>29
SunOS[45] の /bin/sh じゃできんよ。
ksh あたりが由来の拡張機能じゃないかね?


35 名前:厨房 mailto:sage [02/03/04 15:32]
オセマ
ナクタ
| | |
ニスリ

36 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 15:37]
作ってる奴に質問なんだが
-s オプションってtgzファイルが一個見えるだけで
何の意味もないんでない?
lsを使うんじゃなくて"tar tvf ゴミ箱のなかのファイル"
っていうふうにするんでは?
というかすでに$TRASH はディレクトリである必要もないし。

ところで圧縮書ける時のtarのオプションおかしくね?
ファイルを追加する場合はcじゃなくてrでなかった?


37 名前:作ってみた。 mailto:sage [02/03/04 16:04]
>>34
つかえないshもあるってことですね。
肝に命じておきます。

>>36
いちおう最初の予定でそのままmvするはずだったので、
ls -A になってますた。そのために秒数までfile名に埋め込んだので…
何時ごみ箱にほうりこんだか分れば良いかなと…
あとは、時間からほうりこんだfileを予測して、
わからない分はtar -tzf hogeで確認ってことで?
駄目っすか?(汗

そんな感じで r じゃなくて c にしました。

でも、36さんのやつの方が良さそうなので書きなおしてみまっす。


38 名前:36 mailto:sage [02/03/04 16:06]
あ、元作者さん居たのか。
居ないのかとおもって書き直し始めてたのに。

まぁ書き直してくれるなら任せよ。
一度gunzipしてからtar rしないといけないのが
微妙に面倒くさい感じ。




39 名前:36 mailto:sage [02/03/04 16:26]
任せるつもりが完成してしまったんではっとく

#!/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 名前:36 mailto:sage [02/03/04 16:36]
しまった。-s オプションが与えられた時の処理を

-s | --status )
if [ -r $RECYCLE ]; then
tar tvf $RECYCLE
gzip $RECYCLE
else
echo "$MSG5"
fi

にしないと-dした後におかしな動きになるわ。


41 名前:作ってみた。 mailto:sage [02/03/04 16:42]
こうなりました。
ん〜、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 名前:36 mailto:sage [02/03/04 16:47]
>>41
tar rzf って可能?
うちの環境ではエラー吐いたんだけど。

バージョンはこんな感じ
> tar --version
GNU tar version 1.11.2

あと、取り出しよりも前に引数がなかった場合に
エラーメッセージ出したいんだけど、どうすればいい?
シェルスクリプト書いたことなくてよくわかんね。


43 名前:作ってみた。 [02/03/04 17:00]
rzfはこっちの環境でか可能です。

tar (GNU tar) 1.13.17

debian GNU/linux のpotatoなんで結構古いはず。
って。woodyもそんなにかわらん
tar (GNU tar) 1.13.25 (woody)


44 名前:名無しさん@お腹いっぱい。 [02/03/04 17:08]
これって、TRASH にファイルを突っ込むソフトはどれ?


45 名前:44 [02/03/04 17:10]
ごめん、よく読んだら組み込んであった


46 名前:36 mailto:sage [02/03/04 17:13]
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 名前:作ってみた。 mailto:sage [02/03/04 17:20]
お、良い感じ。


48 名前:作ってみた。 mailto:sage [02/03/04 17:25]
んで、良くわからんのが
たとえば
$dust -g [file1 file2]
としたときに、スクリプト側でどんな風に引数わたしたら
良いかわかんない(汗

この場合 dust がこのスクリプトで -g が get でfileの取り出しを
する引数、んで、第2引数以下を取り出すfile名にしたいんだけど…



49 名前:36 mailto:sage [02/03/04 17:52]
>>48
ちょっと調べてみたけど引数は$0〜$9までで
$0はコマンド名、$1がオプションとなると8個までしか
同時にファイルを指定できないんだよね。

$2〜$9を並べれば一応できるけどちょっと不便・・・。
もっと詳しい人降臨希望。


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



51 名前:作ってみた。 mailto:sage [02/03/04 18:03]
ん〜、shiftで行けるのかな?
こんな感じで。

#!/bin/sh

case $1 in
-r ) shift
echo "get $*"
;;
* )echo "end"
esac
exit 0

どうだろう?

52 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 18:09]
どうも、
for $hoge in $@
do
$hoge
done
ですべての引数を処理できるらしい


53 名前:36 mailto:sage [02/03/04 18:10]
>>50
その通りでした。訂正さんくす!


54 名前:36 mailto:sage [02/03/04 18:25]
取り出しを組み込んでみたよ。

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 名前:36 mailto:sage [02/03/04 18:28]
ゴミ箱にいくつも同じファイル名のファイルがあった場合や
引数が多すぎた場合の処理だとか、TMPDIR の後始末が課題になるな


56 名前:作ってみた。 mailto:sage [02/03/04 18:33]
なんか投稿できてなかったぽいのでもう一度。

前略
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 名前:36 mailto:sage [02/03/04 18:39]
>>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 名前:作ってみた。 mailto:sage [02/03/04 18:54]
>>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 名前:36 mailto:sage [02/03/04 18:58]
>>58
www.rhythm-cafe.com/kb/shell/index.asp?sid=46&id=55
に$@ と$* の違いが載ってたよ

まぁ、取り出しをどうするかなんてのは好みでいいんじゃないかな。
でも、俺のやり方だとシンボリックリンク用意しないといけないから
そっちのがスマートかもね。


60 名前:作ってみた。 mailto:sage [02/03/04 19:05]
>>59
おぉ、thx!!一発でわかった(爆
俺頭悪いな(汗

ってことで、ちょこちょこ修正して
ん〜、2ch/Linuxスレのupローダにでもあげときますわ。
使いたい人は御自由にどうぞってことで。


61 名前:作ってみた。 mailto:sage [02/03/04 19:11]
あああああああ、ネタのようだ。。。。。
折角つくったfileをrm しちまった…

あほだ<俺

62 名前:うひひ mailto:sage [02/03/04 19:21]
>>61
ちょっと目を離したすきにヤルじゃん。オチも良いよ
っていうかさぁワラタ
良いネタ師になれる

僕はあくまでrmとして使うから復活は全く考慮しない
倉庫代わりのクセはイヤンだから
でも凝るのもなかなか良いかもね



63 名前:36 mailto:sage [02/03/04 19:22]
こんな時こそゴミ箱を!
ってシャレになんねーな(w

俺の作った野でよければ
musou2.compress.to/dust
に置いとくよ。


64 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/04 19:31]
翻訳メッセージの取得に gettext コマンドを使うとそれっぽいかも。
そこまですることのもんでもないかもしれんが(ワラ


65 名前:作ってみた。 mailto:sage [02/03/04 19:35]
>>46のやつは保存してたので、それを元に書きなおした♪
ミスってたら、やだな。

linux2ch.omosiro.com/cgi-bin/upload.cgi
の081.binです。拡張子を取って好きにリネームしてください。
んで、PATHの通ったとこに。




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


67 名前:作ってみた。 mailto:sage [02/03/04 19:48]
>>66おっけーでしょう?(藁
普通にtarでも引数を指定しなかったらすべて取りだすし。

あれ?もしかして。"-s"あたりに統合できるのか?(汗

68 名前:名無しさん@お腹いっぱい。 [02/03/04 23:13]
スレとはあんま関係無いけど、

FATパーティションをマウントし、"con"って名前のファイル作って
Windowsを起動したらどうなりますか?



69 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/05 01:11]
流れよく読んでないけど、
#!/bin/sh で動かない script なら、

行頭の文字を
#!/bin/bash, #!/usr/bin/bash などと限定した方が
いいと思う。

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

71 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/05 01:44]
>>70 おれのスレだってさ(プ

72 名前:本物の1 mailto:sage [02/03/05 02:43]
こらこら、騙るでないw

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

74 名前:名無しさん@お腹いっぱい。 [02/03/05 05:05]
>>20
rm -i を rm のエイリアスに設定していると、知らないうちに \rm と打っている自分が
います。

zsh とかで \rm -R * するとホントに消して良いのか? ってメッセージが出ますよね。
それを \rm -R /* の時だけ、繰り返しメッセージ出すように変えられませんかね?
或いはコマンド自体、完全に禁止してしまうとか。

75 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/05 06:33]
>>64
bash2なら
www.unixuser.org/~ysjj/bash_script_i18n.html
というのがあるYO!

76 名前:名無しさん@お腹いっぱい。 [02/03/05 20:46]
>>1
アホ

77 名前:名無しさん@お腹いっぱい。 [02/03/05 20:51]
1は天才

78 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/05 20:57]
ばかとてんさいはかみひとえ



79 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/05 22:42]
>>78
でも馬鹿は馬鹿。

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


81 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/27 21:01]
>>80
>我慢するけどスペース含んだファイルを
>捨てれないのが微妙にイタい。
本当だ、気づかなんだ…

なんか解決策ないっすかね?


82 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/27 21:18]
$find / -depth \( \( -type d -exec rmdir -- \{\} \; \) -o \( ! -type d -exec rm -- \{\} \; \) \)

83 名前:渡邊克宏 mailto:katsu@sra.co.jp [02/05/16 08:43]
1で参照されているページを書いた者です。

>19 その状態においてスワップしたらとまるUNIX多いです。
それは普通ないと思ってます。
「多い」とのことですが、私の基準ではそれは病的な実装です。

実証されれば、広く発表するに値する情報かと思います。
具体的に、どんなOS(のどんなバージョン)で起きるのでしょうか?
再現する方法がありますか?
止まるとは、具体的にはpanicするということでしょうか?

ちなみに、
www.sra.co.jp/people/katsu/doc/rmrf/
での実験中にはpaging activityも通常どおりありました。

84 名前:渡邊克宏 mailto:katsu@sra.co.jp [02/05/16 08:47]
>17 なぜOSやコマンドが消えているのにプロセスが停止しないのでしょう?

UNIXと呼ばれるもののsemanticsでは、
unlink(2)やrm(1)しても、コマンド(や対応するファイル)は*消えない*んです。

ディレクトリから消えるので、ls(1)とかするとなくなったように見えますが、
だれかが参照しているかぎり(コマンドを実行中とか、open(2)してるとか)
ファイルシステムには残ってるというわけです。

85 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/16 08:59]
でも、NFSクライアントがバイナリを実行中に、
NFSサーバ側からそのファイルを rm すると、
本当に消えて NFS クライアントがコアダンプしたりもする。

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

86 名前:渡邊克宏 mailto:katsu@sra.co.jp [02/05/16 09:00]
>80 スペース含んだファイルを捨てれないのが微妙にイタい。
quoteに全く気を使っていないからでしょう。

ここで書かれたスクリプトについては検証していませんが、あくまでも一般論として:
quoteに気を使わないで書かれたスクリプトは、トロイの木馬的なセキュリティホールを空けてしまう
可能性が大です。理由は自明でしょう。使ってはいけません。
セキュリティとは関係なくとも、いかにも事故を誘発しそうな気がしますよね。

shでスクリプトを書く場合、$@や$1のように表記するのが正しい局面というのはほとんどありえません。
"$@"や"$1"のようにすべきです。
通常の変数については、中身にある種の仮定が常に成立することをもって
quoteを省略する根拠とすることもありえましょう。

ちなみに、"$@"という表現はportabilityに問題があった時代もありました。
現在の事情はよく知りません。
だれかshに詳しい人教えて下さい。


87 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/16 09:13]
>>86
"$@" ってポータビリティに問題があった時代があったのですか?

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

88 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/18 00:39]
>1
そーか? 寝惚けてた俺はカレントのファイルを消そうとして

rm -rf ./* → rm -rf /*

と打ったことに気がついて一瞬で目がさめたよ。



89 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/18 01:40]
寝惚けて妙な事をする事は無いけど、たまに恐ろしく
眠くて意識を失ないかけのときは何をしでかすか分からんから
そんな時の自分は恐い。


90 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/18 02:01]
rm -rf * とかは、必ずbashで C-x * して
コマンドライン中で展開してから実行する。
あと、1回目はlsして、2回目にそれをrmに換えるとか。

91 名前:名無しさん@お腹いっぱい。 [02/05/19 02:53]
rmがオプション取らないようにmakeしなおした。

92 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 03:07]
>>91
その手の回避策を取っていると、環境が変わった時に惨劇を引き起こす場合のある罠

93 名前:名無しさん@お腹いっぱい。 [02/05/19 03:21]
>>88
よくある話ですな。

94 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 03:51]
ディレクトリ単位で消す時はなるべくファイラ使うようにしてます。

95 名前:名無しさん@お腹いっぱい。 [02/05/19 05:51]
>>94
で、長いディレクトリを消そうとしたら、バッファの扱いが適当じゃなくて・・・。

96 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 08:13]
>>92>>74
「yぽこ病」ってのもあるらしい。

97 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 13:38]
yes |

98 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 17:42]
なんかレベル低いスレだなぁ・・・



99 名前:名無しさん@お腹いっぱい。 [02/05/30 15:50]
亀だけど、
>>19
スワップはふつー独立のパーティションにあるから
関係ないんじゃないすか。

100 名前:100! [02/05/30 17:04]
100げっつぉ

101 名前:名無しさん@お腹いっぱい。 [02/05/30 22:08]
101 ばーがー、くろいつ、はいでるん

102 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/01 06:11]
/bin、/devが消えたとこでCtl+c しましたが、何か? (もちろん再起不能)

103 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/05 16:22]
rootでファイルを消す必要があった時は、
# mv hoge /tmp
して、自動で消えてくれるのを待つようにしている。
下のようなスクリプトを実行してしまって得た教訓。

# set build=/tmp/hoge
rm -rf $build/*
cd $build
tar zxf /tmp/hoge.tar.gz


104 名前:名無しさん@お腹いっぱい。 mailto:sage [02/08/12 22:43]
渡邊さんSRAを退職されたのね。
てことで、>>1のリンク先も移動。
katsu.watanabe.name/doc/rmrf/

105 名前:真実 mailto:age [03/01/02 15:59]
       あるネット関連会社の社長は、「いずれにしても2ちゃんねるは
資金が底をつけば終わり。あまり知られていないことだが、
2ちゃんねる内部関係者によると今、大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」と証言する。
2ちゃんねるが判決によって力を失った場合、資金提供の打ち切りも予想される。
ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html

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


106 名前:名無しさん@お腹いっぱい。 mailto:age [03/01/06 17:10]
漏れのつまらん失敗談。

アンインストしようと思ったPlamo Linuxに
#cd /
#rm -fr /
したら,Windows領域自動mountしてるの忘れてて,気づいた時には
Program Filesフォルダが消えていた.

107 名前:名無しさん@お腹いっぱい。 [03/01/13 18:31]
>>106
思わず藁田

# Plamo'er なら update より再インストだろうが、
俺も気をつけねば。


108 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/13 21:29]
NFSで(ry
-o root 渡すマシンは考えてやろうという教訓



109 名前:名無しさん@お腹いっぱい。 [03/01/13 22:44]
恥ずかしながら本当にやってもた。
#pwd
/root/junk/
#rsync --delete rsync://localhost/test/ .
rsyncd.confの記述ミスでエラー.
#cd /etc
#vi rsyncd.conf
#rsync --delete rsync://localhost/test/ . # <<< やってもた!

/etcの下をゴミファイルに変えてしまいました。

110 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/14 00:31]
関西人は氏ねってことでしょうか。。。

111 名前:山崎渉 mailto:(^^)sage [03/01/15 12:52]
(^^)

112 名前:名無しさん@お腹いっぱい。 [03/03/08 22:52]
間違って、やってしまいました.....
気がついた時には....
boot領域の容量が、半分になってしまった.....
たく。。
くそ忙しいのに....涙

113 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/22 02:26]
最近OSの調子が悪かったので、再インスコの前にバックアップをとって、しました。
バックアップHDをつなぎっぱでやってしまったので、全て消えました。

114 名前:山崎渉 mailto:(^^) [03/04/17 12:26]
(^^)

115 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

116 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

117 名前:名無しさん@お腹いっぱい。 [03/05/27 00:50]
私は何も知らなかったころ、自分専用マシンだからまだ良いものの

rm -fr $PWD ペシッ
・・・うぐおおお! 

となったことがあるのでsudo使ってますが何か?


118 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん



119 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/28 18:36]
>>117
sudo rm /etc
した事があります。
直前にもsudo使ったので、パスワード確認無し…

似たような構成のマシンからそっくりコピーしてなんとか復旧。


120 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/21 15:30]
以前、カレントディレクトリ以下の特定の名前のディレクトリを
まるごと全部消そうとしたとき、

find ./ なんちゃらかんちゃら -exec rm -r {}/* \;

みたいにやったら……そりゃないよママン。
変な制限つけないでくれよ。

121 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

122 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

123 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/10 13:02]
既出
katsu.watanabe.name/doc/rmrf/
pc.2ch.net/test/read.cgi/unix/1015160064/

124 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/10 13:16]
>>123
誤爆?

125 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/10 16:14]
>>124
再帰だろう

126 名前:名無しさん@お腹いっぱい。 [03/08/12 13:03]
やったことあるよ、結果は分かるでしょ。
rm -rf ./
のつもりが、
rm -rf . /
になってたのよ。

127 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

128 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん



129 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/15 22:42]
# rm -rf "山崎 渉"

130 名前:名無しさん@お腹いっぱい。 [03/10/05 12:25]
ついに rm -rf をやってしまいました。
一週間分の仕事がパー。

テスト中のスクリプトの中でこんな記述が
あったのが悪かったようです。

rm -rf "$DIR/$FILE"

ここで $DIR も $FILE も空だったため、
/ が消えてしまった、と。

131 名前:名無しさん@お腹いっぱい。 [03/10/05 12:30]
でも、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 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 13:28]
>>131
そもそもrootでやる必要があることなのか ?

133 名前:名無しさん@お腹いっぱい。 [03/10/05 13:31]
>>132
そ、そ、それは・・・。

でもせっかくシェル関数を作ってみたので、
"/"と"test/../../"などとの同一性を
確実に見分ける方法を教えてくだちい。

134 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 13:46]
>>133
cmpとかは ?

135 名前:名無しさん@お腹いっぱい。 [03/10/05 13:57]
>>134
・・・それってまさか、/ 以下と target path 以下の
ファイルを全部 compare しるってことですか?

136 名前:名無しさん@お腹いっぱい。 [03/10/05 14:03]
あっ、でも、こんなのでもいいかも。
で、/ 直下と全く同じ構成なんてまずあり得ないし、
そういうのは全部禁止しちゃっても問題なさげ。

cd $path
ls > /tmp/list1.$$
cd /
ls > /tmp/list2.$$

if ! cmp /tmp/list1.$$ /tmp/list2.$$; then
  return 1;
fi

ありがとうございました!
でももっとスマートな方法はないのかなぁ。
/ だけじゃなく /usr, /etc, /var などにも
適用範囲を広げられるような。

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

138 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/11 02:51]
>>136
man realpath



139 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/14 15:54]
ところでLindowsってゴミ箱あんの?

140 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/15 21:36]
>>139
www.lindows-jp.com/img/about/p_02.jpg

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

142 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/22 10:29]
>>141
ハァ?

143 名前:名無しさん@お腹いっぱい。 [04/02/26 21:04]
rootのaliasでrmをrm -iにするだけでOKじゃんと思っていたが
でも確かに\rmってつけて動かす時あるから同じなんだよね。
うーん...

144 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/28 12:21]
# rm -rf .*
ってのはどうでしょうか。

145 名前:名無しさん@お腹いっぱい。 [04/10/02 03:32:37]
age

146 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/02 09:34:19]
一旦、まっさらにするときに試しにやったことはある。

% \rm -rf /

147 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/06 12:20:23]
rm じゃないが、パーティションの引越し(/foo→/bar)をミスったことがある。
/bar をtypoして /baz という実在しないディレクトリ名としてしまった。

# cd /foo
# tar cvf - . | (cd /baz; tar xf -)

ぱっと見では壊れてなさげだったけど、念のため再インストールした。
それ以来はこうするようにしている。

# tar cvf - . | (cd /bar && tar xf -)


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



149 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/20 01:39:33]
rm -rf / なんてまず使わないのになんでコマンドとして許可されてるのかね
いまだに不思議だ


150 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/20 03:32:50]
すごい発言

151 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/20 22:27:31]
同じことを 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 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/20 23:31:52]
>>151
。・゚・(ノД`)・゚・。

153 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/21 01:11:22]
>>151
うへー、すげー大論争。読む気がしないや。
このスレ住人としては封印は悲しいものがあるな。

154 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/21 03:20:19]
>>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 21:33:25]
つい、出来心で、OpenBSDにおいて、rm -rf / を実行してみた。。。ゴリゴリ消えている様子w

156 名前:155 mailto:sage [04/11/25 21:34:55]
# 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 名前:155 mailto:sage [04/11/25 21:36:55]
Etermを導入できなかった腹いせにやってみたが、
これから、再インストール。。。
(ターミナルインストールできない俺が厨なだけか、、、

158 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/25 21:45:10]
GNUのrmだとどうなの?



159 名前:名無しさん@お腹いっぱい。 [04/11/26 00:25:09]
>>156
echo *

160 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 00:36:19]
unrm -rf /
で即時復活

161 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 14:55:38]
>>152-153
44bsd-csh や v7sh とかあるぐらいだから、
封印してない版の rm を ports/games にでも入れたらどうか。

162 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 17:51:22]
rmにゴミ箱機能をつければすべて解決

163 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 18:03:14]
そのゴミ箱が消されないようにしないと非解決。

164 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 21:23:59]
システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。

165 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/26 21:24:49]
システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。

166 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/27 00:21:44]
>>161
ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.50
にあるように、POSIXLY_CORRECT環境変数をセットしておけば
封印が解除される。
# env POSIXLY_CORRECT= rm -rf /

167 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/23 12:39:51 ]
>>148
C-cじゃだめなの?
まっさきに電源に手が行くところが厨っぽいですね。ぷぷ

168 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/25 04:09:27 ]
HDDの空き領域を全てのコマンドに対するUNDO/REDO用バッファにすれば無問題。



169 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 13:56:56 ]
つーか、root の癖してヘタレだなぁ〜w

という漏れもやったことあります。Sun3 の時代。

root でスクリプト作業をしていて、ワークディレクトリとして /tmp/work を掘って作業。
終了後、pwd せずに rm -rf *
ディスクアクセスが長い(2秒くらいたった)ので、Ctrl-C をして pwd したら・・・ / にいた。
boot ファイルなどが消滅。

仕方ないので、そのままの状態で他のマシンからファイルをコピーして、 boot ファイルは
再構築した。
全部確認が済んで、再起動の瞬間が一番怖かったw

でも、その後もalias も何も設定しなかった。
だってね・・・・ alias とかで慣れてしまったら、他のマシンの root で作業できなくなるから。
root に必須なことは、「ディフォルトの環境ですべてが出来ること」が信条。

170 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 13:57:17 ]
上で作ったゴミ箱のスクリプト欲しいんだけど最終版ないの?






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

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

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