zoukankan      html  css  js  c++  java
  • 学SHELL的第二天

    重定向和管道符:
    1、重定向
       程序 = 指令 + 数据
                命令 + 变量
       数据输入:键盘 --标准输入,但是并不是唯一输入方式;
        --stdin
        echo "123456"| passwd --stdin "username"
        例如:功能添加用户  useradd.sh user.txt文本文档1000个用户
           ./useradd.sh a
           ...
           /.useradd.sh z
           ./useradd.sh<user.txt(注意,写在user.txt里的文件要按列写)
           while linr;do
           done</etc/passwd
      数据输出:显示器 -- 标准输出,但并不是唯一的输出方式
           ls  /etc/ >a.txt
       fd 文件标识符 0-9-- 相当于给文件分类;
        0      1     2
        0--标准输入
      1--标准输出
      2--错误输入输出
     常见重定向符号
      1、标准输出
      >    覆盖重定向
      set - C  这个是去掉覆盖重定向功能
      >|     强制重定向
      >>   追加重定向,不覆盖
      2、标准输入
      <           tr    替换文件内容
       用法:tr   原来的    现在的<file.txt
      <<         将多行数据同时输入
       cat >>zat.txt<<ECF
       >1
       >2
       >EOF
      3、错误输出
       2>
       扩展:不需要输出内容,只需要输出状态
       ls /etc/ >/dev/null 2>/dev/null
       &> &>>==2&>1
       ls /etc/ &>/dev/null
    2、管道 - tee
     command1|command2|command3|.。。
     前一个命令的执行结果交给后一个命令来执行;
     free -m |grep "^Mem"|cut -d -f19
     tee 一路输入,两路输出
      tee /tmp/tee.out
      如果没有文件,会创建,默认如果文件存在有内容,会覆盖;
     练习:
     将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.outwen文件中
      head -5 /etc/passwd |tr [a-z] [A-Z]>/tmp/passwd.out
     将登录至当前系统上用户信息汇总的后三位信息转换为大写保存至/tmp/who.out
      who |tail -3
    3、文本处理工具 --wc,cut,sort,uniq
    wc
     word count 统计文本文件中的字符数量
     行数 -l     字符个数   -w      文件大小  -c     文件名
    cut
     用来做文件分割
     -d    指定分隔符
     -f    指定输出的列数据
     【cut 的局限性:1、-d指定分隔符,不能同时指定多个2、不能做高级的格式化输出:所以我们要熟练掌握awk】
    sort   排序命令
     根据ASCLL码来进行排序
     常用参数:
      -r 逆序
      -f 忽略字符的大小写
      -t DELIMITER指定字符段分隔符
      -k #已指定字符的第几段进行排序
      -n 指定以数值大小进行排序
      -u uniq 排序去除重复,重复不显示
    uniq
     连续且相同的命令去重
     建议先排序后去重
     -c显示重复了多少次,统计重复次数
     -d仅仅显示重复过的行
     -
    脚本练习题:
    批量创建用户
     if id $* &>/dev/null;then
            echo "这个用户已经存在"
    else
            for i in $*;do
                    useradd $i
                    echo "123456"|passwd --stdin "$i" &>/dev/null
                    echo "用户$i添加成功"
            done   
            exit 0
    fi
  • 相关阅读:
    《TCP/IP详解》之二:流式数据交互
    《TCP/IP详解》之一:连接建立、断开
    异步日志实现
    关于继承和组合的一点总结
    GitHub源代码管理基本操作 Mossad
    移动APP的开发需求分析 Mossad
    对理想团队模式构建的设想以及对软件流程的理解 Mossad
    C语言I博客作业06
    C语言I博客作业02
    C语言I博客作业03
  • 原文地址:https://www.cnblogs.com/zrxuexi/p/11347374.html
Copyright © 2011-2022 走看看