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

一、数据流重定向

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

二、管道命令

Linux学习——数据流重定向与管道_第2张图片
1、管道命令的界定符号为”|”;
2、管道命令仅会处理stdout,对stderr会忽略;
3、管道命令必须要能够接收来自前一个命令的数据作为stdin。

选取命令

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

排序命令

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

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

双向重定向

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

你可能感兴趣的:(Linux学习笔记)