我是靠谱客的博主 明亮果汁,最近开发中收集的这篇文章主要介绍Linux 管道命令使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

命令执行的判断依据:; && ||

;命令

在命令和命令之间加上分号(;),分号前的命令执行完成后会立刻执行后面的命令

$?(命令返回值)与&& ||

若前一个命令的执行的结果为正确,在linux 下会返回一个$?=0的值借住&& 与 || 来判断后续的命令是否继续执行

命令的执行情况说明
cmd1 && cmd21.若cmd1执行完毕且正确($?=0),则开始执行cmd 2 ;2.若cmd1执行完毕且错误($?=0),则不执行cmd 2
cmd1 || cmd21.若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 管道命令使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部