Command-Line
為什麼 tar 在覆蓋現有文件之前不詢問?
我失去了幾百行我編寫的 Vim 外掛,並經常備份,因為我提取了一個
tar
包含舊版本的文件。我在編寫外掛時決定不使用原始碼控制管理,因為我只是定期更新它。
tar
為什麼在預設覆蓋現有文件之前不詢問?我猜想為什麼預設行為是靜默覆蓋文件背後有一些基本原理,因為我們通常希望安全而不是速度和便利。例如,我們通常使用#ifdef NDEBUG
, not#ifdef DEBUG
; 同樣,我希望tar
在覆蓋任何文件之前先詢問我,並讓它有一些標誌,我可以用它來告訴它在不詢問我的情況下覆蓋文件。另外,如何做到這一點,tar
預設情況下會問我,而我不必給它任何標誌?tar
如果它們支持這種更安全的預設行為,我可以使用除 之外的工具。感謝您的時間!
出於同樣的原因
rm
,cp
許多其他實用程序卻沒有——從一開始,POSIX 的設計理念就一直假設控制台上的人知道他們在做什麼,除非有實際問題。在這種情況下
tar
,查看手冊頁建議您可以嘗試設置TAR_OPTIONS
env 變數以包含--confirmation
標誌。
tar -k
選項要求確認文件是否已存在。您可以通過將其添加到TAR_OPTIONS
變數 (TAR_OPTIONS="$TAR_OPTIONS -k"
) 或創建別名 (alias tar="tar -k"
) 來預設設置它。