[置顶] shell学习

* 命令展开
  shell在执行一个命令前先要对命令进行展开.
  echo * --->echo 1.txt 2.txt 3.txt --->执行展开的echo命令
** 文件(路径)展开
  ls      --->ls 当前目录               --->执行展开的ls命令
  echo D* --->echo Desktop Document  --->执行展开的echo命令
  echo /usr/*/share/  --->echo /usr/lib/share/ --->执行展开的echo命令
  这里举的例子都只是一个例子,你的机器上的结果很有可能不一样.
** 波浪号展开
   echo ~ ---> echo 当前用户home目录 ---> 执行展开的echo命令
   echo ~john ---> echo john用户的home目录 ---> 执行展开的echo命令
** 算术展开
   格式为:$((expression))
   里面的expression可以为+,-,*,/,%,**运算,expression里的空格shell会忽略
   如 echo $((2+3))
** 大括号展开
   大括号展开由一个前缀,大括号表达式和一个后缀组成的.其中大括号表达式
   可以包括逗号隔开的字符串,数字或者字符范围,单个字符或者嵌套的大括号
   表达式.
   例子:
   1. A-{1,4}-B   表示 A1B,A4B
   2. A-{A-C}-B   表示 AAB,ABB,ACB
   3. A-{A{1-2},B{3,4}}-B 表示AA1B,AA2B,AB3B,AB4B
** 变量展开
   在shell中定义的变量展开为变量代表的值.
   echo $USER ---> echo  变量USER的值 --->执行展开的echo命令

* 命令替换
  命令替换允许我们将一个命令的输出展开为命令的一部分
  命令替换的格式 $(command)或者为了兼容以前的格式`command`
  echo $(ls) ---> echo ls命令的输出 ---> 执行展开的echo命令
 
* 引用
** 双引号引用(弱引用)
   除了$,\,`这三个符号的作用保持外,所有其他的shell元字符失去元字符的作
   用,被当成普通的字符,其他的字符都被当成字符串.
** 单引号引用
   所有单引号里的字符都作为字符,不会进行任何的处理
** \引用
   \只对其后的单个字符进行转义,使其失去shell元字符的效果

你可能感兴趣的:(linux,shell)