2.6 重定向
希望将命令的输出结果保存到文件中,或者以文件内容作为命令的参数,这时就需要用到重定向。重定向不使用系统的标准输入端口、标准输出端口或是标准错误端口,而是进行重新的指定。
重定向有4种方式,分别是:输出重定向、输入重定向、错误重定向以及同时实现输出和错误的重定向。
2.6.1 输出重定向
输出重定向,即将某一命令执行的输出保存到文件中,如果已经存在相同的文件,那么覆盖源文件中的内容。
命令语法:
[命令] > [文件]
例2.33:使用输出重定向将/boot目录的内容保存到/root/abc文件中。
[root@rhel ~]# ls /boot > /root/abc
[root@rhel ~]# cat /root/abc
config-3.10.0-327.el7.x86_64
extlinux
grub2
initramfs-0-rescue-695707d564a94beba0e784062566b7e0.img
initramfs-3.10.0-327.el7.x86_64.img
initramfs-3.10.0-327.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-327.el7.x86_64.gz
System.map-3.10.0-327.el7.x86_64
vmlinuz-0-rescue-695707d564a94beba0e784062566b7e0
vmlinuz-3.10.0-327.el7.x86_64
//查看/root/abc文件的内容
例2.34:使用echo命令和输出重定向创建/root/mm文件,文件内容是Hello。
[root@rhel ~]# echo Hello > /root/mm
[root@rhel ~]# cat /root/mm
Hello
//显示/root/mm文件,可以看到文件的内容是Hello
另外一种特殊的输出重定向是输出追加重定向,即将某一命令执行的输出添加到已经存在的文件中。
命令语法:
[命令] >> [文件]
例2.35:使用输出追加重定向将数据写入文件/root/ao。
[root@rhel ~]# echo Hello > /root/ao
//先创建文件/root/ao,文件内容是Hello
[root@rhel ~]# echo Linux >> /root/ao
//向文件/root/ao中追加数据Linux
[root@rhel ~]# cat /root/ao
Hello
Linux
//查看文件/root/ao,可以看到两次输入的数据都在
2.6.2 输入重定向
输入重定向,即将某一文件的内容作为命令的输入。
命令语法;
[命令] < [文件]
例2.36:使用输入重定向将文件/root/mm的内容作为输入让cat命令执行。
[root@rhel ~]# cat < /root/mm
Hello
//可以看到文件/root/mm的内容是Hello
另外一种特殊的输入重定向是输入追加重定向,这种输入重定向告诉Shell,当前标准输入来自命令行的一对分隔符之间的内容。
命令语法;
[命令] << [分隔符]
> [文本内容]
> [分隔符]
例2.37:使用输入追加重定向创建/root/bc文件。
[root@rhel ~]# cat > /root/bc << EOF
> Hello Linux
> EOF
//一般使用EOF作为分隔符
[root@rhel ~]# cat /root/bc
Hello Linux
2.6.3 错误重定向
错误重定向,即将某一命令执行的出错信息输出到指定文件中。
命令语法:
[命令] 2> [文件]
例2.38:查看根本不存在的/root/kk文件,出现报错信息,将其保存到文件/root/b中。
[root@rhel ~]# cat /root/kk 2> /root/b
[root@rhel ~]# cat /root/b
cat: /root/kk: 没有那个文件或目录
//使用cat命令查看/root/b文件,可以看到其内容就是执行命令cat /root/kk的报错信息
另外一种特殊的错误重定向是错误追加重定向,即将某一命令执行的出错信息添加到已经存在的文件中。
命令语法:
[命令] 2>> [文件]
例2.39:使用错误追加重定向,将执行命令的多次出错信息保存到/root/b文件。
[root@rhel ~]# cat /root/kk 2> /root/b
[root@rhel ~]# cat /root/kk 2>> /root/b
[root@rhel ~]# cat /root/b
cat: /root/kk: 没有那个文件或目录
cat: /root/kk: 没有那个文件或目录
2.6.4 同时实现输出和错误的重定向
同时实现输出和错误的重定向,即可以同时实现输出重定向和错误重定向的功能。
命令语法:
[命令] &> [文件]
例2.40:同时使用输出和错误重定向列出/boot目录内容到/root/kk文件中。
[root@rhel ~]# ls /boot &> /root/kk
[root@rhel ~]# cat /root/kk
config-3.10.0-327.el7.x86_64
extlinux
grub2
initramfs-0-rescue-695707d564a94beba0e784062566b7e0.img
initramfs-3.10.0-327.el7.x86_64.img
initramfs-3.10.0-327.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-327.el7.x86_64.gz
System.map-3.10.0-327.el7.x86_64
vmlinuz-0-rescue-695707d564a94beba0e784062566b7e0
vmlinuz-3.10.0-327.el7.x86_64
//因为/boot目录下有文件,所以最终使用了输出重定向
例2.41:同时使用输出和错误重定向列出/nn目录内容到/root/oo文件中。
[root@rhel ~]# ls /nn &> /root/oo
[root@rhel ~]# cat /root/oo
ls: 无法访问/nn: 没有那个文件或目录
//因为没有/nn目录,所以最终使用了错误重定向