- 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
- 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
- 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
输入重定向中用到的符号及其作用:
命令 < 文件
将文件作为命令的标准输入命令 << 分界符
从标准输入中读入,直到遇见分界符才停止命令 < 文件1 > 文件2
将文件1作为命令的标准输入并将标准输出到文件2
输出重定向中用到的符号及其作用:
命令 > 文件
将标准输出重定向到一个文件中(清空原有文件的数据)命令 2> 文件
将错误输出重定向到一个文件中(清空原有文件的数据)命令 >> 文件
将标准输出重定向到一个文件中(追加到原有内容的后面)命令 2>> 文件
将错误输出重定向到一个文件中(追加到原有内容的后面)命令 >> 文件 2>&1
或命令 &>> 文件
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
对于重定向中的标准输出模式,可以省略文件描述符1不写,而错误输出模式的文件描述符2是必须要写的。
重定向正确输出
cat /etc/yum.repos.d/CentOS-Base.repo > a.txt
cat a.txt
echo "Hello world" > a.txt
$ cat a.txt
Hello world
>
符号会覆盖掉file文件原有的内容, 要想向file文件追加内容,使用“ >> ”符号
添加到黑洞区:
echo hello >/dev/null
$ cd /dev/null
-bash: cd: /dev/null: 不是目录
cat /dev/null
追加正确输出
echo "Welcome to xiaoyulive.top" >> a.txt
$ cat a.txt
Hello world
Welcome to xiaoyulive.top
重定向错误输出
find /etc -name passwd 2> file
追加错误输出
find /etc -name passwd 2>> file
重定向所有输出
find /etc -name passwd &> file
追加所有输出
find /etc -name passwd &>> file
“改邪归正”输出
所谓”改邪归正”,即,2>&1
,将标准错误输出2重定向到标准输出中,2>
就是标准错误输出,&
是为了让bash将1
解释成标准输出而不是文件名字为1的文件。
输入重定向
输入重定向相对来说有些冷门,在工作中遇到的概率会小一点。输入重定向的作用是把文件直接导入到命令中。接下来使用输入重定向把readme.txt文件导入给wc -l命令,统计一下文件中的内容行数。
$ wc -l < readme.txt
2
上述命令实际上等同于 cat readme.txt | wc -l
的管道符命令组合。
应用
交互式写文件
[root@node1 ~]# cat > hello.txt <<EOF
> node1
> node2
> node3
> EOF
[root@node1 ~]# cat hello.txt
node1
node2
node3
下面这条自造的命令就结合使用了mail邮件命令与输入重定向的分界符,其目的是让用户一直输入内容,直到用户输入了其自定义的分界符时,才结束输入。
$ mail -s "Readme" root@linuxprobe.com << over
> I think linux is very practical
> I hope to learn more
> can you teach me ?
> over