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

    重定向和管道符:
    1.重定向
      程序 = 指令 + 数据
         命令     变量

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

      数据输入:键盘--标准输入,但并不是唯一输入方式;
           --stdin
           echo "123456" | passwd --stdin "username"

            例如:功能添加用户 useradd.sh 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被定义的标识符
        3-9未被定义的标识符
        0--标准输出
        1--标准输入
        2--错误输入输出(标准错误)

    常见重定向符号
      1.标准输出
        > 覆盖重定向
        >> 追加重定向
        set -C 关闭覆盖重定向
        >| 强制重定向
    2.标准输入
    <
      tr 替换文件内容
      tr set1[set2] < file.txt

      tr abc ABC /etc/passwd
      tr abc ABC /etc/passwd > /etc/passwd
        将passwd文件中的a、b、c替换成A、B、C

    <<
          多行数据同时输入

           cat >>a.txt<<EOF
            >11
            >2
            >3
            >EOF
    3.错误输出
         2> 2>>
          /dev/null 黑洞文件(删除)
          /dev/zero
          ls /etc/ > /dev/null 2> /dev/null——
          &> &>> == 2&>1         |=
             ls /etc/ &> /dev/null<————

        扩展:不需要输出内容,只需要输出状态;
            ls /etc/ > /dev/null
            if[$?(命令执行状态) -eq 0];then
                循环体
            fi
        ls > /dev/null 2>dev/null

    2.管道-tee
        command1|command2|command3|...
        前一个命令的执行结果交给后一个命令来执行;
        【Linux思想:结合小功能实现大功能】
        free -m|grep "^Mem"|cut -d'' -f19
        free -m|grep "^Mem"|awk '{print $3}'

        free【范围】-name ab* -type f -perm 600 -mtime +7|xargs rm -rf

        tee[option]...屏幕上输出一次,然后保存一次(一路输入,两路输出)
        tee /tmp/tee.out //如果没有文件,会创建,默认如果文件存在有内容,会覆盖

    练习:
    1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中
    head -5 /etc/passwd | tr [a-z][A-Z] > /tmp/passwd.out
    2.将登录至当前系统上的用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中
    who | tail -3 | cut -d'' -f1 | tr [[:lower:]] [[:upper:]] | tree /tmp/who.out
    tail——查看文件尾部多少行(默认为10行)
    -n tail -(n)5 /etc/passwd
    -f 实时查看文件更新内容
    tial -f /var/log/message
    sleep 等待多长时间后再向下执行
    head——查看文件头部多少行(默认10行)
    -n # 前#行,简写-#
    取10-20行:head -20 /etc/passwd | tail -10

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

    wc 统计文本中的字符个数
    wc filename
    行数 字符个数 文件大小(字节) 文件名

    cut
    用来做文件分隔
    -d 指定分隔符(delimiter)
    -f 指定提取哪一列
    -f2
    -f1,3
    -f1-3
    --output-delimiter='xx'
    【cut的局限性:1、-d指定分隔符,不能同时指定多个;2、不能做高级的格式化输出】

    sort 排序命令,默认查看第一个字符(包括数字字母以及空格和特殊符号),以ASCII码来排序 (大小写不是)
    -r 逆序
    -u 去掉重复
    -n 按数字排序
    -t -k 指定分隔符以及按照哪个区间排序

    uniq 去除重复内容
    连续且相同的命令,才被视为重复
    建议,先排序,后去重
    -c 统计某些字符重复次数
    sort filename|uniq -c

  • 相关阅读:
    邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功
    邁向IT專家成功之路的三十則鐵律 鐵律七:IT人效率之道-時間管理
    邁向IT專家成功之路的三十則鐵律 鐵律六:求全求盈之道-佈施
    邁向IT專家成功之路的三十則鐵律 鐵律五:IT人穩定發展之道-去除惡習
    邁向IT專家成功之路的三十則鐵律 鐵律四:IT人快速成長之道-複製
    邁向IT專家成功之路的三十則鐵律 鐵律三:IT人長久之道–站對邊
    巧架个人BT服务器
    定制属于自己的自动化安装的linux系统镜像
    如何从Win7中提取制作Windows PE3.0
    将现有Ubuntu系统做成LiveCD
  • 原文地址:https://www.cnblogs.com/wangzijie123456/p/11360471.html
Copyright © 2011-2022 走看看