dポイントプレゼントキャンペーン実施中!

fileが存在すれば削除したいのですが、どのようにすれば良いですか?

\rm ./temp.sh

\で、存在すれば、(yes/no)を聞かれることも無く削除してくれるのですが、存在しないと、エラーになってしまいます。
よろしくお願い致します。

A 回答 (4件)

>\で、存在すれば、(yes/no)を聞かれることも無く削除してくれるのですが



rmがrm -iにaliasされてますね。

例)
% alias rm
rm -i
% touch DUMMY
% rm DUMMY
remove DUMMY? y
% touch DUMMY
% \rm DUMMY
%

>存在しないと、エラーになってしまいます。

No.1の方のようにtestでファイルの存在を確認してから削除する方法もありますが、-fオプションを指定するとファイルが存在しないエラーの場合にエラーを返さないのでこれを利用するというものあります。

例)
% ls -l DUMMY
ls: DUMMY: No such file or directory ← ファイル存在しない
% rm DUMMY
rm: DUMMY: No such file or directory
% echo $status
1 ← エラー
% rm -f DUMMY
% echo $status
0 ← 正常終了
%

あと、10年以上前に書かれたのものですが参考になるので下記の「Bourne Shell 自習テキスト」も参照されてみたらいかがでしょうか?

○Bourne Shell 自習テキスト
 http://www.tsden.org/takamiti/shText/shText000.h …

参考URL:http://www.tsden.org/takamiti/shText/shText000.h …
    • good
    • 0
この回答へのお礼

ありがとうございます。なにかしら、敷居が高くて進んでいません。でも教えてくださったサイトでやってみます。ありがとうございます。

お礼日時:2005/10/12 08:59

rm コマンドは削除対称のファイルが存在しなかったり、パーミッションがなかった場合にはエラーになってしまいます。

それを避ける方法は、

- [ -f temp.sh ] && rm temp.sh
パーミッションがない場合はエラー扱いになります。

- rm -f temp.sh
パーミッションがなくてもエラー扱いになりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。助かりました。

お礼日時:2005/10/12 09:01

bashやkshで一番かっこ良く書くならば、


[ -f ./temp.sh ] && rm ./temp.sh
    • good
    • 0
この回答へのお礼

ありがとうございます。勉強します。

お礼日時:2005/10/12 09:00

testコマンドで判定をして削除すればいいかと。



if test -f foo.dat
then
rm foo.dat
fi

ファイル foo.datが存在するなら真。foo.datがディレクトリやシンボリックリンクの場合は真にはならない。

if文の文法はシェル(cシェルとかbシェル)が何か変わります。

参考URL:http://x68000.q-e-d.net/~68user/unix/pickup?test
    • good
    • 0
この回答へのお礼

ありがとうございます。勉強していきます。

お礼日時:2005/10/12 08:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!