tar 可以在出现第一个错误时强制退出吗?

Gre*_*ice 5 linux unix shell gnu 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
Run Code Online (Sandbox Code Playgroud)

这可以在一个大档案中持续数千行。如果这种情况发生在脚本中,我宁愿tar立即退出,以便向用户提示错误。

有没有办法强制tar退出它看到的第一个错误?我没有在扫描中看到它tar --help。任何用于实现此目的的包装脚本的合理配方也将被感激地接受。

Max*_*kin 4

一种方法是将标准错误输出重定向到/dev/full,例如:

tar ... 2>/dev/full
Run Code Online (Sandbox Code Playgroud)

这将导致 tar 在尝试将警告消息输出到stderr.