一招教你怎么搞懂Linux重定向

将输出重定向到文件或程序

标准输入、标准输出和标准错误

一个运行的程序(或进程)需要从某个位置读取输入并将输出写入某位置。从shell提示符运行的命令会从键盘读取其输入,并将输出发送到其终端窗口。
进程使用称为文件描述符的编号通道来获取输入并发送输出。所有进程在开始时至少需要有三个文件描述符。
标准输入(通道0)从键盘读取输入。
标准输出(通道1)将正常输出发送给终端。
标准错误(通道2)将错误信息发送给终端
通道(文件描述符)

编号通道名称
0stdin标准输入
1stdout标准输出
2stderr标准错误

将输出重定向到文件

重定向stdout可以阻止进程输出显示在终端上。但仅仅重定向stdout不会阻止stderr错误消息显示终端上。如果文件不存在,则会创建文件。如果文件存在,但是所需要的重定向没有附加到文件,则该文件的内容将被覆盖。
如果想丢弃消息,特殊文件 /dev/null 以静默方式丢弃重定向到其自身的通道输出,并且始终时空文件。

file| 重定向以覆盖文件

file | 重定向stdout以附加到文件
2>file | 重定向stderr以覆盖文件
2>/dev/null或者&>file |重定向stdout和stderr以覆盖同一个文件
file 2>&1或者&>>file重定向stdout和stderr以附加到同一文件

管道、重定向和tee命令

当重定向与管道组合时,shell会首先设置整个管道。在管道中,tee命令将其标准输入复制到标准输出中,并且还将标准输出重定向到指定为命令参数的文件。

使用tee命令的管道示例

在本示例中,ls命令的输出将转至文件,并且less不会在终端上显示任何内容。
tee命令克服了这个限制。在管道中,tee将其标准输入复制到其标准输出中,并且还将标准输出重定向到指定为命令参数的文件。
本示例将ls命令的输出重定向到文件,并且将输出传递到less以便在终端上以一次一屏的方式显示。
如果在管道末尾使用了tee,则可以保存命令的最终输出并且同时输出到终端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值