跳转至

Shell Expansion

在 Linux/Unix 的 Shell 环境中,"expansion" 指的是 Shell 在执行命令前对变量、通配符、命令替换等进行解析和替换的过程。常见的翻译方式包括:

  • brace expansion
    • 例如echo a{1,2,3}
  • tilde expansion
    • 例如ls ~
  • parameter and variable expansion
    • 例如echo ${v-unset},在v未定义的时候会输出unset
  • arithmetic expansion
    • 例如echo $(( 1+2 ))
  • command substitution
    • 例如echo "now is $(date)"
  • word splitting
    • 注意IFS(内部字段分隔符)决定 Bash 如何拆分单词,默认是 空格、Tab、换行符。
    • 例如file="a file.txt" && ls $file,ls会把a和file.txt当成两个文件
    • 这时候只需要加上引号:file="a file.txt" && ls "$file",ls就会正确识别a file.txt作为文件名了
  • filename expansion
    • 文件名可以使用正则表达式
    • 例如du -sh *.md, rm [0-9]*.txt
  • quote removal
    • 例如echo "\""

Expansion会按照上面的顺序依次执行,具体的内容建议查看手册


最后更新: 2025-07-23 01:16:29
创建日期: 2025-07-23 01:16:29

广告

人要恰饭的嘛🤑🤑

评论