zoukankan      html  css  js  c++  java
  • shell

    cat /dev/null:清空某个文件
    echo $?:查看返回值

    查看当前系统所有的shell:cat /etc/shells

    chsh -l

    查看当前登录的shell:echo $SHELL
    查看历史命令:history
    使用第70个历史命令:!70
    执行以某个字母开头的命令:![字母]
    执行最后一次执行过的历史命令:!!
    显示上一个命令最后一部分:echo !$
    查看和设置别名:alias
    取消别名:unalias
    取消alias作用:[命令]
    存放alias的位置:家目录的bashrc里
    查看系统所以环境变量:env

    预定义变量:

    读入标准输入:read
    运算符:expr = $(())
    取出命令的结果:`` = $()
    显示当前程序进程名:$0
    显示当前程序进程号:$$
    显示位置参数的个数:$#
    显示位置参数的内容:$*
    转义字符:
    完全引用:‘’
    部分引用:“”

    整数变量:

    +、-、*、/、()
    expr或$(())操作符:
    +、-、*、/、%取余(取模)

    通配符置换:
    匹配 0 或多个字符:*
    匹配任意一个字符:?
    匹配 list中的任意单一字符:[list]
    匹配 除list中的任意单一字符:[!list]
    匹配 c1-c2中的任意单一字符:[c1-c2]
    匹配 sring1或 string2(或更多)其一字符串:{string1,string2,...}

    变量替换:

    ${a:-字符}
    若 a为空或未设置,则用“字符”代替a进行替换,a的值不变
    当a没有赋值时
    echo ${a:-tom}结果为:tom
    echo $a结果为空
    ${a:+字符}
    若 a设置了,则用 “字符”代替 a进行替换,a的值不变
    当a=bob时
    echo ${a:+tom}结果为:tom
    echo $a结果为:bob
    ${a:=字符}
    若 a为空或未设置,则 a设为值 “字符”
    当a=bob时
    echo ${a:=tom}结果为:bob
    echo $a结果为:bob
    当a没有赋值时
    echo ${a:=tom}结果为:tom
    echo $a结果为空
    ${a:?提示}
    若 a为空或未设置,则 “提示”作为标准错误打印出来,这可用来检查变量是否正确设置
    当a=bob时
    echo ${a:?a没有赋值}结果为:bob
    echo $a结果为:bob
    当a没有赋值时
    echo ${a:?a没有赋值}结果为:bash: a: a没有赋值
    echo $a结果为空

    匹配截取:

    ${a:要截取的个数}
    截取从头开始“要截取的个数”,留下剩下的
    当a=abcdefg时
    echo ${a:3}的结果为:defg
    ${a:要截取的个数:要留下几个}
    截取从头开始“要截取的个数”个,留下“要留下几个”个,如果要留下的个数大于剩下的则全部留下
    当a=abcdefg时
    echo ${a:2:3}的结果为:cde

    当a=001234146
    最短头匹配截取:${a#关键词}
    echo ${a#*1}结果为:234146
    echo ${a#0*2}结果为:34146
    最长头匹配截取:${a##关键词}
    echo ${a##*1}结果为:46
    最短尾匹配截取:${a%关键词}
    echo ${a%4*}结果为:0012341
    最长尾匹配截取:${a%%关键词}
    echo ${a%%4*}结果为:00123
    替换第一次被匹配到的:echo ${a/旧字符串/新字符串}
    echo ${a/1/q}结果为:00q234146
    替换所有被匹配到的:echo ${a//旧字符串/新字符串}
    echo ${a//1/q}结果为:00q234q46
    取变量值的长度:echo ${#变量}
    echo ${#a}结果为:9个

    定义数组变量:

    a[2]="tom"
    a[4]="bob"
    echo ${a[2]}
    显示定义所有的数组内容echo ${a[*]}或echo ${a[@]}
    显示数组的长度echo ${#a[*]}
    declare -a 定义数组变量
    declare -r 定义只读变量
    declare -i 定义整数变量
    declare -x = expor定义环境变量

    函数:

    取消回显:stty -echo
    显示回显:stty echo

    局部生效参数local


    test测试命令:
    条件为真返回 0,条件为假返回 1
    三种类型的表达式:文件测试、字符串比较、数字比较
    表达式1 -a 表达式2:同时满足两个表达式,与运算
    表达式1 -o 表达式2:只满足其中一个表达式即可,或运算
    字符串:-n字符串长度不为零
    -z字符串长度为零
    =两个字符串相等
    !=两个字符串不相等
    数字: -eq 等于
    -ne 不等于
    -ge 大于等于
    -gt 大于
    -le 小于等于
    -lt 小于
    -ef 有相同的I节点或设备
    -nt 前者的修改时间早于后者
    -ot 前者的修改时间晚于后者
    文件:-f 存在且是正规文件
    -d 存在且是目录
    -h 存在且是符号链接
    -b 块设备
    -c 字符设备
    -e 文件存在
    -r 是否可读
    -w 是否可写
    -x 是否可执行

    判断语句:

    if开头,fi结尾,then执行命令,elif当前面的结果为假则执行下面的then,else以上都不匹配则执行下面的命令(if后用test或[]来判断和定义变量)

    标准输入:0
    标准正确输出:1
    标准错误输出:2

    case开头,esac结尾,如果所定义的变量等于下面已定义好的值,则执行该值的命令

    调用已有函数: . 函数文件的绝对路径

    循环:

    for:
    1、shell模式:for [ 变量 ] do 循环体 done
    2、c语言模式:for [ 变量 ] { 循环体 }
    seq算法:
    seq 1 2 10结果为1、3、5、7、9
    seq 2 2 10结果为2、4、6、8、10
    打印不换行printf
    打印换行echo

    while:
    条件成立时执行do和done里的循环体

    until:
    条件不成立时执行do和done里的循环体

    break 终止
    continue 跳出

    select:
    交互式shell脚本


    Shell程序调试
    sh –x [脚本名]
    这将执行该脚本并显示所有变量的值
    sh –n [脚本名]
    不执行脚本只是检查语法模式,将返回所有错误语法
    sh –v [脚本名]
    执行脚本前把脚本内容显示在屏幕上


    basename和dirname命令
    basename /etc/passwd结果为:passwd
    dirname /etc/passwd结果为:/etc

  • 相关阅读:
    windows7触屏编程
    改变窗口大小,恢复以前的大小
    insert()
    index()
    help()
    id()
    extend()
    count()
    cmp()
    append()
  • 原文地址:https://www.cnblogs.com/super-sos/p/8906512.html
Copyright © 2011-2022 走看看