EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

cat < /etc/passwd 和 cat /etc/passwd 有什么区别?

[Linux]cat < /etc/passwd 和 cat /etc/passwd 有什么区别?

 

如图,

Sample

简单来讲,任何一条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。

Sample

那么造成的结果当然是a.txt依旧是null,b.txt成功得到内容。

 

从执行结果上讲,

cat  /etc/passwd > b.txt

是一样的。

 

换一种理解方式,

cat  /etc/passwd [         ]

默认存在[         ]内容,

[         ]里面规定了默认输入是键盘,默认输出是显示器。

你没有声明,那就没有重定向;

当你写了的时候,你开始重定向了,你把唯一能写的2项给补充完毕了,这就是

< a.txt > b.txt

取代了 文件描述符0和1 ,

使用了暂时变量。(指你规定的文件)

 

 

参考文档:

[1] linux shell数据重定向(输入重定向与输出重定向)详细分析

This article was last edited at 2020-05-02 20:51:27

* *