• lesson


    CTRL+C CTRL+D :前者用于结束一个程序,后者用于结束终端输入。
    --符号
    *:匹配任意长度的任意字符
    ?:匹配任意一个字符
    #: shell 中表注释
    : 脱意符号
    []:任意属于字符组的字符
    {}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
    >>:附加到指定文件的结尾
    >:输出重定向
    <:输入重定向
    |:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
    ||:逻辑或
    &&:逻辑与,前面命令成功后执行后面命令
    &:在后台执行,前面命令后执行后面命令,不强调成功与否
     
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    shell 脚本的优点:
     1.一次性完成目标
     2.不用重复键入一系列命令
     3.简化用户的操作
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    二、常用的Shell类型
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    常用Shell:Bourne Shell,Bourne Again Shell ,C Shell, Korn Shell,Perl Shell
    Bourne Again Shell: 简称Bash ,提供,命令历史,命令补全,命令编写等功能,只需命令行键入bash并回车
    Korn Shell:简称Ksh,较强的作业控制能力,如挂起,后台执行,唤醒,终止以及窗口功能
    Perl Shell(Practical Extraction和Report Language):用来编写web应用程序的通用网关接口(GCI)
    Bourne Shell:简称bsh,简单,编写能力强,但操作使用不够方便,不支持后台运行,
           总是接管屏幕和键盘的控制,只需命令行键入sh并回车
    C Shell:提供方便的用户界面设计,提供命令行编辑,拼写校正,命令历史替换,作业控制等功能。命令行键入csh回车,tcsh回车
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    三、Shell基本语法
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    1.注释:#注释内容、  #!:操作系统使用哪一个Shell,绝对路径名。
    2.大小写区分:UNIX与Linux都是区分大小写的,Shell脚本同样也区分大小写
    3.IO重定向:在Linux系统中,数据流可以分为三种:数据输出,数据输入,错误输出。相应地,每一个进程也都有三个特殊的文件描述    指针:标准输入(standard input,stdin,文件描述指针为0),标准输出(standard output,stdout,文件描述指针为1),标             准错误输出(standard error,stderr,文件描述指针为2)。这三个特殊的文件描述指针使得进程在通常情况下接受标砖输入             设备的输入,由标准输出设备显示输出。
       *标准输入通常是指传给一个命令的键盘输入,例如运行ls -al 其中-al是传给ls命令的标准输入
       *标准输出时一个命令的执行结果,例如运行cat /file1.Doc命令后所看到的文件内容,标准输出通常是被定向到显示器的
       *标准错误通常也被定向到显示器,例如运行cat /file1.Doc:没有此文件或目录。
       !有两种基本的方法可以用来重定向标准输入和标准输出和标准错误:可以利用管道把这些数据流之一输送给另一条命令,也可  以利用I/O重定向把这些数据流之一重定向到另一个文件。管道以及I/O重新定向是Linux系统中特有的噶年。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另一个命令的输入,其代表符号是'|'.所谓I/O重定向是指将命令执行的结果重新导出到其他设备或文件(以>或>>来表示),或是重新导入到其他的设备或文件(以<或<<来表示)
        ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
        常用输入输出重定向命令格式说明
        命令1 > 文件1: 将命令1的输出结果重定向到文件1(错误信息显示在屏幕)
        命令1 &>文件1: 将命令1的输出结果和标准错误输出一起重定向到文件1(不会显示在屏幕)
        命令1 >>文件1: 将命令1的输出结果追加到文件1中
        命令1 2>文件1: 将命令1的标准错误输出结果重定向到文件1中(错误信息输入到文件中,不会显示在屏幕)
        命令1 < 文件1: 将文件1作为命令1的标准输入
        命令1 <<字符串1:允许连续输入数据,直到接收到字符串1    
        ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    4.输出重定向和输入重定向: 前者是将命令或程序的执行结果通过屏幕或文件输出,
                  后者是将输入设备(如键盘或文件)提供给命令来执行。
           
    四、变量
    1、系统变量和局部变量
        env: 列出用户的变量()全局变量
        env |grep '^a':过滤以a开头的变量
        set:列出用户的变量  
        export a=1 :声明变量
        bash  : 
        unset a : 取消变量
        单引号:强引用,解析特殊字符    b='echo $a' echo $b      echo $a
        双引号:弱引用,脱意           b="echo $a" echo $b          echo 1
        反引号:解析引号中命令的结果    b=`echo $a` echo $b    1
    2. $PS1='[u@h W] $ ' 
        u:username  ;
        h:hostname ; 
        W:相对path,最后一个目录 
        $:[$,#]如果是root时,提示符为:# ,普通用户则为:$  
        w: 绝对路径,家目录为~;v :BASH的版本信息 ;
        d :代表日期,格式为weekday month date,例如:"Mon Aug1" 
        :显示时间为24小时格式,如:HH:MM:SS 
     
    五、cut 

     作用:按列提取文件
     参数: 

        -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
      -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
      -c :以字符为单位进行分割。
      -d :自定义分隔符,默认为制表符。
      -f :与-d一起使用,指定显示哪个区域。
      -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除
     语法: cut -b 8,3-5
      3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦 
      cut -b -3
      -3表示从第一个字节到第三个字节
      cut -b 3-
      3-表示从第三个字节到行尾
      cut -b -3,3-
      输出整行,不会出现连续两个重叠的
      cut -c 
      -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,

        cut -d : -f 1,3-5

      提取按照:分割的第一列,第三列到第五列
      sed -n l file
      空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母

    六、sort 
     作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序
     参数: -b 忽略每行前面开始出的空格字符。
      -c 检查文件是否已经按照顺序排序。
      -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
      -f 排序时,将小写字母视为大写字母。
      -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
      -k 选择以哪个区间进行排序。
      -m 将几个排序好的文件进行合并。
      -M 将前面3个字母依照月份的缩写进行排序。
      -n 依照数值的大小排序。
      -o<输出文件> 将排序后的结果存入指定的文件。
      -r 以相反的顺序来排序。
      -t<分隔字符> 指定排序时所用的栏位分隔字符。
      -u 去除重复行

      +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
     语法:sort -n -t 'ch' -k num file
      ch 字符的第num 段按照数值排序

    七、wc: Word Count
     作用:计算文件的单词数,行数,字符数,并将统计结果显示输出 
     参数:-c 统计字节数。
      -l 统计行数。
      -m 统计字符数。这个标志不能与 -c 标志一起使用。
      -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
      -L 打印最长行的长度。
      -help 显示帮助信息
      --version 显示版本信息
     语法:wc fileNM 
      7 8 70 test.txt
      行数 单词数 字节数 文件名
    八、uniq
    作用: 报告或忽略文件中的重复行,一般与sort 连用。
    选项:-c count 在每列前显示该行重复出现的次数
        -d repeated, 仅显示重复出现的行列
        -f skip field 忽略比较指定的栏位
        -s skip chars 忽略比较指定的字符
        -u unique 仅显示出现一次的行列
        -w 字符位置
    实例:
        显示不重复行数据
        uniq file / sort file |uniq  / sort -u file 、uniq -u file 
        统计各行出现的次数
        sort file |uniq -c 
        显示重复行数据
        sort file |uniq -d
    九、tee
    作用:将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin . 简单的说就是把数据重定向给文件和屏幕上。
    注意:存在缓存机制,每1024 字节输出一次, 若从管道接受数据,应该是缓存区满,才将数据转存到指定的文件中。若文件内容不到1024字节, 则接受完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。
    选项:-a 向文件中重定向时使用追加模式
          -i 忽略终端(interrupt)信号
    实例:ls |tee out.txt |cat -n
    十、tr 
     作用:标准输入中通过替换或删除操作进行字符转换
     语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
     参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
      -d 删除字符串1中所有输入字符。
      -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
      input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
     字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
      [a-z] a-z内的字符组成的字符串。
      [A-Z] A-Z内的字符组成的字符串。
      [0-9] 数字串。
      octal 一个三位的八进制数,对应有效的ASCII字符。
      [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
     tr中特定控制字符的不同表达方式
      速记符含义八进制方式
      a Ctrl-G 铃声07
       Ctrl-H 退格符10
      f Ctrl-L 走行换页14
       Ctrl-J 新行12
       Ctrl-M 回车15
       Ctrl-I tab键11
      v Ctrl-X 30
     语法:cat file | tr "abc" "xyz" > new_file
      将文件中的abc 替换为 xyz
      cat file | tr -d "Snail" > new_file
      凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
      cat file | tr -d " " > new_file
      删除文件file中出现的换行' '、制表' '字符
      cat file | tr -d " " > new_file
      删除文件file中出现的换行' '、制表' '字符
      cat file | tr -s [a-zA-Z] > new_file
      删除“连续着的”重复字母,只保留第一个
      cat file | tr -s " " > new_file
      删除空行
  • 相关阅读:
    [原创]测试计划与测试方案区别
    [原创]什么是构建验证测试(BVT)
    [原创]什么是测试驱动开发?
    [原创]用TestDirector的测试管理的流程
    [原创]测试用例设计之"正面测试与和负面测试"
    [原创]测试用例设计之“因果图”法
    [原创]测试用例设计之“状态迁移图”法
    [转贴]测试工具自动化的最佳实践
    [原创]软件测试管理之“测试角色和职能”概述
    软件测试试题
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/4404734.html
Copyright © 2020-2023  润新知