在 CentOS(以及大多数 Linux/Unix Shell) 中,反引号(`) 的作用是 命令替换(Command Substitution)。
反引号会把其中的命令先执行,然后用命令的输出结果替换掉整个反引号部分。
语法:
`命令`
等价于(更推荐):
$(命令)
today=`date`
echo $today
等价于:
today=$(date)
echo "当前目录是 `pwd`"
输出类似:
当前目录是 /home/user
touch `date +%Y%m%d`.log
会创建类似:
20260121.log
files=`ls`
echo $files
⚠️ 注意:这种方式不适合处理带空格的文件名,推荐用 $(ls) 或 find -print0。
$()(重要)| 对比项 | 反引号 ` ` | $() |
|---|---|---|
| 可读性 | 较差 | ✅ 更好 |
| 嵌套支持 | ❌ 不方便 | ✅ 支持 |
| 推荐使用 | ❌ | ✅ |
✅ 现代 Shell 脚本推荐使用 $(命令)
嵌套示例:
echo "$(ls $(pwd))"
反引号嵌套(不推荐):
echo "`ls \`pwd\``"
'date' # 原样输出字符串
`date` # 执行命令
` date ` # 可能报错或行为异常
反引号在以下 Shell 中都有效:
CentOS 默认 shell 是 bash,完全支持。
CentOS 中的反引号用于“命令替换”,即先执行命令,再用输出结果参与后续命令执行。
如果你愿意,我也可以帮你对比 反引号 / $() / eval / xargs 的使用场景。