zoukankan      html  css  js  c++  java
  • 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    echo $?  ($?--变量:上一条命令的执行状态)    if $?等于0;么?     OK--干!    否则     不    结束

      ls 暗室逢灯  > /dev/null 2> /dev/null   

     /dev/null  黑洞文件  来什么吃什么(删除)   

     /dev/zero   吹泡泡      

    &>  &>>  ==  2&>1   

         ls /etc/ &> /dev/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   如果没有文件,会创建,默认如果文件存在有内容,会覆盖;

     练习:  将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;   head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

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

    who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]] | tee /tmp/who.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

      tar 压缩   tr   替换   cut 切        

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

  • 相关阅读:
    基于android混合开发的JsBridge技术学习
    使用centos引导内核错误:kernel: pnp 00:0b: can't evaluate _CRS: 8
    mysql的错误:The server quit without updating PID file /usr/local/mysql/data/door.pid).
    关于新的man版本出现“无法解析 /usr/share/man/zh_CN/man1/ls.1.gz: 没有那个文件或目录“
    使用struts2标签<s:action无法显示引用页面问题
    cookie 跨域的问题
    mysql8.0 在window环境下的部署与配置
    webconfig的配置解析
    C#.net 创建XML
    HashMap和HashTable的区别
  • 原文地址:https://www.cnblogs.com/baocx/p/11400637.html
Copyright © 2011-2022 走看看