Linux重定向实例详解

发布时间:2020-10-13编辑:脚本学堂
本文详细介绍了,有关Linux的数据重定向的知识,包括标准输入、标准输出、标准错误的重定向等内容,讲的比较全面了,有需要的朋友参考学习下。

本节主要内容:
linuxjishu/9768.html target=_blank class=infotextkey>linux重定向的基础知识。

在登录Linux时,便将默认的标准输入、标准输出、标准错误输出安排成你的终端。
I/O重定向就是你通过与终端交互,或者在shell script里设置,重新安排从哪里输入或者输出到哪里。每个程序都应该有标准输入/输出(错误输出)。
 
在linux中重定向的方法,一般包括:>、<、<<、管道等
 
先了解stdin、stdout、stderr。
 
标准输出(stdout):代码为1,使用>或者>>,是命令执行所回传的正确的信息。
 1>:以覆盖的方法将正确的数据输出到指定的文件或者设备上
 1>>:以追加的方法将正确的数据输出到指定的文件或者设备上

标准错误输出(stderr):代码为2,使用2>或2>>,是命令执行失败后,所回传的错误信息。
 2>:以覆盖的方法将错误的数据输出到指定的文件或者设备上
 2>>:以追加的方法将错误的数据输出到指定的文件或者设备上
 

复制代码 代码示例:
[root@jbxue ~]# cat /etc/crontab /etc/thinksay 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root 
HOME=/ 
 
# run-parts 
01 * * * * root run-parts /etc/cron.hourly 
02 4 * * * root run-parts /etc/cron.daily 
22 4 * * 0 root run-parts /etc/cron.weekly 
42 4 1 * * root run-parts /etc/cron.monthly 
cat: /etc/thinksay: 没有那个文件或目录 
[root@jbxue ~]# cat /etc/crontab /etc/thinksay > list_right 2> list_error 
[root@jbxue ~]# cat list_error 
cat: /etc/thinksay: 没有那个文件或目录 
[root@jbxue ~]# cat list_right 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root 
HOME=/ 
 
# run-parts 
01 * * * * root run-parts /etc/cron.hourly 
02 4 * * * root run-parts /etc/cron.daily 
22 4 * * 0 root run-parts /etc/cron.weekly 
42 4 1 * * root run-parts /etc/cron.monthly 

标准输入(stdin):代码为0,使用<或<<,是将原本需要由键盘输入的数据改由文件内容来替代。注意,<<代表的是结束输入的意思。
 

复制代码 代码示例:
[root@jbxue think]# cat > test <<"eof" 
> my name is think 
> hello world 
> eof 
[root@jbxue think]# cat test 
my name is think 
hello world 

可以把>、<、>>想象成漏斗:数据会从大的一端进入,由小的一端出来。
 
>重定向符在目的文件不存在时,会新建一个。然而,目的文件已存在,它就会被覆盖掉,原本的数据都会丢失。而>>在目的文件不存在时,会新建一个;存在时会追加到文件尾。
 
管道可以把两个以上执行中的程序链接在一起,第一个程序的标准输出可以变成第二个程序的标准输入。
因为,>或者<使用的是临时文件,管道在速度上比临时文件快上10倍。
从最原始的数据开始,然后构造一条条管道,一步步地,管道中的每个阶段都会让数据更接近要的结果。

注意:构造管道时,应该试着让每个阶段的数据量变得更少。
 

复制代码 代码示例:
[root@jbxue think]# cat > test01 << "eof" 
> 1 2 5 
> eof 
[root@jbxue think]# tr -d 2 < test01 | sort > test02 
[root@jbxue think]# cat test02 
1  5 

注意:
有个特殊文件,”位桶“--/dev/null。重定向到此文件的数据都会被系统丢掉。
 
Linux文件重定向的应用场景:
 

 1)屏幕输出信息很重要,而且我们需要将其存下时
 2)后台执行中的程序,不希望它打搅屏幕正常的输出结果时
 3)一些系统的例行工作,希望它可以存下来时
 4)一些执行命令的可能已知错误信息,想以“2> /dev/null"将其丢弃时
 5)错误信息与正确信息需要分别执行时

您可能感兴趣的文章:

解析:Linux之管道与重定向
深入linux中重定向及管道详解
深入linux上shell重定向详解>>
Linux中重定向命令行的方法总结
shell i/o常用重定向方法详解
深入理解Linux重定向的使用
linux文件描述符与输入输出重定向
有关I/O重定向的详细教程