• shell 脚本——第二节课 重定向和管道符


    1、重定向
          程序 = 指令 + 数据
              命令    变量

          在程序中,数据如何输入? 又如何输出?

          数据输出:键盘 -- 标准输入? 又如何输出?
            --stdin
            echo "123456"|passwd --stdin "username'

            例如: 功能添加用户 useradd.sh user.txt文本文档1000个用户
              ./useradd.sh a
              ./useradd.sh b
              ...

              ./useradd.sh < user.txt

              while line ;do
                循环体 $line

              done < /etc/passwd

              数据输出:显示器 -- 标准输出,但是并不是唯一输出方式
                ls /etc/> a.txt

              fd 文件标识符 0-9 --相当于给文件分类;
                被定义的为 0 1 2
                0 -- 标准输出
                1 -- 标准输入
                2 -- 错误输入输出 (标准错误)

              常见重定向符号
                1、标准输出
                >    覆盖重定向
                set-C (关闭覆盖重定向功能)
                >|      (强制重定向)
                >>     追加重定向
                    不覆盖
                2、标准输入
                <     tr 替换文件内容
                     tr set1 [set2] < file.txt
                <<      将多行数据同时输入
                     cat >>a.txt<<EOF
                     >1
                     >2
                     >3
                     >EOF
                3、错误输出
                2 > 2>>
                扩展:不需要输出内容,只需要输出状态;
                     ls /etc/ > /dev/null 2> /dev/null
                     if[$? -eq 0];then
                          循环体
                     fi

                &> &>> == 2&>1
                     ls /etc/ $> /dec/null

    2、管道 -tee

        command1 | command2 | command3 |……

        前一个命令的执行结果交给后一个命令来执行;
        【linux思想:结合雄安功能实现大功能】
        free -m |grep "Mem" |cut -d' ' -f19
        free -m |grep "Mem" |awk '{print $3}'

        tee 一路输入, 两路输出
            tee /tmp/tee.out //如果没有文件,会创建,默认如果文件存在有内容,会覆盖;


        tail 查看文件尾部多少行(默认10行)
            -n tail -n 5 /etc/passwd == 简写 tail -5 /etc/passwd
            -f 实时查看文件更新内容
                  tail -f /var/log/message
        head 查看文件头部多少行 (默认十行)
            -n # 前#行, 简写 -#
        取 10 - 20行 :head -20 /etc/passwd | tail -10

    3、文本处理工具 - wc,cut,sort,uniq

    wc
        word count 统计文本文件中的字符个数
        用法 wc filename
        行数 字符个数 文件大小(字节) 文件名
        -l
        -w
        -c

    cut
        用来做文件分隔
        -d 指定分隔符(delimiter)

        -f 指定输出的列数据

        --output-delimiter='xx'

        【cut的局限性:1、-d指定分隔符,不能同时指定多个2、不能做高级的格式化输出;所以我需要熟练掌握awk】

    sort
        排序,默认查看第一个字符(包括数字字母以及空格和特殊符号),以及ASCLL码来排序(大小写不是)
        -n 按数字大小排序
        -r 逆序
        -t -k 指定分隔符以及指定按照那一列进行排序
        -f 忽略字符大小写
        -u uniq去重复

    uniq

        连续且相同的命令,才被视为重复
        建议,先排序,后重序

    虚无的 繁华里 有谁在等你吗
    回头看 是孤独 留下的痕迹啊

  • 相关阅读:
    [Windows] 一些简单的CMD命令
    开发过程中用到的触发器
    MyEclipse8.5配置struts等框架
    Java编程中中文乱码问题的研究及解决方案
    开源的SSH框架优缺点分析
    java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序
    html,CSS文字大小单位px、em、pt的关系换算
    HTML常用标签参考学习
    匹配中文字符的正则表达式
    Oracle 取上周一到周末的sql
  • 原文地址:https://www.cnblogs.com/zwl123456/p/11337863.html
Copyright © 2020-2023  润新知