(一)
linux的几个基本符号:
stdin,stdout,stderr分别用文件标识符(0,1,2)来表示。
/dev/null 表示空设备文件,可以理解为文件黑洞。
0 :stdin(标准输入,键盘录入)
1 :stdout(标准输出,终端输出)
2 :stderr(标准错误,终端输出)
如,执行command,标准输出到log.txt中,标准错误输出到error.txt中。
command 1>log.txt 2>error.txt
举例(1),command 执行的结果为标准输出,用1来表示
command > /dev/null
等价于
command 1 > /dev/null
(二)
重定向:
Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输;如果我们想改变输入和输出的方式,就需要使用重定向。通常重定向命令有如下几种方式:
命令 | 说明 | |
---|---|---|
command > file | 将输出重定向到 file。 | |
command < file | 将输入重定向到 file。 | |
command >> file | 将输出以追加的方式重定向到 file。 | |
n > file | 将文件描述符为 n 的文件重定向到 file。 | |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 | |
n >& m | 将输出文件 m 和 n 合并。(m和n合并,同时作为输出) | |
n <& m | 将输入文件 m 和 n 合并。(m和n合并,同时作为输入) | |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
(三)
举例(1):2>&1,表示标准错误2和标准输出1,合并输入到/dev/null(空文件)中。
nohup command>/dev/null 2>&1 &
nohup:表示no hang up,也就是不挂起,表示command不挂起
&:最后一个&,表示为command后台执行。
举例(2):
command>a 2>a 和 command>a 2>&1的区别
command>a 2>&1:表示标准输出和标准错误合并同时写入a中。只打开文件a一次。
command>a 2>a:表示标准输出(1)写入文件a,标准错误(2)也写入文件a。标准错误(2)写入a的时候会覆盖掉标准输出(1)。打开文件a两次。
感谢参考:https://blog.csdn.net/ggxiaobai/article/details/53507530