重定向分为输入重定向和输出重定向。输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。大部分时间中会使用输出重定向。输出重定向又分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
符号 | 结果 |
---|---|
命令 > 文件 | 将标准(没有报错)结果输出到文本中并清除原有文件 |
命令 2>> 文件 | 将错误结果输出到文本中并清除原有文件 |
命令 > 文件 | 将标准(没有报错)追加输出到原有文本的末尾 |
命令 2>> 文件 | 将错误结果输出到原有文本的末尾 |
对于重定向中的标准输出模式,可以省略文件描述符1不写,而错误输出模式的文件描述符2是必须要写的。
[root@xuziang111 ~]# man bash > xxx.txt
[root@xuziang111 ~]# cat xxx.txt
BASH(1) General Commands Manual BASH(1)
NAME
bash - GNU Bourne-Again SHell
SYNOPSIS
bash [options] [file]
COPYRIGHT
Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.
--------------------------以下省略----------------------------------
使用 > 会覆盖以前的内容,而>>是追加到以前内容后
[root@xuziang111 ~]# echo "welcome to linux" > xxx.txt
[root@xuziang111 ~]# cat xxx.txt
welcome to linux
[root@xuziang111 ~]# echo "23333" >> xxx.txt
[root@xuziang111 ~]# cat xxx.txt
welcome to linux
23333
错误输出重定向
[root@xuziang111 ~]# ls -l xxx > xxx.txt
ls: cannot access xxx: No such file or directory
#此时xxx.txt会变为空文件
[root@xuziang111 ~]# ls -l xxx 2> xxx.txt
[root@xuziang111 ~]# cat xxx.txt
ls: cannot access xxx: No such file or directory