確認せずにファイルを削除


89

ユーザーがファイルの削除に同意するかどうかをユーザーに確認せずにファイルを削除するにはどうすればよいですか?シェルスクリプトを作成してrm関数を使用していますが、「通常のファイルを削除しますか?」これは本当に必要ありません。ありがとうございました。


5
rm -fなどyes | rm。ただし、これはSUに属します。

4
rm「通常のファイルを削除しますか?」デフォルトでプロンプト。エイリアスを作成するrm -iか、関数として定義する必要があります。エイリアスがスクリプト内に表示されていることに驚いています。スクリプトを実行していますか(./foo.sh)またはソースしていますか(. foo.shまたはsource foo.sh)?
キーストンプソン

回答:


102

rmエイリアスを作成してrm -iいる可能性があるため、これを試してください。

/bin/rm -f file.log

エイリアスを表示するには、を実行しaliasます。


7
また、使用command rm ...または\rm ...エイリアス/機能をスキップする
グレン・ジャックマン

6
rmエイリアスを作成することrm -iは悪い考えだと言われています。このrmコマンドは、デフォルトで、指定されたファイルをサイレントに削除します。にエイリアスすることでrm -i、保存するための対話型プロンプトに応じて、Enterキーを押す前に慎重にチェックしないという習慣をつけることができます。次にrm some-important-file、エイリアスのない環境を入力します。
キーストンプソン

それは-v RMには非常に本当、私は個人的にのみエイリアスのrmある@Keith
chownを

1
「エイリアス」ではなく「rm」が関数の場合、この回答は機能するはずです。bash unsetコマンドは興味深いかもしれません
-Xen2050

56

forceフラグはすべてのプロンプトを削除します。

rm -f {file}


2
これは私が探しているものであり、受け入れられた答えではありません。
gsamaras

30

力があなたと共にありますように- rm -f


5
すでにリンクスの回答を支持していますが、これはまったく同じです。ユーモアのセンスに
賛成

誰かが実際にSOにユーモアのセンスを見つけたという理由だけで、私はコメントと答えの両方を支持しました...
Mac

5

シェルスクリプト内で使用するrm -f <filename>こともできますが、シェル(またはプロファイル)を-i入力unalias rmして、環境の暗黙的なオプションを削除することもできます。


unalias rmCentOSで動作しませんか?Amazon Linux?
サンキャッチャー

5

yesプログラムが繰り返し任意のプロンプトにyesと応答します。そのため、それを対話型rmプログラムにパイプして、目的の効果を得ることができます。

yes | rm <filename>

逆に、インタラクティブなことをしたくない場合は、

yes n | <something interactive>

そして、それは入力ストリーム上で 'n'を繰り返します(質問に対して効果的にnoと答えます)


このyes nオプションは機能していません。を使用している間yes n | rm file.txt、ファイルが正しく保護されていても、実際にファイルを削除します。
iammilind

5

ファイルを削除するために必要な権限があり、プロンプトを表示したくない場合は、以下を実行します(-f = force):

rm -f file

ファイルへのアクセス許可がない場合は、次を使用する必要があります。

sudo rm -f file

1
「通常のファイルを削除しますか?」プロンプトは、アクセス許可の問題ではないことを意味します。
キーストンプソン

4
\rm file

バックスラッシュ\はエイリアスをバイパスします。


1
「\」はバックスラッシュです。これはどういう意味ですか?
Cand3r

はい、エイリアスなしでrmを使用すると、不要な確認ダイアログのプレフィックス\が付きます。
テクノポール

1

-fパラメータの使用とは別に、find代わりにコマンドを使用することもできます。例えば

find -name file.log -delete

0

現在、私はbashシェルがrmコマンドの定義をグローバル構成ファイルの1つの関数として受け取っているシステムで作業しています。

 rm  () { /bin/rm -i ${1+"$@"}; }

したがって、エイリアスに関する上記の回答はいずれも機能しませんでした。迷惑な動作に対処するために、.bashrcファイルのrm関数の設定を解除します

 unset -f rm

私はオープナーで同様の問題を抱えていました。しかしrm、シェル関数によって隠されている可能性について言及した答えは見つかりませんでした。そこで、同じタイプの問題に直面している人の助けになることを期待して、ここに答えを追加しました。

入力する/bin/rmか、rm -f常に入力するのは不便であり、悪い結果をもたらす可能性があります(の場合rm -f)。


これで問題は解決したかもしれませんが、質問には答えません。
suspectus

選択した答え- /bin/rm仕事はありませんか?bashに関数があり、現在のディレクトリに同じ名前の実行可能ファイルがある場合./、名前の前に追加するだけで、関数ではなくファイルが呼び出されます。PS-関数に関する選択された回答にコメントを追加しました-&unset
Xen2050

はい、/bin/rm動作します。これを行うと、unsetフルパスを入力する必要がなくなります。
DAW

0

rmがにエイリアスされている場合はrm -iunalias rm; を使用します。

rm -f多くの書き込み保護されたファイルを本当に削除したい場合を除いて、直接使用しないでください。使用する非常に正当な理由がなければなりません-f

ただし、書き込み保護されたファイルが多数ある場合はrsync -r --delete empty/ removed_dir/、より高速にしたい場合があります。


0

これを行う私のお気に入りの方法は、単にcommandbashでコマンドを使用することsudoです。これにより、コマンドをエイリアスなしで実行します。実行方法は/bin/rm(おそらくrmとしてエイリアスされますrm -i)。

例:

command rm -f /tmp/file.txt

0
rm -Rf <folder-to-be-deleted>

-R:再帰f:強制、プロンプトなし

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.