zoukankan      html  css  js  c++  java
  • shell脚本813

    一、文本处理工具

    wc命令

    wc(Word count)用于统计文本文件中的字符个数

     

    15是行数  78是字符个数   805是文件大小(字节)【1字节等于8比特】

    2、参数:-l(统计行数)、-w(统计单词数)、-c(统计字节数)

    cut(切片)命令

    1、指定分隔符,切割文件

    2、常见参数:-d(指定分割符)、-f(指定提取哪一列)、--output-delimiter=‘’(将输出的分隔符,替换为自己想用的分隔符)

    示例:cut -d” ” -f1 /etc/fstab(取第一列)

        cut -d” ” -f1,3 /etc/fstab(取第1、3列)

        cut -d” ” -f1-3 /etc/fstab(取第1到3列)

        cut -d[:] -f1d /etc/fstab(指定分隔符为空格和冒号)([ ]代表括号里的 任意字符都匹配)

    3、cut无法指定多个分隔符,awk可以指定多个分隔符

     【cut的局限性:1-d指定分隔符,不能同时指定多个  2、不能做高级的格式化输出;所以要掌握awk命令】

    sort命令

    1、sort命令根据ASCII码来进行排序,并不是数值大小

    2、常用参数:-r(逆序)、-f(忽略字符的大小写)

             -t(指定字段分隔符)、-n(以数值大小排序)

             -u(排序去除重复,重复的不显示)

           -k(指定哪一列进行排序)

    uniq命令

    1、uniq命令用于去重,但是只有连续且相同的命令才被视为重复【所以要先排序在去重】

    2、常用参数:-c(统计某些字符重复的字数)【例:sort filename | uniq -c

                    -d(仅仅显示未重复过的行)

    练习:取出/etc/passwd文件的第610行,并将这些信息按照第3个字段的数值大小进行排序,最后仅显示各自的第一个字段

               Head /etc/passwd | tail -5 | sort -t: -k3 -n |cut -d” “ -f1

     二、编程原理

    1、机械码(16进制)的局限性:识别机器,各种品牌不兼容

    2、机器只能识别二进制指令

    3、程序=指令+数据

    4、驱动硬件设备默认不能使用;CPU控制硬件资源,CPU由控制器与运算器组成

    5、驱动程序:不同的厂家的硬件设备之间需要进行指令沟通时,我们需要驱动程序来进行“翻译”

    6、更接近于硬件开发的工程师要学习“汇编语言”,但是汇编语言被厂家所限制

    7、C语言与C++的底层为汇编语言

    8、操作系统用来分配硬件资源(操作系统用C语言来写)

    9、现在的编程基于高级语言及超高级语言,更好的让程序员能够实现编程功能。高级语言及超高级语言需要翻译成计算机可读的语言(二进制语言),翻译分为两种:解释型(逐行翻译,逐行执行,      例:bash -x filename(方便排错))与编译型(一次编译,全部执行)

    10、Shell,Python为解释型语言,编译安装大多使用C语言、C++C#

    11、编程语言的分类:根据服务的重心不同,编程分为面向对象编程(侧重于数据的语言)和面向过程编程(侧重于指令的语言)。

    12、编程语言的执行方式【一行一行】:顺序执行(没有逻辑关系)、循环执行(for(遍历,常用)、While(循环条件,True的时候开始循环)、unti(与while相反,False的时候开始循环))、选择    执行(分支if语句、case(重点使用))

    13、Shell编程介绍:shell语句是面向过程的,侧重于指令集;

              shell语句的基本结构组成:命令、数据-变量、逻辑关系

              shell没有内嵌函数,没有函数库调用

                没调用的接口,这一点限制了shell脚本的功能,不像Python,可以调用各种模块接口

                优点:shell的功能更好的兼容系统,可以直接调用系统命令,执行效率更高

    14、shell脚本的第一句话必须写(#!/bin/bash---->定义脚本解释器

    15、/etc/shells----------查看当前系统支持的shell程序 

          echo $SHELL-----查看当前会话的shell程序  

          /etc/passwd----------制定了用户默认支持的shell程序(/bin/nologin 

    16、shell的执行:1bash命令来执行脚本

                  参数:-n  查看shell脚本的逻辑错误

                                      -x  逐行显示执行的脚本程序(方便排错)

                                2、授权 chmod +x filename,然后使用全路径执行脚本

    17、变量:环境变量

            局部变量(declare 命令--定义变量类型)

            本地变量(local在函数中使用)

    18、变量类型:数值型(浮点型(float),整型(int),布尔值(bollean01    falsetrue))

                    字符串:(普通字符及字符串、数组)

    19、编程语言的分类:根据变量的不同,分为强类型语言(数值必须被定义,才能进行处理或运算)和弱类型语言(编程语言可以自动识别变量类型)

    20、多态:一个数据有多个属性,而最后使用的属性取决于和它进行运算的数据

    21、传参:$?(上一条命令的执行状态,0代表正确,1-255表示错误)

            $1、$2${10}--------命令后面传入脚本的数据,以空格为分隔符

          $#(统计传参数量,${$#}统计传参量)

          $*(表示所有传参,所有的传参以字符串形式输出)

            $@(表示所有传参,所有的传参以列表形式输出)

                     

    22、定义变量格式:NAME=VALUE(中间不要有空格,一个等号是赋值,两个等号是判断)

             通过命令declare定义变量参数(例:declare -i a=10 int() str()

              declare -a(代表数组)、declare -i (代表整数)

    23、变量命名:下划线的方式指定变量名称

              驼峰命名方式

    24、文件测试、条件判断:在脚本语言中,我们需要进行语句分支,就是要做判断,判断就是使用test命令来实现的。

    使用格式:test [option] file

                       [  条件语句 ]

    【不用test做判断时不加[  ]

    常见的test选项:

    比较选项:-eq(等于)、-en(不等于)、-gt(大于)、-ge(大于等于)、-lt(小于)、-le(小于等于)【用于数值的判断,字符用=!=

    判断选项:-f(判断是否为普通文件)、-d(判断是否为目录件)、-L(判断是否为链接文件)、-r-w-x(判断是否具有读 写 执行的权限))

    关联选项:-o(或)、-a(与)、!(非)

    字符串测试:=(等于为真)、!=(不等于为假)、-z(判断字符串是否存在,存在为真,不存在为假)、-n(与-z相反)

    25、逻辑运算:与 && :两边的命令都为真时结果才为真

              或 || :两边的命令,一边为真就是真,同时为假才是假

            非 !

            [ $? -eq 0 ]  && exit 0 || exit 1

    前后对接的都是单独的存在的命令,前后的两个命令没有任何关系只是通过逻辑运算符联系在一起

    26、算数运算:let(1+1)    例:let a=1+1  echo $a 

                   expr(1*1)   例:exor 1* 10

              $[]   [$1+10]   例:a=$[2+3]   echo $a   

           $(())   (($1/$2))      例:a=$((2/4))   echo $a

     27、编程练习

    输出100以内的书的和

    #!/bin/bash
    
    declare -i i=0
    declare -i sum=0
    while [ $i -le 100 ] ;do
            sum+=$i
            let i=i+1
    done

    执行结果:

     

    传参

    #!/bin/bash
    echo "$1 $2 ...${10}"
    echo $?
    echo $#
    echo $*
    echo $@
    echo ${$#} 

    执行结果:

     

    判断文件是否存在

    #!/bin/bash
    #判断文件是否存在
    
    if [ -f $1 -a -w $1 ];then
            echo "$1 文件不存在"
    else
            echo "$1 文件已存在"
    fi

     

    判断用户类型

    #!/bin/bash
    #判断用户类型
    
    declare -i uid=`uid -u $1`
    
    if [ $uid -eq 0 ];then
            echo "这个是管理员"
    else
            echo "这是个普通用户"
    fi 

    执行结果:

     

  • 相关阅读:
    xls与csv文件的区别
    青音,经典爱情语录
    win7用户账户自动登录方法汇总
    How to using Procedure found Lead Blocker
    FTS(3) BSD 库函数手册 遍历文件夹(二)
    FTS(3) BSD 库函数手册 遍历文件夹(一)
    DisplayMetrics类 获取手机显示屏的基本信息 包括尺寸、密度、字体缩放等信息
    About App Distribution 关于应用发布
    FTS(3) 遍历文件夹实例
    OpenCV 2.1.0 with Visual Studio 2008
  • 原文地址:https://www.cnblogs.com/cqyyyyy/p/11347844.html
Copyright © 2011-2022 走看看