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

    1.重定向 --> 标准输入、标准输出、错误输入
    在程序中,数据如何输入?又如何输出?
    数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;
      --stdin
      echo "123456"|passwd --stdin "username"
      例如:功能添加用户,useradd.sh user.txt文本文档1000个用户
        执行./useradd.sh
        ./useradd < user.txt
      while line ;do
        循环体 $line
      done < /etc/passwd
    数据输出:显示器 -- 标准输出,但是并不是唯一输出方式
      ls /etc/ > a.txt
    fd文件标识符0-9 -- 相当于给文件分类
      0 -- 标准输出
      1 -- 标准输入
      2 -- 标准输入输出(标准错误)
    常见重定向符号
      1.标准输出
        > 覆盖重定向-->非常危险
          set -C --> 关闭覆盖重定向功能
          set +C --> 开启覆盖重定向功能
          >| 强制重定向
        >> 追加重定向 --> 不覆盖
      2.标准输入
        < tr -- 替换文件内容
          tr abc ABC < /etc/passwd --> 把passwd文件里的abc替换为ABC
        << 将多行数据同时输入
          cat >>a.txt<< EOF
      3.错误输出
        2> 追加
        扩展:不需要输出内容,只需要输出状态;
          ls /etc/ > /dev/null
          if [$? -eq 0];then
            循环体
          fi
        2>> 追加
        &> &>> == 2&>1
          ls /etc/ &> /dev/null
    cat a.txt | more
    2.管道-tee
    command1|command2|command3|……
    前一个命令执行结果交给后一个命令来执行
    【Linux思想:结合小功能实现大功能】
    free -m|grep "^Men"|cut -d'' -f19
    free -m|grep "^Men"|awk '{print $3}'
    find [范围] -name ab* -type f -perm 600 -mtime +7|xargs rm -rf
    -f 列数/个数
    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行)
    3.文本处理工具--wc,cut,sort,uniq
    wc---word count(统计文本文件中的字符个数)
      用法:wc -c filename 看文件大小
        -l 看行数
        -w 看字符个数
    cut
      用来做文件分割
        -d 指定分隔符(delimiter)
        -f 指定输出的列数
        f2 第二列
        f1-3 1-3列
        f1,3 1,3列
        --output-delemiter=' ' 将输出的分隔符替换为自己想用的分隔符

      [cut的局限性1.-d指定分隔符,不能同时指定多个 2.不能做高级的格式化输出。所以需要熟练掌握awk]
    sort
      排序(根据ASCII码进行排序,大小写不是),默认查看第一个字符(包括数字字母以及空格和特殊符号)
        -t 指定分隔符
        -r 逆序
        -f 忽略字符的大小写
        -n 指定以数值大小进行排序
        -u uniq 排序去除重复,重复的不显示
        -k 指定按照那一列进行排序
    uniq
        去重,连续且相同的命令才被视为重复
        建议先排序后去重
        -c 统计某些字符重复了多少次
        sort filename | uniq -c
        -d

  • 相关阅读:
    使用pdm建表并生成SQL语句
    eclipse从svn检出项目之后,找不到BuildPath
    如何搞定SVN目录的cleanup问题和lock问题
    ORA-00923: 未找到要求的 FROM 关键字
    java.sql.SQLException: ORA-00911: 无效字符
    10.vue-router实现路由懒加载( 动态加载路由 )
    9、vue-router的两种模式(hash模式和history模式)的区别
    8、vue-router传递参数的几种方式
    5、vue-router有哪几种导航钩子( 导航守卫 )
    4.怎么定义 vue-router 的动态路由? 怎么获取传过来的值
  • 原文地址:https://www.cnblogs.com/xsnblog/p/11347900.html
Copyright © 2011-2022 走看看