Linux 回声标准
我创建了两个文件,即file1.txt和file2.txt。 当我写作时Linux 回声标准,linux,bash,echo,stdout,stdin,Linux,Bash,Echo,Stdout,Stdin,我创建了两个文件,即file1.txt和file2.txt。 当我写作时 echo < file1.txt echo
echo < file1.txt
echo
它返回一个空行。但是cat
返回file1.txt的内容
既然echo打印发送给它的内容,为什么echo不打印文件1.txt的内容?这是重复的,已经解决了: 你可以重定向所有你想要的
echo
,但它不会做任何事情<代码>回显不读取其标准输入。它所做的一切就是将其参数写入标准输出,这些参数由空格字符分隔,并以换行符终止(对于一些echo
实现,其中一些转义序列已展开,和/或以-
开头的参数可能被视为选项)
如果希望echo
显示文件内容,则必须将该内容作为参数传递给echo
。比如:
echo "$(cat my_file.txt)"
请注意,$(…)
从该cat
命令的输出中去除尾随的换行符,并且echo
将一个添加回
另外请注意,除了使用zsh
,您不能在命令的参数中传递NUL字符,因此上述命令通常不适用于二进制文件yash
还将删除不构成有效字符一部分的字节
如果希望这样做的原因是因为希望echo
展开\n
,\b
,\0351
。。。文件中的转义序列(正如符合UNIX的echo
实现所做的,但不是全部),那么您最好使用printf
:
printf '%b\n' "$(cat my_file.txt)"
与
echo
相反,如果文件的内容以-
开头,则该文件是可移植的,不会出现问题。是什么让您认为echo“打印发送给它的内容”?请参阅bash会话中的帮助回声。是的,我看到并了解了我的误解。非常感谢。