'cat < file.txt' 和 'echo < file.txt' 之间的区别

Gyp*_*aut 6 io-redirection echo cat

我有一个名为 file.txt 的文件,它有一些内容说“abcdef”,当cat < file.txt我得到输出 abcdef 但当我这样做时echo < file.txt,没有输出返回。为什么输入重定向不适用于 echo 而适用于 cat?

dr_*_*dr_ 9

为什么输入重定向不适用于echo但适用于cat

因为该echo命令不像标准输入那样接受任何东西cat,所以它只接受参数。

来自man cat

cat - 连接文件并在标准输出上打印

概要

猫 [选项]... [文件]...

描述

将 FILE(s) 或标准输入连接到标准输出。

来自man echo

echo - 显示一行文本

概要

回声 [短选项]... [字符串] ...

回声长期权

描述

STRING(s) 回显到标准输出。

(强调我的)


GAD*_*D3R 6

您可以使用以下echo方式读取file.txt(而不是重定向):

echo "$(<file.txt)"
Run Code Online (Sandbox Code Playgroud)

示例输出:

abcdef
Run Code Online (Sandbox Code Playgroud)

  • 为了分裂头发,echo 仍然没有读取文件;外壳是。 (12认同)
  • @Jeff,从技术上讲,shell 正在读取文件,剥离尾随的换行符(可能会阻塞 NUL 字节和无效字符,具体取决于实现)并将其作为参数传递给 `echo`,后者又可以将其视为一个选项,如果它太大,请扩展序列或扼杀它。 (4认同)