zoukankan      html  css  js  c++  java
  • Shell入门02

    Shell入门-02

    1.重定向 标准输入(<) 标准输出 标准错误重回定向

             程序 = 指令 + 数据

                              命令   变量

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

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

                                       --stdin

                                       不进入交互式界面,直接输入密码

                                       echo “123456” | passwd –stdin “username”

                                       例如:功能添加用户,useradd.sh user.txt文本文档1000个用户

                                                  ./useradd.sh  <  user.txt

                                                  while line ; do

                                                                 循环体 $line

                                                  done  <  /etc/passwd

             数据输出:显示器 – 标准输出,但并不唯一输出方式

                                 ls /etc/ > a.txt

             fd文件标识符 0-9 ---- 相当于给文件分类;

                      被定义的标识符 0—标准输出  1—标准输入  2—标准错误(错误输入输出)

             常见的重定向的符号:

                      1.标准输出

                              0>           --      覆盖重定向、非常的危险 重定向后数据将会丢失

                              set –C     关闭重定向功能,剪掉C的功能 C的功能就是去掉重定向

                              set +C      加上重定向

                              >|             强制重定向

                              >>           --      追加重定向 将数据内容追加到文件末尾  不覆盖

                                           less more

                                           cat a.txt | more/less

                      2.标准输入

                              1<             a < b  b的内容交给a

                                                tr 替换  tr set [set2]    默认进入交互式界面手动输入替换内容

                                                                 tr set [set2] < file.txt

                                                tr abc ABC < /etc/passwd

                                                         |  |

                           单个字符

                                                tr abc ABC < /etc/passwd > /etc/passwd

    <<             cat 查看,将多行数据同时输入

                                                cat >> a.txt <<EOF

                                                >1

                                                >2

                                                >3

                                                >EOF

                      3.错误输出

                                       2>    2>>

                                       扩展:不需要输出内容,只需要输出状态;

                                                   ls /etc/ > /dev/null 2> /dev/null

                                                   if [$? –eq 0];then

                                                                 循环体

                                                   fi

                    &> &>> == 2&>1

                                                   ls /etc/ &> /dev/null

    2.管道符 – tee

             command1|command2|command3|… …

             前一个命令的执行结果交给后一个命令来执行;

             【linux思想:结合小功能实现大功能】

                              free –m

                              m  --- 单位

    free –m|grep “^Mem” | cut –d’ ’ –f19

    free –m|grep “^Mem” | awk ‘{print $3}’

    s = ` free –m|grep “^Mem” | cut –d’ ’ –f19`

    if [$s –gt 1000];then

             告警

    fi

    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 实时查看文件更新查看

    Sleep  等待多长时间后再执行

                  tail –f /vaar/log/message

    head  查看文件头部多少行(默认10行)

                  -n head –n 5 /etc/passwd = head -5 /etc/passwd

    head -20 /etc/passwd | tail -10

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

    wc

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

            

             行数14 字符个数72 文件大小711字节 文件大小

             –c 文件大小

             -l  看行数

             -w 字符个数

    cut

             用来做文件分割

             -d 指定分隔符(单个) (delimiter)

             -f 指定多少列数 –f2输出第二列

                                          -f1,3输出第一列到第三列

                                          -f1-3

                      history | cut –d’ ’ –f3 /etc/passwd

             --output-delimiter=’xx’

                      cut –d’ ’ –f1,3 /etc/passwd

    cut –d’:’ –f1,3 –output-delimiter=’          ’ /etc/passwd

    格式化输出

    Cut的局限性:

    **-d 指定分隔符不能同时指定多个**

    **不能做高级的格式化输出**           需要熟练掌握awk

    sort

             排序命令,默认将第一个字符(数字、字母、特殊符号、空格)按照ASCII码值来进行排序

             -n 按照数值大小排序 特殊字符和字母在数字前面

             -r 倒序排列

    -f 忽略字符大小写

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

    -u uniq 排序去重复,重复的不显示

    -t指定字段分隔符

    uniq

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

    建议,先排序后去重

             Uniq  –c 统计某些字符重复的次数

                        Sort filename | uniq –c

                        -d 重复的行

    练习:

    显示/etc/passwd的第六行到第十行,按照第三个字段进行数值大小排序,最后显示第一列

  • 相关阅读:
    第一次考核代码及1000字感想
    假期周进度报告2
    《大道至简》读后感
    FileInputFormat看这一段源码
    hadoop源码学习(-)
    linux下的文件解压命令
    Hadoop工作原理
    hadoop程序实例
    linux常用命令
    hadoop的输入和输出文件
  • 原文地址:https://www.cnblogs.com/KAJIA1/p/11314854.html
Copyright © 2011-2022 走看看