管道与重定向

本文详细介绍了管道和重定向的区别与应用,包括如何利用它们进行高效数据处理和文件重定向,以及提供了行内输入、其他重定向操作符、文件描述符重定向等实用技巧。

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

一 管道与重定向区别:

(1)管道:

格式:program1 | program2:将program1的标准输出修改为program2的标准输入。

"|"的两边都是命令或程序。

管道可以使得执行速度比使用临时文件到程序快上十倍。


(2)重定向:

格式:

*program < file:将program的标准输入改为file。

*program > file:将program的标准输出改为file。

*program >> file:可将program的标准输出附加到file的结尾处。

重定向:左边是命令或程序,右边是文件。


二 重定向:其他重定向操作符。

(一)提供行内输入(inline input)的<<与<<-:

(1)格式:

1.会执行内容里的命令。

*program <<EOF

内容

EOF


2.不执行内容命令。会把命令当成标准输入传给程序。

*program << delimiter(定界符)

内容

delimiter

*shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。


3.<<-:所有开头的tab在传递给程序作为输入之前,都从嵌入文件与结束定界符中删除。


(2)特点:

*可以在shell脚本内部正文提供输入数据,这样的数据叫做嵌入文件(here document)。


(二)<>:打开一个文件作为输入输出之用。


三 重定向与文件描述符:

(一)文件描述符0、1、2,分别对应于标准输入、标准输出以及标准错误输出。

(1)格式:例如:命令 1>output 2>error。

*将命令的标准输出重定向到output文件,标准出错重定向到error文件。

*1>output的1可以省去,因为输出重定向的默认文件描述符为标准输出。


(2)格式:命令 >output 2>&1。

*将命令的标准输出和出错都重定向到output文件。

*解释:>output让文件描述符作为文件output。2>&1:2>重定向标准错误输出到&1;&1无论文件描述符1在哪里,在本例中文件描述符1为output。

*这4个字符2>&1必须连在一起,中间不能有任何空格。


(3)格式:命令 2>&1。

*将标准出错输出重定位到标准输出。

*例如:命令 2>&1 | head. 如果没有2>&1,head的输出信息没有出错信息。


(4)格式:命令 &> file.

*将命令的标准输出和出错都重定向到file文件。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值