博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell笔记
阅读量:4495 次
发布时间:2019-06-08

本文共 7841 字,大约阅读时间需要 26 分钟。

//名词解释  bash(Bourne-Again Shell)是shell的一种,编写该外壳程序的人名叫Bourne shell,“bourne”与“born”的发音相近,意为shell的重生?bash是一个为GNU计划编写的Unix shell,是许多Linux发行版的默认Shell...> `#!` 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序,shell扩展名为 sh(sh代表shell),扩展名并不影响脚本执行...alias把一个常用的并且很长的指令别名一个简洁易记的指令,alias会看到目前系统预设的alias     $ alias	alias ll='ls -l'	alias ls='ls -F --color=auto --show-control-chars'	alias node='winpty node.exe'echo 向窗口输出文本      $ echo 'leyi'    leyi通配符 *匹配零个或多个字符,?匹配一个字符输入输出从定向,用于将命令的结果输入到文件中而不是屏幕上> 输出重定向 >  > 追加重定向 >>定义和使用变量,使用变量时变量名外面的花括号可选       $ echo ${leyi}    qiezijiucai只读变量 readonly将变量定义为只读变量,不可更改  删除变量 unset可以删除变量,不能删除只读变量    Administrator@SZ-20170103URLF MINGW64 ~    $ leyi="zzn"        Administrator@SZ-20170103URLF MINGW64 ~    $ readonly leyi        Administrator@SZ-20170103URLF MINGW64 ~    $ leyi="qiezijiucai"    bash: leyi: readonly variable    $ unset leyi    bash: unset: leyi: cannot unset: readonly variable变量类型> 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量   > 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。> shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行字符串的单双引号 > 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的  > 单引号字串中不能出现单引号  > 双引号里可以有变量  > 双引号里可以出现转义字符      Administrator@SZ-20170103URLF MINGW64 ~    $ echo o this is "$leyi"    o this is zzn        Administrator@SZ-20170103URLF MINGW64 ~    $ echo o this is '$leyi'    o this is $leyi获取字符串长度     $ echo ${#str}    7提取子字符串 从字符串第0个字符开始截取2个字符  ${str:开始索引:长度}        $ echo ${str:0:2}    abexpr index求索引 (expr 是一款表达式计算工具)   >这里的索引不是从0开始,而是从1开始算起,返回0,表示查找失败 >查找的是第一个符合条件的字符所在的位置    $ echo `expr index "${str}" b`    2数组操作> 用括号来表示数组,数组元素用"空格"符号分割开  (1 2 3 4 5)    $ arr=(1 2 3 4 5 )  //定义数组        Administrator@SZ-20170103URLF MINGW64 ~    $ arr[5]=6   //定义数组方式2        Administrator@SZ-20170103URLF MINGW64 ~    $ echo ${arr[5]} //获取数组指定索引的值    6        Administrator@SZ-20170103URLF MINGW64 ~    $ echo ${arr[@]} //读取数组    1 2 3 4 5 6        Administrator@SZ-20170103URLF MINGW64 ~    $ echo ${#arr[@]} //获取数组长度    6        Administrator@SZ-20170103URLF MINGW64 ~    $ echo ${#arr[*]} //获取数组长度方式2    6        Administrator@SZ-20170103URLF MINGW64 ~    $ echo ${#arr[1]} //获取数组指定索引值的长度    1shell 注释 # 只有单行注释字符串的截取 (注*的位置) >\# 号截取,删除左边字符,保留右边字符,从左边开始    Administrator@SZ-20170103URLF MINGW64 ~    $ url="http://www.cnblogs.com/leyi/"    $ echo ${url#h}    ttp://www.cnblogs.com/leyi/    $ echo ${url#*www} //删除左边字符0到多个直到www(第一个www)     .cnblogs.com/leyi/     $ echo ${url##*l} //删除左边字符0到多个直到l(最后一个l)    eyi/    >%号截取,删除右边字符,保留左边字符,从右边开始     $ echo ${url%/*}  //删除一个/和右边的字符    http://www.cnblogs.com/leyi    $ echo ${url%%/*} //删除最后一个/和右边的字符    http:传递参数      echo '1212'    echo $0 //$0 为执行的文件名    echo $1 //$1 为执行脚本的第一个参数    echo $? //命令的退出状态。0表示没有错误算数运算符  + - * / % = == != > 表达式和运算符之间要有空格 1 + 1而不是1+1  > 完整的表达式要被 ` ` 包含  > 乘号前边要加反斜杠 \  > 条件表达式要放在方括号中  [ 1 -eq 1 ]> if...then...fi 是条件语句      Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ value`expr 10 + 10`        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ echo $value    20    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ echo `expr 10 \* 20`    200关系运算符 -eq -gt -lt -le -ge      Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ if [ 10 -lt 20 ]; then  echo 1; else  echo 2; fi    1布尔运算符  ! 非 -o 或 -a 并    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ if [ 1 -gt 2 -o 1 -eq 1 ]; then echo '1'; else echo '2'; fi    1        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/新建文件夹    $ if [ 1 -gt 2 -a 1 -eq 1 ]; then echo '1'; else echo '2'; fi    2逻辑运算符  || &&  两个方括号    Administrator@SZ-20170103URLF MINGW64 ~    $ if [[ $a -eq $b && $a -lt $b ]]; then echo '1'; else echo '2'; fi    2字符串运算符  = != -z -n string本身       $ a="hello"; b="halo"; if [ $a = $b ]; then echo 'true';else echo 'false'; fi    false    $ a="hello"; b="halo"; if [ $a != $b ]; then echo 'true';else echo 'false'; fi    true    //-z 字符串长度为0返回true    $ if [ -z 'a' ]; then echo '字符串长度为0'; else echo '字符串长度不为0'; fi;    字符串长度不为0    /字符串长度不为0返回true    $ if [ -n 'a' ]; then echo '字符串长度不为0'; else echo '字符串长度为0'; fi;    字符串长度不为0         //字符串长度不为空返回true    $ if [ 'a' ]; then echo '字符串长度不为空'; else echo '字符串长度不为空'; fi;    字符串长度不为空文件测试运算符  > -d 是否是目录   > -f 是否是普通文件,非目录和设备文件,设备文件(鼠标,麦克风,显示器)  > -r 是否可读  > -w 是否可写  > -x 是否可执行 > -s 文件是否为空 > -e 文件是否存在     $ if [ -d wc ]; then echo '1';else echo "2"; fi;    1    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test -e haha.txt; then echo 1;else echo 2;fi;    1echo命令  跟php一样   > 反斜杠是转义符      $ echo \"qwqw\"    "qwqw"    printf 命令    %s %c %d %f     // %s 宽度为10个字符 %-10s 宽10个字符 -左对齐,没有-右对齐    $ printf "%-10s %-10s %-10s" 第一列 第二列 第三列    第一列  第二列  第三列    // %.3f 保留三位小数      $ printf "%-10s %-10s %-10.3s\n" hello world 7.7777    hello  world  7.7test 命令  > 数值测试  -eq -ne -gt -ge -lt -le     Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ a=1        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ b=2        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test $a -eq $b;then echo 1;else echo 2;fi;    2    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test $[a] -eq $[b]; then echo 1; else echo 2;fi;    2>  [] 可以执行基本的算数运算         Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ echo `expr $a + $b`     30    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ a=10;b=20;echo $[a+b]    30> 字符串测试 = != -z -n     Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test 'a' != 'b';then echo 1;else echo 2; fi;    1    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test -z '';then echo 1;else echo 2; fi;    1        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test -z 'a';then echo 1;else echo 2; fi;    2> 文件测试 -d -r -w -x -s -d -f     Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test -e haha.txt;then echo 1; else echo 2;fi;    1流程控制语句  > if then else fi 如果else分支没有语句执行,就不写else     Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test -e haha1.txt;then echo 1; else {};fi;    bash: {}: command not found> if else elif else fi;    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ if test 1 -eq 2;then echo 1; elif test 1 -eq 1;then echo 2; else echo 3;fi;    2>for 循环  for 变量 in 数组    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ for aa in $arr; do echo $aa;done;    1    2    3    4    5>while 语句  while do done      let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来    //(()) 省去$符号的算术运算    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ while((num<=10)); do echo $num; let "num++"; done;    0    1    2    3    4    5    6    7    8    9    10  >case 语句 case in 匹配值1) xxx;; *) xxx;; esac;    // 1) 匹配条件 ;; 两个分号结束 *)无一匹配走这里      // continue 仅跳出当前循环  break 跳出所有循环     Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ read num    1111        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ echo $num    1111    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ echo "请输入数字"; read num;    请输入数字    1    $ case $num in 1) echo $num;; *) echo "halo";;    > esac; # case 的反转     1 函数      //定义函数 function fnname(){}     //或者 fnname(){}      Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ function fn1(){    > echo 1111    > }        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ fn1    1111    Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ fn1(){    > echo 11111    > }        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ fn1    11111    //传递参数      Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ fn2(){    > echo $#     > echo $1    > echo $@    > echo $$    > }        Administrator@SZ-20170103URLF MINGW64 ~/Desktop/sh    $ fn2 a b c d    4 //参数的个数    a //第一个参数     a b c d //返回每个参数    4112 //进程id

  

转载于:https://www.cnblogs.com/leyi/p/8551895.html

你可能感兴趣的文章
像素与DPI之间的关系
查看>>
druid监控配置
查看>>
css颜色代码大全
查看>>
物理系统(二)
查看>>
css3中-moz、-ms、-webkit与盒子模型
查看>>
DataTable 整行为空时,去除空行,常用于Excel导入,转换为DataTable时出现
查看>>
网络相关面试题1
查看>>
一种让谷歌搜索引擎拒绝搜索的字符串
查看>>
实现毛玻璃效果
查看>>
[BZOJ4082][Wf2014]Surveillance[倍增]
查看>>
kill -9杀掉nginx主进程、reload失败解决办法
查看>>
objdump 用法
查看>>
前端js模糊搜索(模糊查询)
查看>>
Chrome的hack写法以及CSS的支持程度图示
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
SVN、GIT比较
查看>>
asp后台读id设置样式
查看>>
POJ 3744 Scout YYF I 概率DP+矩阵快速幂 好题
查看>>
Training Logisches Denken
查看>>
谁分配谁释放
查看>>