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

相关内容