Command-Line

為什麼 tar 在覆蓋現有文件之前不詢問?

  • December 26, 2021

我失去了幾百行我編寫的 Vim 外掛,並經常備份,因為我提取了一個tar包含舊版本的文件。我在編寫外掛時決定不使用原始碼控制管理,因為我只是定期更新它。

tar為什麼在預設覆蓋現有文件之前不詢問?我猜想為什麼預設行為是靜默覆蓋文件背後有一些基本原理,因為我們通常希望安全而不是速度和便利。例如,我們通常使用#ifdef NDEBUG, not #ifdef DEBUG; 同樣,我希望tar在覆蓋任何文件之前先詢問我,並讓它有一些標誌,我可以用它來告訴它在不詢問我的情況下覆蓋文件。另外,如何做到這一點,tar預設情況下會問我,而我不必給它任何標誌?tar如果它們支持這種更安全的預設行為,我可以使用除 之外的工具。

感謝您的時間!

出於同樣的原因rmcp許多其他實用程序卻沒有——從一開始,POSIX 的設計理念就一直假設控制台上的人知道他們在做什麼,除非有實際問題。

在這種情況下tar,查看手冊頁建議您可以嘗試設置TAR_OPTIONSenv 變數以包含--confirmation標誌。

tar -k選項要求確認文件是否已存在。您可以通過將其添加到TAR_OPTIONS變數 ( TAR_OPTIONS="$TAR_OPTIONS -k") 或創建別名 ( alias tar="tar -k") 來預設設置它。

引用自:https://unix.stackexchange.com/questions/32346