Kiw*_*iwy 9 terminal binary cat
如果我cat正确理解手册:
连接文件并在标准输出上打印
cat将文件作为参数并将它们打印在标准输出上。
我没有得到的是,如果我使用命令:
cat img.png > copy.png
Run Code Online (Sandbox Code Playgroud)
如果我只是,我将获得 2 个相同的 png 文件
cat img.png
Run Code Online (Sandbox Code Playgroud)
我很有可能我的终端搞砸了并误解了我输入的内容。
cating 包含奇怪字符的文本文件来实现? cat 将命令行上作为参数给出的文件连接到标准输出,它一次读取字节,默认情况下不对其读取的字节执行任何解释。
在您的第一个示例中,您将标准输出重定向到一个文件,这就是您获得新文件的原因。
在您的第二个示例中,字节被写入终端,终端将字符序列解释为终端的控制序列,这就是您在终端上出现异常行为的原因。它与此无关cat,cat不知道您将如何处理它的输出。您可能会通过管道将其发送到另一个程序来解释/处理/打印或播放“雨中歌唱”。
所以遵循unix哲学,
做一件事,只做一件事,但要做好
cat 不应该试图再次猜测您正在尝试做什么。
编辑下面@kiwy 的第一条评论的 1 条回复。
是和否,让我解释一下,
不,如果您cat使用终端,因为它(终端软件)正在将输出发送到您的屏幕或解释控制序列(它正在模拟旧硬件,即电传设备)。
但,
是的,如果您转到管道并且接收的程序可以将字符解释为命令。
以 cat this 为例,cat anyOldShellScript | bashbash 会将它获取的内容解释为命令。