zoukankan      html  css  js  c++  java
  • Linux 命令执行顺序控制与管道

    顺序执行、选择执行、管道、cut 命令、grep 命令、wc 命令、sort 命令等,高效率使用 Linux 的技巧

    顺序执行

    只需要在命令间加;

    sudo apt-get update;sudo apt-get install some-tool
    

    选择执行

    另一种是要修上一条执行成功才执行下一条,那么就用&&

    || 就与它相反,是当上一条不成功执行下一条

    管道

    管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。

    我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。

    |

    ls -al /etc
    
    ls -al /etc | less
    

    由于内容太多,所以通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看。

    cut 过滤

    打印/etc/passwd文件中以:为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录

    cut /etc/passwd -d ':' -f 1,6
    
    # 前五个(包含第五个)
    cut /etc/passwd -c -5
    # 前五个之后的(包含第五个)
    cut /etc/passwd -c 5-
    # 第五个
    cut /etc/passwd -c 5
    # 2到5之间的(包含第五个)
    cut /etc/passwd -c 2-5
    

    grep 查找

    grep [命令选项]... 用于匹配的表达式 [文件]...

    查找目录下所有包含abc的文本文件

    grep -rnI "abc" ~
    

    -r 表示递归搜索子目录文件

    -n 表示打印匹配项行号

    -I 表示忽略二进制文件

    查看环境变量中以abc结尾的字符串

    export | grep ".*abc$"
    

    $ 代表一行的末尾
    .* 代表任意字符

    wc 计数工具

    wc 命令用于统计并输出一个文件中行、单词和字节的数目

    # 行数
    wc -l /etc/passwd
    # 单词数
    wc -w /etc/passwd
    # 字节数
    wc -c /etc/passwd
    # 字符数
    wc -m /etc/passwd
    # 最长行字节数
    wc -L /etc/passwd
    

    结合管道来操作一下,下面统计 /etc 下面所有目录数

    ls -dl /etc/*/ | wc -l
    

    sort 排序

    cat /etc/passwd | sort
    
    cat /etc/passwd | sort -r
    
    cat /etc/passwd | sort -t':' -k 3
    
    cat /etc/passwd | sort -t':' -k 3 -n
    

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

    uniq 去重

    过滤重复行

    查看最近执行过的命令,去除重复

    history | uniq
    
  • 相关阅读:
    【事件类】雅思口语
    【人物类】雅思口语
    【物品类】雅思口语
    Cassandra (二)Java | scala操作
    rpm安装在哪里了?
    用IDEA创建springboot项目遇到的问题Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found
    JDBC连接mysql出现The server time zone value '�й���׼ʱ��' is unrecognized
    Java反射、注解
    Junit单元测试
    Java-线程池、匿名内部类、Lambda表达式
  • 原文地址:https://www.cnblogs.com/linzhenyu/p/13159973.html
Copyright © 2011-2022 走看看