我正在处理生产问题,无法重现压缩命令的错误消息。
目前的解决方案
我们在 shell 包装器中有 case-esac 块,它按如下方式处理消息;
case "$MSG" in
"This file is not changed; compression does not save space.")
echo "$MSG"
;;
*unchanged*)
echo "$MSG"
;;
*)
echo ERROR
;;
esac
问题场景
通过包装器(对于某些文件)调用压缩命令时会产生错误消息(比方说,类型1);
-- file unchanged
但是,在命令行上执行相同的命令(对于同一组文件)会产生不同的错误消息(比方说,2型);
This file is not changed; compression does not save space.
有人可以帮助我理解这种行为吗?如果可以的话建议复制类型1错误信息
答案1
如果程序查看正在压缩的文件系统的块大小,并意识到压缩文件的数量,则可能会显示“不节省空间”消息。块在生成的文件中是相同的。您可以在 zip 程序中看到类似的行为。通过拒绝压缩文件,开发人员认为他们正在提高性能。
更常见的是,压缩实用程序只是检查生成的文件是否会更小(因为压缩算法添加了一个表,这是开销)。
例如,IBM 手册页显示 compress 有 -f/-F 选项(请参阅关联) 哪个力量压缩。
最后,当实用程序检查文件并注意到后缀或文件以指示其已压缩的代码开头的事实时,就会出现“已压缩”。