命令执行顺序控制与管道
命令执行顺序的控制
- 顺序执行多条命令
简单的顺序执行可以使用;来完成 - 有选择的执行命令
通过&&或||来实现选择性执行,&&表示若前面的命令执行结果返回0则而执行后面的,狗则不执行,||相反which cowsay>/dev/null && echo "exist" || echo "not exist"
管道
- 使用管道查看目录下大量文件
ls -al /etc | less #通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看 - cut命令,打印每一行的某一字段
- 打印
/etc/passwd文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
cut /etc/passwd -d ':' -f 1,6- 打印
/etc/passwd文件中每一行的前 N 个字符:
# 前五个(包含第五个) cut /etc/passwd -c -5 # 前五个之后的(包含第五个) cut /etc/passwd -c 5- # 第五个 cut /etc/passwd -c 5 # 2 到 5 之间的(包含第五个) cut /etc/passwd -c 2-5 - 打印
grep命令,在文本中或stdin中查找匹配字符串
grep命令的一般形式:grep [命令选项]... 用于匹配的表达式 [文件]...- 查看环境变量中以 "yanlou" 结尾的字符串
export | grep ".*yanlou$"
wc命令,简单小巧的计数工具
- 统计并输出一个文件中行、单词和字节的数目
wc /etc/passwd - 分别只输出行数、单词数、字节数、字符数和输入文本中最长一行的字节数:
# 行数 wc -l /etc/passwd # 单词数 wc -w /etc/passwd # 字节数 wc -c /etc/passwd # 字符数 wc -m /etc/passwd # 最长行字节数 wc -L /etc/passwd - 结合管道来统计
/etc下面所有目录数:ls -dl /etc/*/ | wc -l
sort排序命令
- 默认为字典排序:
cat /etc/passwd | sort - 反转排序:
cat /etc/passwd | sort -r - 按特定字段排序:
上面的-t参数用于指定字段的分隔符,这里是以":"作为分隔符;-k 字段号用于指定对哪一个字段进行排序。这里/etc/passwd文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数字排序就要加上-n参数:cat /etc/passwd | sort -t':' -k 3cat /etc/passwd | sort -t':' -k 3 -n
uniq去重命令
- 过滤重复行
history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq #uniq只能去连续重复的行,需要排序才能达到全文去重的效果 - 输出重复行
# 输出重复过的行(重复的只输出一个)及重复次数 history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -dc # 输出所有重复的行 history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -D