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元字符的效果
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元字符的效果