ユーザーがファイルの削除に同意するかどうかを確認せずにファイルを削除する方法を教えてください。シェルスクリプトを書いていてrm関数を使っていますが、 "通常のファイルを削除しますか?そして私は本当にこれを必要としません。ありがとうございました。
rm
はrm -i
にエイリアスされているかもしれないので、これを試してください:
/bin/rm -f file.log
エイリアスを確認するには、alias
を実行します。
Forceフラグはすべてのプロンプトを削除します。
rm -f {file}
力が一緒にいるように - rm -f
ファイルを削除するために必要な権限があり、プロンプトを表示したくない場合は、次のようにします(-f = force)。
rm -f file
ファイルへのアクセス許可がない場合は、次のものを使用する必要があります。
Sudo rm -f file
シェルスクリプト内では、rm -f <filename>
を使用したいと思いますが、シェル(またはプロファイル)に-i
を入力することで、環境の暗黙のunalias rm
オプションを削除することもできます。
yes
プログラムはすべてのプロンプトに対してyesと繰り返し答えます。それであなたはそれを対話的なrm
プログラムにパイプして望みの効果も得ることができます。
yes | rm <filename>
逆に、対話的なことをしたくない場合は、そうすることができます。
yes n | <something interactive>
そしてそれは入力ストリーム上で 'n'を繰り返します(事実上質問にnoと答える)
\rm file
バックスラッシュ\
はエイリアスをバイパスします。
-f
パラメータを使用する以外に、代わりにfind
コマンドを使用することもできます。
find -name file.log -delete
これを行うための私のお気に入りの方法は、bashでcommand
コマンドを使用することです。Sudo
を使用するのと同じ方法です。これは、/bin/rm
(おそらくrm
がrm -i
としてエイリアスされる)で実行するのと同じように、エイリアスなしでコマンドを実行します。
例:
command rm -f /tmp/file.txt
あなたのrm
がrm -i
にエイリアスされている場合は、unalias rm
を使います。
書き込み保護されたファイルを本当に削除したくない場合以外は、rm -f
を直接使用しないでください。 -f
を使うには非常に良い理由があるはずです。
ただし、書き込み保護されたファイルがたくさんある場合は、速度を上げるためにrsync -r --delete empty/ removed_dir/
をお勧めします。
現在私はシステムで働いています、そこでbashシェルはrmコマンドの定義をグローバル設定ファイルの1つの中の関数として受け取りました:
rm () { /bin/rm -i ${1+"$@"}; }
したがって、エイリアスに関する上記の回答はどれもうまくいきませんでした。迷惑な動作に対抗するために、私は自分の.bashrcファイルでrm関数の設定を解除しました。
unset -f rm
私は開幕戦と同様の問題を抱えていた。しかし、rm
がShell関数によって隠されている可能性を述べた答えは見つかりませんでした。だから私はそれが同じ種類の問題に直面している誰かの助けになることを願ってここに答えを加えました。
/bin/rm
またはrm -f
を常に入力するのは不便であり、悪い結果をもたらす可能性があります(rm -f
の場合)。