題 刪除文件而不詢問


如果他同意刪除文件,如何在不詢問用戶的情況下刪除文件?我正在編寫shell腳本並使用rm函數,但是它要求“刪除常規文件?”我真的不需要這個。謝謝。


74
2017-10-12 19:28


起源


rm -f, yes | rm 等等,但這屬於SU。
rm 沒有顯示“刪除常規文件?”默認提示。你必須把它別名 rm -i,或定義為函數。我很驚訝在腳本中可以看到別名。你在執行腳本嗎?./foo.sh)或採購(. foo.sh 要么 source foo.sh)? - Keith Thompson


答案:


你可能有 rm 別名 rm -i 試試這個:

/bin/rm -f file.log

要查看別名,您可以運行 alias


89
2017-10-12 19:30



或者,使用 command rm ... 要么 \rm ... 跳過別名/功能 - glenn jackman
有人認為有 rm 別名 rm -i 是個壞主意。該 rm 默認情況下,命令以靜默方式刪除指定的文件。通過別名來 rm -i,您可以養成在按Enter鍵之前不仔細檢查的習慣,具體取決於保存您的交互式提示。然後你輸入 rm some-important-file在沒有別名的環境中。 - Keith Thompson
@Keith這是非常正確的,我只是個人將rm改為rm -v - chown
如果“rm”是一個函數(而不是別名),那麼這個答案應該有效。和bash unset 命令可能很有趣 - Xen2050


force標誌刪除所有提示;

rm -f {file}


47
2017-10-12 19:30



這就是我要找的,而不是接受的答案。 - gsamaras


願原力與你同在 - rm -f


26
2017-10-12 19:30



我已經贊成了lynks的答案,這是完全一樣的。只是為了幽默感而吟唱 - rain_


在shell腳本中,您可能希望使用 rm -f <filename> 但你也可以選擇擺脫隱含的 -i 通過輸入您的環境選項 unalias rm 在你的shell(或配置文件)中。


5
2017-10-12 20:13





如果您具有刪除文件所需的權限,並且不希望出現提示,請執行以下操作(-f =強制):

rm -f file

如果您沒有該文件的權限,則需要使用:

sudo rm -f file

5
2017-10-12 19:31



“刪除常規文件?”提示意味著它不是權限問題。 - Keith Thompson


yes 程序反復回復任何提示。所以你可以把它管道進入交互式 rm 程序也可以獲得所需的效果。

yes | rm <filename>

相反,如果你不想做一些互動的事情,你可以這樣做

yes n | <something interactive>

這將在輸入流上重複'n'(有效地回答否問題)


2
2017-10-12 20:52



該 yes n 選項對我不起作用。我用的時候 yes n | rm file.txt,它實際上刪除了文件,即使文件受到正確保護。 - iammilind


\rm file

反斜杠 \ 繞過別名。


2
2017-07-28 12:15



“\”是反斜杠,你的意思是? - Cand3r
是的,使用沒有別名的rm導致不需要的確認對話前綴為\。 - teknopaul


目前我正在一個系統中工作,其中bash shell將rm命令的定義作為一個全局配置文件中的函數接收:

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

因此,關於別名的上述答案都沒有奏效。為了解決惱人的行為,我在.bashrc文件中取消了rm函數

 unset -f rm

我有一個類似的問題,然後開啟者。但是我沒有找到任何提到可能性的答案 rm 被shell函數隱藏。所以我在這裡添加了答案,希望對面臨同類問題的人有所幫助。

打字 /bin/rm 要么 rm -f 所有的時間都不方便,可能會產生不良後果(在這種情況下) rm -f)。


0
2018-02-25 12:18



這可能已經解決了你的問題,但它沒有回答這個問題。 - suspectus
不會選擇的答案 - 打電話 /bin/rm 工作?如果我在bash中有一個函數,並且在當前目錄中有一個同名的可執行文件,則只需添加 ./ 在名稱前面會調用文件 - 而不是函數。 PS - 我在選定的答案中添加了關於功能的評論& unset - Xen2050
是, /bin/rm 作品。做的 unset 無需輸入完整路徑。 - daw


除了使用 -f 參數,或者你可以使用 find 而是命令,例如

find -name file.log -delete

0
2018-03-26 13:45





如果你的 rm 別名 rm -i,然後使用 unalias rm;

不使用 rm -f 直接除非你真的想刪除很多寫保護文件。必須有一個很好的理由使用 -f

但是,如果您有許多寫保護文件,您可能更喜歡 rsync -r --delete empty/ removed_dir/ 為了更快的速度。


0
2018-03-29 14:28