Linux有一个简单的命令 echo,这个命令可以将文本参数打印出来:
$ echo Hello World
Hello World
但是如下命令会发生什么呢?
$ echo Hello World > test.txt
查看运行该命令的目录,应该可以看到一个名为test.txt的文件,在该文件内部应该可以看到文本 Hello World。现在把这个命令分解一下。
首先是第一部分:
$ echo Hello world
这会将 Hello World 打印到屏幕上,但是是怎么打印的呢? 其实是进程使用I/O(输入/输出)流接收输入并将输出返回。默认情况下,echo命令从键盘获取输入,然后将输出返回到屏幕。这就是为什么在shell中输入echo Hello World时,会出现Hello World的原因。但是,I/O重定向允许我们更改这个默认行为,从而给了我们更大的灵活性。
然后是下一部分:
>
> 是重定向运算符,使我们可以更改标准输出的位置。它允许我们将echo Hello World的输出发送到文件而不是屏幕。如果这个文件尚不存在,它将会创建文件。但是如果这个文件是存在的,它将覆盖这个文件。如果不想覆盖原来的文件,可以使用另外一个重定向操作符 >> :
$ echo Hello World >> test.txt
这条命令将Hello World追加到文件test.txt的末尾,如果test.txt尚不存在,它将会创建test.txt,就像使用 > 一样。