02、重定向和管道符

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 :取消覆盖重定向功能   +C

              >|  强制重定向

          >>  追加重定向

              不覆盖

        2、标准输入

          <    tr 替换文件内容

              tr    set1 [set2]  <file.txt

          <<  将多行数据同时输入

              cat >> a.txt <<EOF

               >1

               >2

               >3

               >EOF

        3、错误输出

          2>  2>>

          扩展:不需要输出内容,只需要输出状态

              ls  /etc/  >  /dev/null

              if [ $? -eq 0 ];then

                循环体

              fi

          ls > /dev/null 2> /dev/null

          &> &>>  == 2& > 1

              ls  /etc/  &>  /dev/null

2、管道 - tee

    command1 | command2 | command3 | ... ...

    前一个命令的执行结果交给后一个命令执行;

    【Linux思想:结合小功能实现大功能】

    free - m | grep "^Men" | cut -d' ' -f19

    free - m | grep "^Men" | awk '{print $3}'

    tee   一路输入    俩路输出

        tee  /tmp/tee.out  //如果没有文件,会创建,默认如果文件存在且有内容,会覆盖;

    练习:将/etc/passwd文件中的前5行内容转换为大写保存至/tmp/passwd.out文件中;

          head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

         将登录至当前系统上用户信息汇总的后三位信息转换为大写后保存至/tmp/who.out

          who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]]  tee /tmp/who.out

    

    tail  查看文件尾部多少行(默认十行)

        -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

猜你喜欢

转载自www.cnblogs.com/cnxy168/p/11317302.html