支持输入流的命令:能够读写文件内容的命令。

简单性质:能够读写文件内容的命令都支持管道(注意是对文件内容的操作,ls就不可以,因为它不能操作文件内容)。

more

从上往下浏览,按b向上翻,按空格往下翻,最后直接退出。

more a.txt

less

从上往下浏览,按b向上翻,按空格往下翻,按q退出,不会直接退出。

less a.txt

默认显示前10行

head a.txt
head -3 a.txt 或 head -n 3 a.txt

tail

默认显示最后10行

tail a.txt
tail -3 a.txt 或 tail -n 3 a.txt

管道 |

通过管道衔接这些命令,在管道之间穿梭的是文本信息

管道衔接的是前者的输出流后者的输入流

基于文本流的加工方式

cat a.txt | more
cat a.txt | less
cat a.txt | head
cat a.txt | tail

head a.txt | tail -3
head a.txt | tail -3 | tail -1

ls /etc/ -l | more

错误示例

echo "/" | ls -l	// 目的是 ls -l /  ,但是失败了

因为 ls 不能打开文件,不能读取文件内容,也就是它对输入流无法处理,它只能接受参数。

那我就想让它成功怎么办?

echo "/" | xargs ls -l

但是,管道衔接的本质仍然没变,还是前者(echo)的输出和后者(xargs)的输入,只是在这里用了 xargs 的特性。

cut

cut a.txt -b 1-3		// 显示1-3列(按字符切分)
cut a.txt -d" " -f1-3	// 显示1-3列(按指定字符" "切分)

sort

sort a.txt

wc

wc -l a.txt

sed

sed -i "1a\hello" a.txt	// 在第一行后插入一行 -i 表示修改后的内容写入文件
sed -i "2d" a.txt		// 删除第二行
sed -i "s@hello@你好@" a.txt	// 查找"hello"并替换成"你好"
sed -i "s/world/世界/" a.txt

awk

awk -F',' '{print $1}' a.txt	// 

不能

ls
pwd
cd
……