zoukankan      html  css  js  c++  java
  • 02、重定向和管道符

    一、重定向

        程序 = 指令 + 数据

          (命令)(变量)

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

        数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;

             --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

    二、管道 - 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

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

        wc

            word count 统计文本文件中的字符个数

            用法:wc filename

            行数  字符个数  大小(字节)  文件名

              -l      -w      -c

        cut

            用来做文件分隔

            -d  指定分隔符(delimiter)

                -d[:]

            -f  指定输出的列数据:

                -f2

                -f1-3

                -f1,3

            --output-delimiter=='xx'

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

        sort

            常用参数:

                -r  逆序

                -f  忽略字符的大小写

                -t  DEDLIMITER指定字段分隔符

                -k  #已指定字段的第几段进行排序

                -n  指定以数值大小进行排序

                -u  uniq排序取出重复,重复的不现实

            排序,默认查看第一个字符(包括数字字母以及空格和特殊字符),以ASCII码来排序(大小写不是)

          uniq

              连续且相同的命令,才被视为重复

              【建议,先排序,后去重】

              -c  统计某些字符重复的个数

              sort filename  |  uniq -c

              -d  重复多少行

  • 相关阅读:
    Java static 关键字 静态初始化块
    一致性哈希
    Java函数传递方式值传递
    Scala 小练习
    Scala 推荐递归编程
    白话 Scala 控制抽象
    函数柯里化(curry)
    Scala 闭包 closure
    Scala 参数(类型)推断
    xcode配置文件中,Architectures表示的意义
  • 原文地址:https://www.cnblogs.com/cnxy168/p/11317302.html
Copyright © 2011-2022 走看看