Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。通常状况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。tcp
重定向命令列表以下:spa
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容做为输入 |
重定向通常经过在命令间插入特定的符号来实现。特别的,这些符号的语法以下所示:命令行
command1 > file1
上面这个命令执行command1而后将输出的内容存入file1。翻译
注意:任何file1内的已经存在的内容将被新内容替代。若是要将新内容添加在文件末尾,请使用>>操做符。3d
执行who >users 并无显示,而是将who命令结果重定向到users文件,若文件不存在会新建一个文件。code
覆盖,,已经存在的内容将被新内容替代。htm
使用>>操做符,将新内容添加在文件末尾。blog
输入重定向是将文件的内容重定向到命令。排序
2.1 输出重定向同样,Unix 命令也能够从文件获取输入,语法为:
1 command1 < file1
这样,原本须要从键盘获取输入的命令会转移到文件读取内容。
注意:输出重定向是大于号(>),输入重定向是小于号(<)。
注意:上面结果不一样:第一个例子,会输出文件名;第二个不会,由于它仅仅知道从标准输入读取内容。
2.2 Here Document(内联输入重定向) 一种特殊的输入重定向
Here Document 目前没有统一的翻译,这里暂译为”嵌入文档“。Here Document 是 Shell 中的一种特殊的重定向方式,它的基本的形式以下:
1 command << delimiter 2 document 3 delimiter
它的做用是将两个 delimiter 之间的内容(document) 做为输入传递给 command。
注意:
结尾的delimiter 必定要顶格写,前面和后面都不能有任何字符(包括空格和 tab 缩进)。
开始的delimiter先后的空格会被忽略掉。
wc命令时分别输出文件的行数,单词数和字节数。
通常状况下,每一个 Linux 命令运行时都会打开三个文件:
默认状况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。
若是但愿 stderr 重定向到 file,能够这样写:$command 2 > file
若是但愿 stderr 追加到 file 文件末尾,能够这样写:$command 2 >> file 2 表示标准错误文件(stderr)。
若是但愿将 stdout 和 stderr 合并后重定向到 file,能够这样写: $command > file 2>&1或$command >> file 2>&1
若是但愿对 stdin 和 stdout 都重定向,能够这样写: $command < file1 >file2 command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
不论输出标准输入或标准输出仍是标准错误文件均可以输入到file中。你能够这样写: $command &>>file
若是但愿执行某个命令,但又不但愿在屏幕上显示输出结果,那么能够将输出重定向到 /dev/null:
1 command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;若是尝试从该文件读取内容,那么什么也读不到。可是 /dev/null 文件很是有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
若是但愿屏蔽 stdout 和 stderr,能够这样写:
1 command > /dev/null 2>&1
注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
重定向操做符 & 能够将输出或输入从一个指定句柄复制到另外一个指定的句柄。例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,请键入:
1 dir>c:/file.txt 2>&1
复制句柄时,能够复制该句柄原状态的全部特性。
例如,若是一个句柄具备只读访问的属性,则该句柄的全部副本都具备只读访问属性。不能将一个具备只读访问属性的句柄复制到另外一个具备只写访问属性的句柄。
5.1 使用 & 操做符重定向输入和副本
例:
要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,请键入: <file.txt
要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),请键入:sort<file.txt
要查找 File.txt,而后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,请键入:indfile file.txt>search.txt 2<&1
要以句柄 0 输入读取(即 STDIN)的方式复制用户定义的句柄 3,请键入: <&3
5.2 使用 & 操做符重定向输出和复制
若是将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。若是指定了句柄,Cmd.exe 将文件复制到现有句柄中。
要将用户定义的句柄 3 复制到句柄 1,请键入:>&3
要将包括句柄 2(即 STDERR)的全部输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),而后将输出重定向到 Output.log,请键入:ipconfig.exe>>output.log 2>&1
5.3 使用 >> 重定向操做符附加输出
要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。
例
使用下列命令能够将 dir 命令生成的目录列表附加到 Dirlist.txt 文件:dir>>dirlist.txt
要将 netstat 命令的输出附加到 Tcpinfo.txt 的末尾,请键入:netstat>>tcpinfo.txt
例 :使用以下命令能够对目录进行分类:
dir | sort
将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。
sort 命令使用 dir 命令的输出做为输入,而后将输出发送到句柄 1(即 STDOUT)。