命令执行的判断依据:; && ||
;命令
在命令和命令之间加上分号(;),分号前的命令执行完成后会立刻执行后面的命令
$?(命令返回值)与&& ||
若前一个命令的执行的结果为正确,在linux 下会返回一个$?=0的值借住&& 与 || 来判断后续的命令是否继续执行
命令的执行情况 | 说明 |
---|---|
cmd1 && cmd2 | 1.若cmd1执行完毕且正确($?=0),则开始执行cmd 2 ;2.若cmd1执行完毕且错误($?=0),则不执行cmd 2 |
cmd1 || cmd2 | 1.若cmd1执行完毕且正确($?=0),则不执行cmd 2 ;2.若cmd1执行完毕且错误($?=0),则开始执行cmd 2 |
使用ls查看目录/tmp/abc 是否存在,若存在则用touch 创建/tmp/abc/heh
复制代码
1
2ls /tmp/abc && touch /tmp/abc/heh
cut命令
复制代码
1
2
3cut - 在文件的每一行中提取片断 cut [OPTION]... [FILE]...
在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出.
cut命令 | 描述 |
---|---|
-b, --bytes=LIST | 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 |
-c, --characters=LIST | 以字符为单位进行分割。 |
-d, --delimiter=DELIM | 自定义分隔符,默认为制表符。 |
-f, --fields=LIST | 与-d一起使用,指定显示哪个区域。 |
-n | 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除 |
-s, --only-delimited | 不显示 没有 分隔符 的 行 |
复制代码
1
2
3
4
5
6
7
8
9
10
11#将 PATH 变量取出,我要找出第五个路径 echo $PATH | cut -d ':' -f 5 #将 PATH 变量取出,列出第 3 与第 5 echo $PATH | cut -d ':' -f 3,5 #将 PATH 变量取出,列出第 3 以后的 echo $PATH | cut -d ':' -f 3- #将 PATH 变量取出,列出第 3 到5 echo $PATH | cut -d ':' -f 3-5 #用 last 将显示的登陆者的信息中,仅留下用户大名 last | cut -d ' ' -f 1
grep 命令
在我们日常 Linux 运维过程中,最多的就是对 Linux 文件进行处理,grep(global search regular expression (RE) and print out the line)作为一款非常方便且强大的文本搜索工具,其能使用正则表达式搜索文本,并把匹配的行打印出来,其使用对象为 Linux 系统的所有用户,使得我们日常操作更加方便简单。
Unix 的 grep 家族包括 grep、egrep 和 fgrep。egrep 和 fgrep 的命令跟 grep 只有很小不同。
- egrep 是 grep 的扩展,其支持更多 re 元字符,和扩展正则表达式等。
- fgrep 就是 fixed grep 或 fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示其自身的字面意义,不再特殊。
- linux 使用 GNU 版本的 grep。它功能更强,可以通过 - G、-E、-F 命令行选项来使用 egrep 和 fgrep 的功能。
复制代码
1
2
3grep [options] PATTERN [FILE...] grep [options] [-e PATTERN | -f FILE] [FILE...]
PATTERN 表示:匹配的模式,通常为一个表达式。
FilE 为具体的需要处理的问题,当然也可以为标准输入。
不加参数,匹配 文件中符合条件的行
grep 命令 | 描述 |
---|---|
-A | 显示模式匹配后的几行 |
-B | 显示模式匹配行的前几行 |
-C | 显示模式匹配的前后各几行 |
-i | 忽略大小写匹配 |
-o | 只显示匹配到的字符串 |
-n | 输出匹配到的行的行号 |
-v | 反向选择,即显示除过 匹配’搜寻字符串’ 内容的那一行 |
-c | 计算找到 ‘搜寻字符串’ 的次数 |
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#不加参数,匹配 /etc/passwd 文件中的 root 行 grep "root" /etc/passwd #显示模式匹配后的几行 grep -A2 "^root" /etc/passwd #显示模式匹配行的前几行 grep -B1 "^bin" /etc/passwd #显示模式匹配的前后各几行 grep -C2 "^ftp" /etc/passwd #忽略大小写匹配 /etc/passwd 包含 "Nobody" 的行 grep -i "Nobody" /etc/passwd #匹配出 /etc/passwd 文件中包含 root 的字符串的行 grep -n "root" /etc/passwd #匹配出 /etc/passwd 中不包含 bash 的行 grep -v "nologin" /etc/passwd # 计算 /etc/passwd 文件中 root 字符串出现的次数 grep -c "root" /etc/passwd
结合使用
复制代码
1
2
3#在 last 的输出信息中,只要有 root 就取出,并且仅取第一栏 last | grep 'root' |cut -d ' ' -f1
sort 命令
复制代码
1
2sort [OPTION]... [FILE]...
sort 命令 | 描述 |
---|---|
-t | 指定以什么作为列分割 |
-k | 用来制定利用那列进行排序,通常-t于-k配合使用 |
-r | 将文本文件降序输出 |
-n | 以数组来进行生序排序 |
-f | 忽略大小写字母 |
-u | 取消重复的行 |
-M | 以月份的名字来排序,例如 JAN, DEC 等等的排序方法 |
复制代码
1
2
3
4
5
6
7#个人账号都记录在 /etc/passwd 下,请将账号进行排序 cat /etc/passwd | sort #/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序 cat /etc/passwd | sort -t ':' -k 3 #利用 last ,将输出的数据仅取账号,并加以排序 last | cut -d ' ' -f1 | sort
uniq 命令
对于一些重复输出的行进行去重。
uniq 命令 | 描述 |
---|---|
-c | 打印出现的次数,只能统计相邻的; |
-d | 只打印重复行; |
-u | 只打印不重复行; |
-D | 只打印重复行,并且把所有重复行打印出来。 |
复制代码
1
2
3
4
5#使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位 last | cut -d ' ' -f1 | sort | uniq #使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位,并统计出现次数 last | cut -d ' ' -f1 | sort | uniq -c
wc 命令
wc 命令 | 描述 |
---|---|
-l | 仅列出行; |
-w | 仅列出多少字(英文单字); |
-m | 多少字符; |
复制代码
1
2
3
4
5
6
7
8cat /etc/passwd | wc 141 722 4617 # 输出的三个数字中,分别代表: 『行、字数、字符数』 #使用 last 取得这个月份登陆系统的总人次 last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
最后
以上就是明亮果汁最近收集整理的关于Linux 管道命令使用的全部内容,更多相关Linux内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复