Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 什么';s cat文件和cat之间的差异<;文件_Unix - Fatal编程技术网

Unix 什么';s cat文件和cat之间的差异<;文件

Unix 什么';s cat文件和cat之间的差异<;文件,unix,Unix,我的理解是命令 cat file cat < file1.txt 将显示文件和的内容 cat < file cat

我的理解是命令

cat file 
cat < file1.txt
将显示文件和的内容

cat < file 
cat
将文件的内容作为输入。我尝试了一下,创建了两个文件。一个名为file1.txt,另一个名为file2.txt。在file1.txt中,我编写了file2.txt,因此通过键入命令

cat file 
cat < file1.txt
cat
,我希望显示file2.txt的内容;然而,两者
cat file1.txt和cat

正在显示file1.txt的内容。我想我误解了的定义,如果传递一个或多个文件名,
cat
将显示这些文件的内容。否则,它将打印在stdin上传递的任何内容

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

cat < file
cat
shell将stdin重定向到命名文件:它打开文件并将其内容提供给stdin上的
cat
<代码>cat
不接收任何参数。如果没有参数,它将打印文件内容中stdin上的任何内容


净结果:
cat文件
cat
执行相同的操作。

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

$ cat file1.txt
file2.txt

cat
在没有参数文件的情况下运行时,它将从标准输入中读取(例如,就像您直接键入cat一样)并写入标准输出。但是
告诉shell(例如bash)打开文件
file1.txt
,并通过标准输入将其重定向到
cat

$ cat < file1.txt
file2.txt

让我们从它的根来看
cat
的概念,比如从plan9(进化的根):

cat
不涉及管道。输入文件被重定向,而不是管道传输<在此结构中,code>cat可以在stdin上搜索,而如果输入是管道,则搜索将失败。请参阅此处的答案:
    while((n=read(f, buf, (long)sizeof buf))>0)
        if(write(1, buf, n)!=n)