有很多關於如何做的問題撤銷已完成的 rm
命令。就我而言,我的客戶經理開始詢問:“您確定要刪除此文件嗎?”
我需要對其中每一項進行確認。而不是手動確認“y/n”:
當我被要求輸入第 n 個檔案的 y/n 時,我可以將其餘部分設為「yes」嗎? (相當於 Windows 上的「全部同意」複選框)(
yes | rm
開始之前我就知道竅門)當我被要求輸入第 n 個檔案的 y/n 時,我可以中止操作嗎? (除了關機:))
答案1
要完成請求 1,您需要使用比yes
發送y
N 次然後傳遞鍵盤輸入更複雜的程序。rm
除了總是詢問 ( rm -i
) 或從不詢問 ( ) 之外,您無法做到這一點rm -f
。
您始終可以rm
透過以下方式中止
- 按 Control-C 中斷它(發送 SIGINT),
- 按 Control-Z 停止它(發送 SIGSTOP),然後殺死它,
- 發送 SIGTERM (
kill
),或者 - 向其發送 SIGKILL (
kill -9
)。
這不會撤消rm
已執行的任何文件操作,但會阻止其執行任何進一步的文件操作。如果rm
進程目前提示使用者輸入,則它不會主動取消任何文件的鏈接,因此終止它只會阻止其繼續。
答案2
GNU rm 支持-i
,我認為這就是您所指的並要求對每個文件進行確認,但也支持-I
,這有點不同:
-I prompt once before removing more than three files, or when
removing recursively. Less intrusive than -i, while still giv‐
ing protection against most mistakes
至於是否可以在開始後停止與 rm 的交互,點擊Ctrl-C應該可以。
答案3
使用Ctrl+c您將能夠取消操作。
但是,如果您查看文件.bashrc
,您可以註釋強制確認的別名,它使用-i
參數作為解釋的 dhag。
在你裡面.bashrc
你會發現這樣的條目:
alias rm='rm -i'
如果你評論它,你的rm -f
意志就會直接起作用
答案4
在 下,您可以透過在命令前面bash
加上 a 來繞過別名,因此\
rm filename
變成
\rm filename