2017-04-09 98 views
0

我明白这一点的方式是,在命令什么是猫文件和猫之间的差异<文件

cat file 

会显示文件的内容和

cat < file 

将文件的内容输入。我正在尝试这个,并创建了两个文件。一个叫做file1.txt,另一个叫做file2.txt。在FILE1.TXT,我写了FILE2.TXT,所以通过键入命令

cat < file1.txt 

,我期待FILE2.TXT的要显示的内容;但是, cat file1.txt and cat < file1.txt 正在显示file1.txt的内容。我想我误解了<的定义。

回答

2

如果您传递一个或多个文件名,cat将显示这些文件的内容。否则,它会打印它在stdin上传递的内容。

cat file 

cat接收一个文件名,打开文件,并打印其内容

cat < file 

外壳重定向标准输入指定的文件:它打开的文件和标准输入进其内容catcat收不到任何参数。如果没有参数,它会打印文件内容的标准输入—。

净结果:cat filecat < file做同样的事情。

1

cat使用参数文件运行时,它将打开并从每个文件读取到标准输出。因此,与cat file1.txtcat打开file1.txt并打印其内容到标准输出:

$ cat file1.txt 
file2.txt 

cat是不带参数的文件运行时,它会从标准输入读取(例如,如果你直接把猫类型)和写到标准输出。但是,< file1.txt告诉(如bash)的打开文件file1.txt,并通过标准输入重定向到cat

$ cat < file1.txt 
file2.txt 

正如你所看到的,效果是一样的,那猫会读给出的文件;不同的是谁打开这个文件。在第一种情况下,cat被告知要打开文件本身,而在第二种情况下,shell将其打开,cat除了通过其标准输入进入数据流之外什么都不知道,它应该是打印。

最后,如果你想使用的file1.txt内容作为参数cat,你需要使用的语法

$ cat $(< file1.txt) # same as: cat file2.txt 
[...contents of file2.txt] 
+0

有*参与'猫

相关问题