路径名展开
ls
echo *
echo doc*
echo /usr/*/share
波浪线展开
echo ~ 展开用户家目录
算术表达式展开
$((expression))
echo $((1*2)) $((2**5)*6)
花括号展开:多用于批量创建文件
echo {A,B,C} => A B C
echo {A..Z} => A B C ...Z
echo {0..9} => 0 1 2 ...9
echo a{A{1,2},B{3,4}}b => aA1b aA2b aB3b aB4B
mkdir {2007..2009}-0{1..9} {2007..2009}-1{0..2} =>2007-01 2007-02 ...2009-12
参数展开
echo $USER $HOSTNAME
printenv // 打印所有环境变量
命令替换:可以把一个命令的输出当做展开模式来使用
echo $(ls)
duoyi@yang:~$ ls -l $(which cp)
-rwxr-xr-x 1 root root 151024 3月 3 2017 /bin/cp
引用:双引号:双引号内除了$ ,(反斜杠),’(倒引号)三个特殊字符,其他shell特殊字符均失效。即单词分割,路径名展开,波浪线展开,花括号展开都被禁止。但参数展开,算数展开,命令替换依然有效。
ls -l "test 123.txt" //显示空格文件
echo "$USER" "$((1+1))" "$(pwd)" => yang 2 /home/duoyi
echo "{A..Z} * ~" => {A..Z} * ~
引用:单引号:禁用所有展开
echo '$USER' => $USER