【每天一个Linux命令】02. Linux中shell数据重定向(输入重定向与输出重定向)

本文深入讲解了Linux系统中输入和输出重定向的概念及使用方法,包括标准输入输出、错误输出的重定向技巧,并演示了如何利用这些技巧进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一. 简单描述

 

linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,通过这个数字可以实现文件的读写操作。linux启动后,会默认打开3个文件描述符,分别是:标准输入:0  标准输出:1  标准错误输出:2

 

【小解其意】:

输入指令:输入可以从键盘或文件中得到

指令执行:如果成功会把正确的输出到屏幕(默认)或文件中,如果错误会把错误的输出到屏幕(默认)或文件中

 

如果不想默认输出到屏幕上那就需要重定向啦!

二. 输出重定向

格式:command-line1 [1-n] > file或文件操作符或设备

【小解其意】:将一条命令执行结果(标准输出,或者错误输出,默认打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。

 

 

01#【1.默认输出】显示两个不存在的文件,默认输出到屏幕上
02bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls wirelessqa.log wirelessqa2.log
03ls: wirelessqa.log: No such file or directory
04ls: wirelessqa2.log: No such file or directory
05 
06 
07#【2.重定向错误输出】显示两个不存在的文件,重定向到stderr.log
08bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls wirelessqa.log wirelessqa2.log 2>stderr.log
09bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log
10ls: wirelessqa.log: No such file or directory
11ls: wirelessqa2.log: No such file or directory
12 
13#【3.重定向正确输出】一个文件存在,一个文件不存在,将标准正确的输出到stdout.log
14bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>stdout.log
15ls: wirelessqa.log: No such file or directory
16bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log
17logcat.log
18 
19#同上,标准正确输出1可省略
20bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log >stdout1.log
21ls: wirelessqa.log: No such file or directory
22bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log
23logcat.log
24#【4.1重定向正确输出和错误输出】一个文件存在,一个文件不存在,将标准正确的输出到stdout.log,错误输出到stderr.log
25bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>stdout.log 2>stderr.log
26bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log
27logcat.log
28bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log
29ls: wirelessqa.log: No such file or directory
30 
31#【4.2将错误输出与正确输出绑定】将错误输出2 绑定给 正确输出 1,然后将 正确输出 发送给stdout.log
32bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log >stdout.log 2>&1
33bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log
34ls: wirelessqa.log: No such file or directory
35logcat.log
36#【4.3将错误输出和正确输出重定向】将所有标准输出与错误输出输入到all.log文件【& 代表标准输出和错误输出 】
37bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log &>all.log
38bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat all.log
39ls: wirelessqa.log: No such file or directory
40logcat.log
41作者:毕小朋  博客: http://www.wirelessqa.com
42#【5.追加重定向】继续追加把输出写入stdout.log stderr.log  “>>”追加操作符
43bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>>stdout.log 2>>stderr.log
44bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log
45ls: wirelessqa.log: No such file or directory
46ls: wirelessqa.log: No such file or directory
47bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log
48logcat.log
49logcat.log
50 
51#【6.1不显示错误输出】将错误信息去除有两种方法,如下
52bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2>&-
53logcat.log
54bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2>/dev/null
55logcat.log
56#&[n] 代表是已经存在的文件描述符,&1 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符
57#/dev/null 这个设备,是linux 中黑洞设备,什么信息只要输出给这个设备,都会给吃掉
58 
59 
60#【6.2关闭文件描述符】关闭 1,2 文件描述符 【&-表示关闭与它绑定的描述符】
61bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>&- 2>&-
62 
63 
64#【6.3重定向正确输出和错误输出】将正确输出和错误输出都不输出到屏幕上
65 
66bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2>/dev/null 1>/dev/null

 

【提醒注意】:

1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。

2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。

3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。

4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。

5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行

 

三. 输入重定向

格式:command-line [n] <file或文件描述符&设备

命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。

 

01#【1.1键盘输入重定向,control+d结束输入】
02bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat cat1.log
03www.wirelessqa.com
04bixiaopeng
05#【1.2键盘输入重定向,输入end结束】<< 这个连续两个小符号, 意思是『结束的输入字符』。所以键盘输入end时,输入自动结束,不用control+D
06bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat >cat3.log <<end
07> wirelessqa
08> bixiaopeng
09> www.wirelessqa.com
10> end
11 
12#【2.文件输入重定向】#cat 从cat1.log文件中获得输入数据,然后输出给文件cat2.log
13bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat >cat2.log <cat1.log
14bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat cat2.log
15www.wirelessqa.com
16bixiaopeng

订阅

微信搜索“毕小烦”或者扫描下面的二维码,即可订阅我的文章。

image.png

如果文章对你有帮助,请随手点个赞吧!

(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕小烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值