linux 展开
echo 输出
路径展开
echo * 不会输出*,而是输出当前目录下的所有文件名 因为*会先展开
参数展开
echo $USER 会输出当前用户的用户名
波浪线~展开
echo ~ 会输出当前用户的home目录
echo ~zhangsan 会输出用户zhangsan的home目录
算术表达式展开
echo $((2 + 2)) $(())两层括号都是必须的
花括号展开
echo Front-{A,B,C}-Back -> Front-A-Back Front-B-Back Front-C-Back
echo Number_{1..4} -> Number_1 Number_2 Number_3 Number_4
echo a{A{1,2},B{3,4}}b -> aA1b aA2b aB3b aB4b
命令替换 $()
ls -l $(which cp) 在不知道cp命令的完整路径名的情况下,得到它的文件属性
用双引号括起来,可以禁用单词分割、路径名展开、 波浪线展开和花括号展开,
而参数展开、算术展开和命令替换 仍然有效。
单引号能禁止所有的展开
反斜杠 \ 转义 echo "\$USER" 不会展开