Shell展开

输入的字符在shell起作用前会展开成为别的字符

  • 路径展开
  • 波浪号展开
  • 算术表达式展开
  • 花括号展开
  • 参数展开
  • 命令替换
  • 单词分割


##路径展开

1
2
3
4
5
ls
echo * #不显示隐藏文件
echo D*
echo *s
echo /usr/*/bin


##波浪号展开
~会展开成为家目录

1
ls ~


##算术表达式展开
通过这种方式进行算术运算

1
2
echo $((2+2))
echo $(($a+$b))


##花括号展开
可以从一个花括号的模式中创建多个字符串

1
2
3
4
5
6
7
echo front-{a,b,1}-end
front-a-end front-b-end front-1-end
echo Number_{1..5}
echo {Z..A}
echo {A{1,2},B{3,4}}
mkdir {2007..2009}-0{1,9} {2007..2009}-{10..12}


##参数展开
即shell变量,多用于shell脚本


##命令替换

把一个命令的输出作为作为一个展开

1
2
3
4
echo $(ls)
files=$(ls)
echo `ls`


单词分割

在默认情况下,单词分割机制会在单词中寻找空格、制表符和换行符,并把它们看作单词之间的界定符,它们只作为分隔符使用。所以不要用包含空格的名字命名文件unless you really know what you do

补充:
https://www.jianshu.com/p/403f3554e2c1