• 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
    
    • 1

    cut命令

    cut - 在文件的每一行中提取片断
    cut [OPTION]... [FILE]...
    
    • 1
    • 2

    在 每个文件 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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...]
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    结合使用

    #在 last 的输出信息中,只要有 root 就取出,并且仅取第一栏
    last | grep 'root' |cut -d ' ' -f1
    
    • 1
    • 2

    sort 命令

    sort [OPTION]... [FILE]...
    
    • 1
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    uniq 命令

    对于一些重复输出的行进行去重。

    uniq 命令描述
    -c打印出现的次数,只能统计相邻的;
    -d只打印重复行;
    -u只打印不重复行;
    -D只打印重复行,并且把所有重复行打印出来。
    #使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位
    last | cut -d ' ' -f1 | sort | uniq
    #使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位,并统计出现次数
    last | cut -d ' ' -f1 | sort | uniq -c
    
    • 1
    • 2
    • 3
    • 4

    wc 命令

    wc 命令描述
    -l仅列出行;
    -w仅列出多少字(英文单字);
    -m多少字符;
    cat /etc/passwd | wc
        141     722    4617
    # 输出的三个数字中,分别代表: 『行、字数、字符数』
    #使用 last 取得这个月份登陆系统的总人次
    last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l 
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    cmd界面中文显示?VS控制台中文显示?
    原生微信小程序引入离线iconfont字体图标
    【Python】通过Fourier变换实现频域滤波
    股票价格排行榜查询易语言代码
    SRE 的工作介绍
    asp.net coremvc+efcore增删改查
    Feign
    String10:StringBuffer类结构剖析
    在python环境中安装jupyter notebook报错及解决方法,以及如何运行jupyter
    Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)
  • 原文地址:https://blog.csdn.net/qq_32702685/article/details/127728972