二者都是Linux系统的输出重定向符号
">" 是输出到文件中, 如果文件存在, 则原来的内容被清空, 不存在则创建文件, 比如
ls > filelist.txt
">>"是把输出追加到文件中, 如果文件存在, 追加到末尾, 不存在则创建文件
格式:
command-line1 [1-n] > file或文件操作符或设备
上面命令意思是:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的) 重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。
注意:
1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。
2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。
3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。
4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。
5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行
>与>>都用来重定向输出,不同的是>将覆盖原有内容,而>>则会追加内容。例如:ls -l / > 123.txt 将会列出/目录下的所有文件(目录)并将输出结果保存至123.txt中,如果123.txt里有内容456,那么这个456将会被覆盖掉,而如果使用>>则这个456还会存在,命令的输出结果保存至新的一行。如果还是有问题,可以看一下《Linux就该这么学》的第三章内容,这本书你可以百度搜索一下,非常适合初学者。