参考课程-蓝桥云课

命令执行顺序的控制

  1. 顺序执行多条命令
    简单的顺序执行可以使用;来完成
  2. 有选择的执行命令
    通过&&||来实现选择性执行,&&表示若前面的命令执行结果返回0则而执行后面的,狗则不执行,||相反
    which cowsay>/dev/null && echo "exist" || echo "not exist"
    

管道

  1. 使用管道查看目录下大量文件
    ls -al /etc | less  #通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看
    
  2. cut命令,打印每一行的某一字段
    • 打印/etc/passwd文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
    cut /etc/passwd -d ':' -f 1,6
    
    • 打印/etc/passwd文件中每一行的前 N 个字符:
    # 前五个(包含第五个)
    cut /etc/passwd -c -5
    # 前五个之后的(包含第五个)
    cut /etc/passwd -c 5-
    # 第五个
    cut /etc/passwd -c 5
    # 2 到 5 之间的(包含第五个)
    cut /etc/passwd -c 2-5
    

grep命令,在文本中或stdin中查找匹配字符串

  1. grep命令的一般形式:
    grep [命令选项]... 用于匹配的表达式 [文件]...
    
  2. 查看环境变量中以 "yanlou" 结尾的字符串
        export | grep ".*yanlou$"
    

wc命令,简单小巧的计数工具

  1. 统计并输出一个文件中行、单词和字节的数目
    wc /etc/passwd
    
  2. 分别只输出行数、单词数、字节数、字符数和输入文本中最长一行的字节数:
    # 行数
    wc -l /etc/passwd
    # 单词数
    wc -w /etc/passwd
    # 字节数
    wc -c /etc/passwd
    # 字符数
    wc -m /etc/passwd
    # 最长行字节数
    wc -L /etc/passwd
    
  3. 结合管道来统计/etc下面所有目录数:
    ls -dl /etc/*/ | wc -l
    

sort排序命令

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

uniq去重命令

  1. 过滤重复行
    history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq  #uniq只能去连续重复的行,需要排序才能达到全文去重的效果
    
  2. 输出重复行
    # 输出重复过的行(重复的只输出一个)及重复次数
    history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -dc
    # 输出所有重复的行
    history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -D