Linux学习——数据流重定向与管道

本文介绍了Linux中的数据流重定向,包括标准输入、输出和错误流,以及重定向的不同方式。接着详细讲解了管道命令的使用,如何将命令的输出作为另一个命令的输入。还探讨了选取命令如`cut`和`grep`,以及排序命令`sort`、计数命令`wc`和去除重复行的`uniq`。最后提到了双向重定向命令`tee`,它可以同时将数据输出到文件和屏幕。

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

一、数据流重定向

命令的执行过程
上图包含3种数据流:
1、标准输入流(stdin):代码为0,符号为<或<<;
2、标准输出流(stdout):代码为1,符号为>或>>;
3、标准错误流(stderr):代码为2,符号为2>或2>>。
将数据从指定的流输入或输出,就称为数据重定向。
几点解释:
1、>或2>:以覆盖的方式输出
2、>>或2>>:以追加的方式输出
3、<:标准输入流默认从键盘输入,<<:用于设定结束输入的关键字
例如:cat > test.sh << eof 则只有当输入eof并回车之后才会执行完cat 命令。

二、管道命令

这里写图片描述
1、管道命令的界定符号为”|”;
2、管道命令仅会处理stdout,对stderr会忽略;
3、管道命令必须要能够接收来自前一个命令的数据作为stdin。

选取命令

1、cut:将同一行数据进行分解,从一行中取出部分信息。
这里写图片描述
对cut -d’分隔符’ -f field 的解释:
首先从每一行找到‘分隔符’的位置,然后根据f 后的数字x找到对应的第x个分隔符,然后取出第x-1个分隔符与第x个分隔符之间的字符。若x=分隔符数+1,则输出最后一个分隔符之后的所有字符,若x更大,则输出为空。
-c后面所接的为‘x-y’格式,如‘5-8’表示选取第‘5-8’个字符
2、grep:按照条件取出某行
这里写图片描述
直接grep ‘字符串’:选取带有相应‘字符串’的行显示;
-n在正常输出结果的前提下在每行最前面加入相应行的行号;

排序命令

1、sort:对输入内容进行排序。
这里写图片描述
2、wc:统计字、字符、行。
这里写图片描述
直接使用wc命令将输入行数,字数和字符数,其中字数是以空格为区分的,若无空格,则再长的字符串都是做一个字。
3、uniq:取出结果中的重复行。
这里写图片描述

注:管道命令一般都会与选取与排序命令结合或者数据流重定向结合使用,管道命令以‘|’为界定符,命令依次从左向右执行,‘|’之前的执行结果将作为‘|’之后的命令的输入。

双向重定向

双向重定向命令(tee)能将数据流同时输出到文件与屏幕:
这里写图片描述
示例:last | tee test.list|cut -d’ ’ -f1
若加了 -a 则内容会加在文件之后,若无,则会重写该文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值