程序:指令+数据

    读入数据 input
    输出数据 output

    打开的文件都有一个fd:file descripter(文件描述符)

    标准输入设备:键盘 0
    标准输出设备:显示器 1
    标准错误输出设备:显示器 2

    I/O重定向:改变标准位置即为重定向

    输出重定向:    【只重定向正确输出】
    命令 > 新位置 覆盖重定向
    命令 >> 新位置  追加重定向

    set -C  禁止对已有文件进行覆盖输出重定向
    如果需要强制覆盖,使用>|

    set +C  允许对已有文件进行覆盖输出重定向

    错误输出重定向   【只重定向错误输出】

    2>  覆盖重定向
    2>>  追加重定向

    如果需要同时重定向正确输出和错误输出
    可以同时指定输出重定向文件和错误输出重定向文件
    例如:
    使用覆盖的形式
    cat 3.txt 1.txt > right.txt 2> wrong.txt
    使用追加的形式
    cat 3.txt 1.txt >> right.txt 2>> wrong.txt
    指定为同一个文件
    cat 3.txt 9.txt >> right.txt 2>> right.txt

    或者使用&合并输出为同一个数据流进行重定向
    &>  合并覆盖
    &>>  合并追加

    输入重定向 
    tr abc ABC
    默认对于标准输入进行替换

    这里我们使用 < 重定向标准输入,对源文件的内容进行替换后输出
    tr abc ABC < 源文件

    或者对源文件的内容进行替换后输出到新文件
    tr abc ABC < 源文件 > 目标文件

    比较特殊的是<< 这里不是表示追加,我们使用<<表示此处生成文档
    例如:
    cat << EOF
    cat >> example.txt <<EOF
    当我们输入其他内容的时候,将内容追加到example.txt
    当我们输入EOF,则保存文件example.txt

    管道:

    将前一个命令的输出结果作为第二个命令的输入
    第二个命令的输出作为第三个命令的出入……

    注意:最后一个命令会在当前shell进程的子shell进程中执行。

    命令1|命令2|命令3|……
     例如:
     cat test2.txt|tr test TEST

    tee 目标文件
    从标准输入读取数据,同时输出到标准输出和目标文件
    例如:
   tee a.txt
    echo "$PATH" | tr 'a-z' 'A-Z' | tee b.txt

    文件处理工具

    wc   统计字符行数,数量,单词数量
        -l  line
        -w  words
        -c  character

    cut  分割文件
        -d 指明分隔符
        -f

​  数字 精确的第n个部分
            a,b,c  a b c 部分
            m-n   m到n部分
            混合使用  1-3,5
    以= 分割文件 显示分割的第一部分
    cut -d'=' -f 1 /etc/sysconfig/network-scripts/ifcfg-eth0

    以= 分割文件 显示分割的第二部分
    cut -d'=' -f 2 /etc/sysconfig/network-scripts/ifcfg-eth0

    以= 分割文件 显示分割的第一部分和第二部分
    cut -d'=' -f 1-2 /etc/sysconfig/network-scripts/ifcfg-eth0

    sort   排序
    默认比较每行的第一个字符,按照字母表中的升序排列
        -r  降序排列
        -f  忽略字符的大小写
        -t  字段分隔符
        -k  以指定字段为标准排序  

        以=作为分隔符 以第一个部分作为标准进行排序
        sort -t= -k1 /etc/sysconfig/network-scripts/ifcfg-eth0
        以=作为分隔符 以第二个部分作为标准进行排序
        sort -t= -k1 /etc/sysconfig/network-scripts/ifcfg-eth0

        -n 以数值大小排序 (默认是以字符排序)
        -u 排序后去重

        获取history中的命令并去重
        history |cut -d' ' -f5|sort -u

        uniq命令
            -c 显示每行重复出现的次数
            -d 仅显示重复过的行
            -u 仅显示不曾重复的行

        获取history中的命令以及重复次数
        history |cut -d' ' -f5|sort|uniq -c

        提示:uniq 不会检查重复的行,除非它们是相邻的行。
如果您想先对输入排序,使用没有uniq 的"sort -u"。

最后修改:2021 年 08 月 03 日
如果觉得我的文章对你有用,请随意赞赏