Linux的数据流重导向,和管线命令

数据流重导向(redirect)

名称简称代码使用方式
标准输入(standard input)stdin0

<,将文件的数据作为其他命令的输入

<<,设定输入结束的字符串 

标准输出(standard output)stdout1

>,覆盖方式将正确的数据输出

>>,累加方式将正确的数据输出

标准错误输出(standard error output)stderr2

2>,覆盖方式将错误的数据输出

2>>,累加方式将错误的数据输出

数据流重导向,可以将命令的stdout或stderr分别输出到其他的文件或设备中去。

也可以将文件或设备作为stdin输入,作为命令的输入。

 

多条命令的执行顺序

$?代表命令执行结果,其值为0表示成功。

cmd1;cmd2分号两边的命令没有相关性,只是按顺序执行
cmd1&&cmd2

1若cmd1执行完毕且正确执行($?=0),则执行cmd2

2若cmd1执行完毕且为错误($?<>0),则不执行cmd2

cmd1||cmd2

1若cmd1执行完毕且正确执行($?=0),则不执行cmd2

2若cmd1执行完毕且为错误($?<>0),则执行cmd2

cmd1&&cmd2||cmd3

1若cmd1的($?=0),则执行cmd2

2若cmd1的($?<>0),则执行cmd3

 

管线命令(pipe)

cmd1|cmd2   cmd1的stdout,作为cmd2的stdin

管线命令仅会处理stdout,对于stderr会予以忽略

管线命令必须能够接受前一个命令的数据成为stdin继续处理才行,也就是说cmd2是有限制的

 

具体管线命令

cut从每行中,取出符合条件的部分
grep

在一行中,若有符合条件的部分,则输出此行。

支持正则表达式。

sort对文件中的多行进行排序
uniq若有重复的多行,只输出第一个
wc统计文件中的行,单词,字符,字节的数量
tee从stdin读取,并同时输出到stdout和文件
tr替换或删除一段文字
coltab转换成多个空格,或man page转换为文本
join将两个文件中相同数据的两行,连接成一行
paste直接将两个文件的两行,合并成一行,并以tab分割
expand将tab转换成空格
split

将一个大文件分割成几个小文件

可用 cat pieces* >> file 来恢复

xargs

从stdin中,以空格或换行来分割出多个参数,给其他命令

许多命令不支持管线,可以通过xargs提供参数

 

减号-   代表stdin或stdout

将/home里面的文件都打包,打包的数据输出到stdout,第一个“-”代表stdout。

经过管线后,解压包的数据从stdin而来,第二个“-”代表stdin

$ tar -cvf - /home | tar -xvf -

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值