放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符以下.net
1 => stdout 2 => stderr 0 => stdinblog
换言之 2>1 表明将stderr重定向到当前路径下文件名为1的regular file中,而2>&1表明将stderr重定向到文件描述符为1的文件(即/dev/stdout)中,这个文件就是stdout在file system中的映射get
而&>file是一种特殊的用法,也能够写成>&file,两者的意思彻底相同,都等价于it
file 2>&1file
此处&>或者>&视做总体,分开没有单独的含义command
若是但愿执行某个命令,但又不但愿在屏幕上显示输出结果,那么能够将输出重定向到 /dev/null:文件读取
$ command > /dev/nullqq
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;若是尝试从该文件读取内容,那么什么也读不到。可是 /dev/null 文件很是有用,将命令的输出重定向到它,会起到"禁止输出"的效果。重定向
若是但愿屏蔽 stdout 和 stderr,能够这样写:di
$ command > /dev/null 2>&1