概述
命令执行的判断依据:; && ||
;命令
在命令和命令之间加上分号(;),分号前的命令执行完成后会立刻执行后面的命令
$?(命令返回值)与&& ||
若前一个命令的执行的结果为正确,在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
ls /tmp/abc && touch /tmp/abc/heh
cut命令
cut - 在文件的每一行中提取片断
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 | 不显示 没有 分隔符 的 行 |
#将 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 的功能。
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
PATTERN 表示:匹配的模式,通常为一个表达式。
FilE 为具体的需要处理的问题,当然也可以为标准输入。
不加参数,匹配 文件中符合条件的行
grep 命令 | 描述 |
---|---|
-A | 显示模式匹配后的几行 |
-B | 显示模式匹配行的前几行 |
-C | 显示模式匹配的前后各几行 |
-i | 忽略大小写匹配 |
-o | 只显示匹配到的字符串 |
-n | 输出匹配到的行的行号 |
-v | 反向选择,即显示除过 匹配’搜寻字符串’ 内容的那一行 |
-c | 计算找到 ‘搜寻字符串’ 的次数 |
#不加参数,匹配 /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
结合使用
#在 last 的输出信息中,只要有 root 就取出,并且仅取第一栏
last | grep 'root' |cut -d ' ' -f1
sort 命令
sort [OPTION]... [FILE]...
sort 命令 | 描述 |
---|---|
-t | 指定以什么作为列分割 |
-k | 用来制定利用那列进行排序,通常-t于-k配合使用 |
-r | 将文本文件降序输出 |
-n | 以数组来进行生序排序 |
-f | 忽略大小写字母 |
-u | 取消重复的行 |
-M | 以月份的名字来排序,例如 JAN, DEC 等等的排序方法 |
#个人账号都记录在 /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 | 只打印重复行,并且把所有重复行打印出来。 |
#使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位
last | cut -d ' ' -f1 | sort | uniq
#使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位,并统计出现次数
last | cut -d ' ' -f1 | sort | uniq -c
wc 命令
wc 命令 | 描述 |
---|---|
-l | 仅列出行; |
-w | 仅列出多少字(英文单字); |
-m | 多少字符; |
cat /etc/passwd | wc
141
722
4617
# 输出的三个数字中,分别代表: 『行、字数、字符数』
#使用 last 取得这个月份登陆系统的总人次
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
最后
以上就是明亮果汁为你收集整理的Linux 管道命令使用的全部内容,希望文章能够帮你解决Linux 管道命令使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复