$ 在终端里不是普通字符——它是变量和命令替换的标志,想原样输出它,关键不是按哪个键,而是让 Shell 别解析它 [1]。
键盘上:同一个键,不同布局
美式键盘上 Shift+4 就是 $。换成法式或德语布局后键位会变,打不出来先确认当前键盘映射,而不是换命令。
Shell 里:引号和转义决定命运
$ 照常展开:echo "$HOME" 打印变量值;想原样输出要转义 echo "价格: \$3" [1]。echo '$HOME' 输出字面 $HOME。echo $'\x24' 输出 $ [1]。实测对照:echo "value is $name" 展开变量,echo "\$name" 输出字面 $name,两条命令跑出的结果完全不同。
不依赖键盘:用 printf 按码点输出
GNU coreutils 的 printf 支持十六进制 \x24、八进制 \044、Unicode \u0024 三种转义,都输出 $ [2]。在 Makefile、heredoc 里被 $$ 转义规则绕晕时,printf '\x24' 最省事。
图形界面输入:Ctrl+Shift+U
GNOME/GTK 应用里可以按码点输入任意 Unicode 字符:按 Ctrl+Shift+U,再打四位码点 0024,按空格或回车 [3]。适合找不到 $ 键位的笔记本或非美式键盘。
打 $ 的麻烦从来不在键盘,而在引号——先确认 Shell 想对它做什么。
参考资料
- [1] Quoting — Bash Reference Manual(GNU Bash 手册)
- [2] printf invocation — GNU Coreutils(GNU coreutils 手册)
- [3] Enter special characters(GNOME 帮助)
文中命令已在 WSL Ubuntu 实机执行验证。