cat为什么更改二进制文件的内容?

詹姆斯·高

显然,cat在二进制文件上运行并回显内容似乎不起作用。这是我制作的简单脚本:

#!/bin/sh

CONTENTS=$(cat "$1")
mv "$2" "$1"
echo "$CONTENTS" > "$2"

由于某些原因,当我执行以下操作时,这似乎变得混乱:

script first.pptx second.pptx

运行此命令后,新first.pptx文件可以很好地打开,但是新second.pptx文件的格式无效。

为什么会发生这种情况,我该怎么解决?

克里斯·多德

该构造$(cat "$1")将在替换该值之前剥离文件中的所有尾随换行符(这就是CONTENTS最终的结果)。

echo "$CONTENTS" 将截断第一个NUL字符处的内容,并添加换行符。

因此,如果文件不是以一个换行符结尾,则内容将稍作更改。如果有任何NUL字符,它将被截断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二进制内容的响应 - 无效的文件名?

为什么我不能将二进制文件的输出重定向到文件?

从管道执行二进制文件的内容

为什么每次重建时go go二进制文件都会更改?

为什么我的文本文件比二进制文件大?

为什么git认为我的.sql文件是二进制文件?

为什么Git将此文本文件视为二进制文件?

为什么git索引文件是二进制的?

为什么可执行二进制文件包含包含的头文件的路径?

为什么GCC根据文件创建共享对象而不是可执行二进制文件?

为什么“ git status”在二进制文件未修改且文件模式相同时显示修改后的二进制文件

为什么在版本控制系统中将.pbxproj文件视为二进制文件?

为什么`cargo new`创建二进制文件而不是库文件?

为什么二进制文件不是文本文件,而所有文本文件都是二进制文件?

为什么写此二进制文件会切断文件的结尾?

为什么“二进制文件”不在原始二进制文件中?

为什么二进制文件的内容未在c中打印?

为什么cmake的安装文件与实际构建的二进制文件不同?

为什么在二进制文件上使用cat会使终端混乱?

为什么编译后我们不能理解二进制文件的内容?

为什么函数定义的顺序会更改输出二进制文件?

防止cat打开二进制文件

为什么更改通过“ ssh -t”传输的二进制文件?

为什么我的递归二进制搜索函数不返回任何内容?

C ++中的二进制文件,更改音频文件上原始数据的内容

为什么“ cat a.out”的输出是一些奇怪的文本,而不是二进制的?

如果二进制是0和1,为什么在二进制文件和程序中看到类似\ x8c \ x8e \ xfc \ r \ xc3 \ x8a的内容?

为什么忽略二进制文件是最佳做法?

为什么使用 git 从 powershell 复制的二进制文件与原始文件不同?