tar 可以在出現第一個錯誤時強制退出嗎?

tar 可以在出現第一個錯誤時強制退出嗎?

預設情況下,對於許多類型的錯誤,tar都會向 stderr 列印一條訊息,然後繼續前進 - 它稱為「可恢復」錯誤,通常與單一檔案或存檔成員相關的錯誤,例如權限問題。

有時這種行為確實令人討厭。例如,如果我解壓縮存檔並且磁碟已滿,那麼我可能會得到以下資訊:

tar: python-lib/PyML/classifiers/ext/_cgist.so: Wrote only 2048 of 10240 bytes
tar: python-lib/PyML/classifiers/ext/_csmo.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_csvmodel.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_knn.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_libsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_mylibsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/cgist.py: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/csmo.py: Cannot write: No space left on device

這可以在一個大檔案中持續數千行。如果這種情況發生在腳本中,我寧願tar立即退出,這樣我就可以向使用者提示錯誤。

有沒有辦法tar在看到第一個錯誤時強制退出?我在掃描中沒有看到它tar --help。任何用於實現此目的的包裝腳本的合理配方也將被感激地接受。

答案1

一種方法是將標準錯誤輸出重定向到/dev/full,例如:

tar ... 2>/dev/full

這將導致 tar 在嘗試將警告訊息輸出到stderr.

相關內容