[Linux]cat < /etc/passwd 和 cat /etc/passwd 有什么区别?
如图,
简单来讲,任何一条Command必然经历上图的过程。
那么基本能明白一点,
虽然执行结果相同,但cat /etc/passwd代表是以键盘作为输入设备,而cat < /etc/passwd是以 /etc/passwd 文件作为输入设备。
那么理解
命令< 文件1 >文件2
就不难,
该命令把文件1的内容作为标准输入,把文件2作为标准输出。
这是一个整合命令,你必须把它看成整体。
那么就不难理解
cat /etc/passwd < a.txt > b.txt
注意我之前提到的——虽然执行结果相同,但实际原理不同。
cat /etc/passwd代表是以键盘作为输入设备,
当遇到<a.txt的时候,进行第1次输入重定向,键盘输入替换为a.txt,再输出到b.txt。
那么造成的结果当然是a.txt依旧是null,b.txt成功得到内容。
从执行结果上讲,
cat /etc/passwd > b.txt
是一样的。
换一种理解方式,
cat /etc/passwd [ ]
默认存在[ ]内容,
[ ]里面规定了默认输入是键盘,默认输出是显示器。
你没有声明,那就没有重定向;
当你写了的时候,你开始重定向了,你把唯一能写的2项给补充完毕了,这就是
< a.txt > b.txt
取代了 文件描述符0和1 ,
使用了暂时变量。(指你规定的文件)
参考文档: