zoukankan      html  css  js  c++  java
  • Shell编程

    一、echo输出命令

      1. echo [选项] [输出内容]

      2. -e:支持反斜杠控制的字符转换

    二、将Windows格式转换成linux格式

      1. dos2unix 文件名

    三、别名

      1. alias 别名=值

      2. 修改/root/.bashrc

      3. 删除别名:unalias 别名

    四、输出重定向

      A、标准输出重定向:

        1. 命令 > 文件:以覆盖方式把命令的正确输出输出到指定文件或设备

        2. 命令 >> 文件:以追加方式把命令.....

      B、标准错误输出重定向:

        1. 错误命令 2> 文件:以覆盖的方式,把命令的错误输出输出到指定的文件或设备

        2. 错误命令 2>> 文件:以追加方式,把命令....

      C、正确和输出同时保存:

        1. 命令 > 文件 2>&1

        2. 命令 >> 文件 2>&1

        3. 命令 &> 文件

        4. 命令 &>> 文件

        5. 命令 >>文件1 2>>文件2:把正确的输出追加到文件1,把错误的输出追加到文件2

      D、/dev/null:垃圾箱

    五、输入重定向

      A、wc 【选项名】 【文件名】

        1. -c:统计字节数

        2. -w:统计单词数

        3. -l:统计行数

    六、多命令顺序执行

      A、;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系

      B、&&  命令1&&命令2  逻辑与,当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行

      C、||  命令1||命令2  逻辑或,当命令1执行不正确命令2才会执行,当命令1正确执行,则命令2不会执行

      D、dd if=输入文件 of=输出文件 bs=字节数 cout=个数

        1. if=输入文件  指定源文件或源设备

        2. of=输出文件  指定目标文件或目标设备

        3. bs=字节数  指定一次输入/输出多少字节,即把这些字节看做一个数据块

        4. count=个数  指定输入/输出多少个数据块

        5. date;dd if=/dev/zero of=/root/testfile bs=1k count=10000;date  查看执行需要多长时间

    七、管道符:命令1 | 命令2  #命令1的正确输出作为命令2的操作对象

    八、grep [选项] "搜索内容" 文件名

      1. -i:忽略大小写

      2. -n:输出行号

      3. -v:反向查找

      4. --color=auto 搜索出的关键字用颜色显示

    九、通配符

      1. ? 匹配一个任意字符

      2. *  匹配0个或多个任意字符

      3. []  匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c

      4. [-]  匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母

      5. [^]  逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符

    十、Bash中其它特殊符号

      1. ''  单引号。在单引号中所有的特殊符号都没有特殊含义

      2. ""  双引号。在双引号中特殊符号都没有特殊含义,但是"$"、“`”和""是例外

      3. ``  反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,推荐$(),因为``容易看错

      4. $()  和反引号作用一样

      5. #  在shell脚本中,#开头的行代表注释

      6. $   用于调用变量的值,如果需要调用变量name的值时,需要用$name的方式得到变量的值

      7.   转义符,跟在之后的特殊符号将失去特殊含义

    十一、Bash的变量

      A、用户自定义变量

      B、环境变量

        1. 设置:export 变量名=变量值

        2. 查询:env

        3. 删除变量名:unset:变量名

      C、位置参数变量

        1. $n  n为数字,代表第几个参数

        2. $*  所有参数,当成一个整体

        3. $@  所有参数,把每个参数区别对待

        4. $#  代表所有参数的个数

      D、预定义变量

        1. $?  最后一次执行的命令的返回状态。如果是0,代表上条命令正确执行。

        2. $$  当前进程的进程号(PID)

        3. $!  后台运行的最后一个进程的进程号(PID)

    十二、接收键盘输入

      A、read [选项] [变量名]

        1. -p  “提示信息”:在等待read输入时,输出提示信息

        2. -t  read会一直等待用户输入,使用此项可以制定个等待时间

        3. -n  字符数:read命令只会接受指定的字符数,就会执行

        4. -s  隐藏输入的数据,适用于机密信息的输入

    十三、Bash的运算符

      A、数值运算与运算符

        1. declare 声明变量类型: declare [+/-] [选项] 变量名

          a. -  给变量设定类型属性

          b. +  取消变量的类型属性

          c. -i  将变量声明为整数类型

          d. -x  将变量声明为环境变量

          e. -p  显示指定变量的被声明类型

        2. expr或let数值运算工具

          a. aa=11 bb=22 dd=$(expr $aa + $bb)

          b. 注意:+号左右两边必须有空格

        3. “$((运算式))”或“$[运算式]”

      B、变量测试与内容替换

        1. x=${y-新值}  如果y没有设置,x为新值。y为空,x为空。y有值,x为y。

        2. x=${y:-新值}  如果y没有设置,x为新值。y为空,x为新值。y有值,x为y。

      C、环境变量配置文件

        1. 使配置文件立即生效:  source 配置文件  或者  . 配置文件

        2. 配置文件:

          a. /etc/profile

          b. /etc/profile.d/*.sh

          c. ~/.bash_profile

          d. ~/.bashrc

          3. /etc/bashrc

    十四、字符截取命令

      A、cut提取命令

        1. cut [选项] 文件名

          a. -f序号:提取第几列

          b. -d分隔符:按照指定分隔符分割列

      B、printf命令

        1. printf '输出类型输出格式' 输出内容

          a. %ns:输出字符串。n是数字指代输出几个字符

          b. %ni:输出整数。n指代输出几个数字

          c. %m.nf:  输出浮点数。m和n是数字,指代输出的整数位数和小数位数

      C、awk命令

      D、sed [选项] '[动作]' 文件名

        1. 选项

          a.-n   一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed处理的行输出到屏幕

          b. -e  允许对输入数据用多条sed命令编辑

          c. -i   用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

        2. 动作

          a. a :  追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“”代表数据完结

          b. c :  行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用“”代表数据末完结

          c. i :  插入,在当前行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“”代表数据完结。

          d. d:  删除,删除指定的行

          e. p:  打印,输出指定的行

          f. s:  字串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g ”

    十五、字符处理命令

      A、sort [选项] 文件名

        1. -f:忽略大小写

        2. -n:以数值型进行排序,默认使用字符串型排序

        3. -r:反向排序

        4. -t:指定分隔符,默认分割符是制表符

        5. -k n[,m]:按照指定字段范围排序。从第n段开始,m字段结束(默认到行尾)

      B、统计命令:wc [选项] 文件名

        1. -l:只统计行数

        2. -w:只统计单词数

        3. -m:只统计字符数

    十六、判断文件命令

      A、test [选项] 文件   或者  [[选项] 文件]

        1. -d  判断该文件是否存在,并且是否为目录文件(是目录为真)

        2. -e  判断文件是否存在(存在为真)

        3. -f  判断文件是否存在,并且是否是普通文件(是普通文件为真)

        4. -L  判断改文件是否存在,并且是否是符号链接文件(是符号链接文件为真)

        5. -b  判断文件是否存在,并且是否是块设备文件(是块设备文件为真)

        6. -c  判断文件是否存在,并且是否是字符设备文件(是字符设备文件为真)

        7. -p  判断文件是否存在,并且是否是管道文件

        8. -s  判断文件是否存在,并且是否为非空(非空为真)

        9. -S  判断文件是否储存在,并且是否为套接字文件

      B、然后用echo $? 判断上条命令是否执行成功  或者  [ -e 文件 ] && echo "yes" || echo "no"

      C、判断文件权限

        1.  -r  判断文件是否存在,并且是否拥有读权限

        2. -w  判断文件是否存在,并且是否该文件拥有写权限

        3. -x  判断文件是否存在,并且是否拥有执行权限

        4. -u  判断文件是否存在,并且是否拥有SUID权限

        5. -g  判断文件是否存在,并且是否拥有SGID权限

        6. -k  判断文件是否存在,并且是否拥有SBit权限

      D、两个文件比较

        1. 文件1 -nt 文件2  判断文件1的修改时间是否比文件2的新(如果新为真)

        2. 文件1 -ot 文件2  判断文件1的修改时间是否比文件2的旧(如果旧为真)

        3. 文件1 -ef 文件2  判断文件1和文件2的inode号是否一致(可以理解为是否是同一个文件,可以判断是否是硬链接)

      E、两个数之间比较

        1. 整数1 -eq 整数2  判断两个数是否相等

        2. 整数1 -nq 整数2  判断两个数是否不相等

        3. 整数1 -gt 整数2  判断整数1是否大于整数2

        4. 整数1 -lt 整数2  判断整数1是否小于整数2

        5. 整数1 -ge 整数2  判断整数1是否大于等于整数2

        6. 整数1 -le 整数2  判断整数1是否小于等于整数2

      F、字符串的判断

        1. -z 字符串  判断字符串是否为空

        2. -n 字符串  判断字符串是否非空

        3. 字符串1==字符串2  判断字符串是否和字符串2相等

        4. 字符串1!=字符串2  判断字符串1和字符串2不相等

    十七、条件控制语句

      A、if语句

        1. 单分支if条件语句

          a. if [ 条件判断式 ] ; then

            程序

             fi

          b. if [ 条件判断式 ]

            then

              程序

            else

              程序

            fi

      B、case语句

        1. case $变量名 in

          "值1")

            如果变量的值等于1,则执行程序1

            ;;

          "值2")

            如果变量的值等于2,则执行程序2

            ;;

          *)

            如果变量的值都不是以上的值,则执行此程序

            ;;

      C、for循环

        1. for 变量 in 值1 值2 值3...

          do

            程序

          done

        2. for ((初始值;循环控制条件;变量变化))

          do

            程序

          done

      D、while循环

        1. while [ 条件判断式 ]

          do

            程序

          done

      E、until循环

        1. until和while相反

  • 相关阅读:
    apache http server 和tomcat的区别 以及nginx
    2020-2-12 这样提升自己的口才
    两种常用的队列
    栈的实现与应用
    线性表
    Nginx实现虚拟主机
    将apache添加到服务
    apache安装
    最小生成树
    图的深度优先搜索
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12267146.html
Copyright © 2011-2022 走看看