Linux多命令协作:管道及重定向
CLI的数据流定义
名称 |
说明 |
编号 |
默认 |
文件 |
STDIN |
标准输入 |
0 |
键盘 |
/dev/stdin |
STDOUT |
标准输出 |
1 |
终端 |
/dev/stdout |
STDERR |
标准错误 |
2 |
终端 |
/dev/stderr |
说明:命令行通过STDIN来接收数据,通过STDOUT来输出结果,通过STDERR来输出错误。
重定向
说明:即重新定向命令的数据的STDIN、STDOUT、STDERR。通常用来保存输出的结果和错误信息。
管道
说明:将命令的STDOUT重定向到另一个命令的STDIN。通常用来实现复杂的功能
管道 |
关键字 |
定义 |
例子 |
| |
将一个命令的STDOUT重定向到另一个命令的STDIN |
Ls –l | grep aaa |
命令行文本处理工具
命令 |
定义 |
用法 |
参数 |
grep |
基于行,基于关键字搜索文本,包含匹配 |
grep parameter‘keyword’file |
-i:忽略大小写 -n:显示结果所在行数 -v:输出不带关键字的行 -Ax:输出搜索结果及其之后的x行 -Bx:输出搜索结果及其之前的x行 |
cut |
基于列处理文本 |
cut paremeter file |
-d:指定分割字符(默认是TAB) -f:指定输出的列号 -c:基于字符进行分割,如-c1-3 |
wc |
文本统计 |
wc parameter file |
-l:只统计行数 -w:只统计的单词数 -c:只统计字节数 -m:只统计字符数 |
sort |
文本行排序 |
sort parame file(默认基于行首字符进行字母排序) |
-r:倒序 -n:基于数字进行排序 -f:忽略大小写 -u:删除重复行 -t c:以c为分隔符进行列排序 -k x:当基于指定字符进行分割排序时,指定基于哪个列排序 |
uniq |
删除相邻重复行 |
uniq < file? |
|
diff |
文本比较 |
diff parameter file1 file2 |
-i:忽略大小写 -b:忽略空格数据量 -u:统一显示比较信息 |
aspell |
检查拼写 |
aspell file |
|
tr |
处理文本内容 |
tr parameter < file |
-d:删除指定关键字’ ‘a-z’‘A-Z’:字符替换 |
sed |
搜索替换 |
sed parameter ‘re’file |
-f:指定re(正则表达式)文件 |
printf |
格式化输出 |
prinf ‘输出类型 输出格式’ str |
输出类型: %ns:输出n个字符串 %ni:输出n个整数 %m.nf:输出n位小数,mn位整数的浮点数 输出格式: \a: \b \f \n \r \t |