加入带有猫混淆的文件

加入带有猫混淆的文件

如果我执行以下命令:

$ cat picture.jpg > copy1.jpg

$ cat -v picture.jpg > copy2.jpg

copy1.jpg是 的完美复制品picture.jpg,但copy2.jpg比 的大很多picture.jpg

我认为这是因为copy2.jpgcat 认为的行尾被替换成了^M,而且每个^M行尾的大小都比行尾大。这是正确的吗?

如果这样做cat copy2.jpg,我发现没有^Min的实例copy2.jpg

这里发生了什么?>如果 cat 的输出可能与其输入不同,那么可以依靠 cat 来完美地连接文件吗?

答案1

这不仅仅是^M每一个带有不可打印字符的字节(无论在当前语言环境中意味着什么)将被扩展为cat -v.

如果您使用cat连接文件,则需要避免修改输出的每个选项:-band -n(数字行),-E(以 标记行结尾$),-s(抑制重复的空行),and -v-T使用可打印的内容显示不可打印的字符)人物)。

答案2

你的分析对我来说听起来是正确的。我会用来cat连接文件,因为这是它的主要功能。只需在没有-v开关或任何与此相关的开关的情况下执行此操作即可。

使用cat -v ..该文件基本上已经将其废弃了。您是否尝试在图像查看器中打开它?我尝试了你的方法,这正是我的情况。

您也可以使用以下命令查看这方面的证据file

$ file copy*
copy1.png: PNG image data, 1440 x 847, 8-bit/color RGB, non-interlaced
copy2.png: ASCII text, with very long lines

cat的信息页面对这个主题有更多的了解:

'-v'
'--show-nonprinting'
     Display control characters except for LFD and TAB using '^'
     notation and precede characters that have the high bit set with
     'M-'.

On systems like MS-DOS that distinguish between text and binary
files, 'cat' normally reads and writes in binary mode.  However, 'cat'
reads in text mode if one of the options '-bensAE' is used or if 'cat'
is reading from standard input and standard input is a terminal.
Similarly, 'cat' writes in text mode if one of the options '-bensAE' is
used or if standard output is a terminal.

那么 ^M 在哪里?

如果您打开copy2.jpg文件,vim您会发现其中散布着它们,例如:

                  SS#1

相关内容