命令执行顺序控制与管道

1、简单的顺序执行可使用 ; 实现

sudo apt-get update;sudo apt-get install some-tool;some-tool
# 让它自己运行

2、有选择的执行命令

  • &&用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果,返回结果为0表示命令执行成功,不为0表示命令执行失败)返回 0
    则执行后面的,否则不执行

  • ||在这里就是与&&相反的控制效果,当上一条命令执行结果为 ≠0($?≠0)时则执行它后面的命令

 which cowsay>/dev/null && echo "exist" || echo "not exist

3、管道

管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

ls -al /etc | less
#管道将前一个命令(ls)的输出作为下一个命令(less)的输入,
#然后就可以一行一行地看
  • cut 命令 打印每一行的某一字段
    语法: cut(选项)(参数)
cut(选项)参数
-b仅显示行中指定范围的字节数
-c仅显示行中指定范围的字符
-d指定字段的分隔符,默认的字段分隔符为“TAB”
-f显示指定字段的内容
# 前五个(包含第五个)
cut /etc/passwd -c -5
#使用-d指定字段分隔符,使用-f获取指定字段 
cut /etc/passwd -d ':' -f 1,6
  • grep 命令,在文本中或 stdin 中查找匹配字符串
    默认格式:grep [命令选项]… 用于匹配的表达式 [文件]…
#搜索目录下所有包含"abc"的文本文件
grep -rnI "abc" ~
#
-r 参数表示递归搜索子目录中的文件,
-n表示打印匹配项行号,
-I表示忽略二进制文件
  • wc命令 计数工具
输出行数、单词数、字节数、输入文本中最长一行的字节数
wc /etc/passwd
行数
wc -l /etc/passwd
单词数
wc -w /etc/passwd
字节数
wc -c /etc/passwd
字符数
wc -m /etc/passwd
最长行字节数
$ wc -L /etc/passwd
  • sort排序命令
    这个命令功能很简单就是将输入按照一定方式排序,然后再输出,它支持的排序有按字典排序,数字排序,按月份排序,随机排序,反转排序,指定特定字段进行排序等等,默认按字典排序
    参数说明:
选项说明
-b忽略每行前面开始出的空格字符
-c检查文件是否已经按照顺序排序
-d排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f排序时,将小写字母视为大写字母
-i排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m将几个排序好的文件进行合并
-M将前面3个字母依照月份的缩写进行排序
-n依照数值的大小排序
-u意味着是唯一的(unique),输出的结果是去完重了的
-o<输出文件> 将排序后的结果存入指定的文件
-r以相反的顺序来排序

默认按字典排序

cat /etc/passwd | sort

反转排序

cat /etc/passwd | sort -r

-t参数用于指定字段的分隔符,这里是以":"作为分隔符;-k 字段号用于指定对哪一个字段进行排序
/etc/passwd文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数字排序就要加上-n参数

cat /etc/passwd | sort -t ':' -k 3 -n
  • uniq 去重命令

    对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort

uniq参数说明

参数说明
-c在每行前加上表示相应行目出现次数的前缀编号
-d只输出重复的行
-D只输出重复的行,不过有几行输出几行
-f忽略的段数,-f 1 忽略第一段
-i不区分大小写
-s和-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
-u去除重复的后,全部显示出来,根mysql的distinct功能上有点像

history命令查看最近执行过的命令,过滤重复出现的行

history | cut -c 8- | cut -d ' ' -f 1 | uniq

uniq命令只能去连续重复的行,不是全文去重,要达到预期效果,先排序:

history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值