如何取消 rm 指令?

如何取消 rm 指令?

有很多關於如何做的問題撤銷已完成的 rm命令。就我而言,我的客戶經理開始詢問:“您確定要刪除此文件嗎?”

我需要對其中每一項進行確認。而不是手動確認“y/n”:

  1. 當我被要求輸入第 n 個檔案的 y/n 時,我可以將其餘部分設為「yes」嗎? (相當於 Windows 上的「全部同意」複選框)(yes | rm開始之前我就知道竅門)

  2. 當我被要求輸入第 n 個檔案的 y/n 時,我可以中止操作嗎? (除了關機:))

答案1

要完成請求 1,您需要使用比yes發送yN 次然後傳遞鍵盤輸入更複雜的程序。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

相關內容