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 名前:1 [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] 関西人は氏ねってことでしょうか。。。