Shell 中命令前加反斜杠 `\` 的作用
在终端中,你可能见过这样的写法:
\ls\rm file.txt\grep"pattern"file命令前面加了一个\,这是做什么的?
作用:跳过 alias,执行原始命令
Shell 在执行命令时,会先检查是否存在同名的 alias。比如很多发行版默认配置了:
aliasls='ls --color=auto'aliasrm='rm -i'aliascp='cp -i'aliasgrep='grep --color=auto'当你输入ls时,实际执行的是ls --color=auto。
而输入\ls时,shell 会跳过 alias 查找,直接执行原始的ls命令。
原理
Shell 的 alias 展开只对未转义的简单单词生效。
反斜杠\对命令名进行了转义,使其不再匹配 alias 名称,
因此 shell 直接在$PATH中查找并执行原始二进制文件。
等价写法
除了\command,还有其他方式可以跳过 alias:
\ls# 反斜杠转义commandls# 使用 shell 内置关键字'ls'# 单引号"ls"# 双引号以上四种写法效果相同,都会绕过 alias。
常见使用场景
| 命令 | 说明 |
|---|---|
\rm | 跳过rm -i,删除时不逐个确认 |
\cp | 跳过cp -i,复制时不逐个确认 |
\ls | 跳过--color=auto,输出纯文本 |
\grep | 跳过--color,输出干净文本用于脚本 |
\which | 跳过 alias,拿到真实路径 |
实际验证
# 查看当前 aliasaliasls# 对比输出差异ls# 带颜色\ls# 无颜色(原始输出)# 查看命令实际来源typels# ls is aliased to 'ls --color=auto'type\ls# ls is /usr/bin/ls小结
\command是一个简洁实用的 shell 技巧:一个反斜杠,绕过所有 alias,直达原始命令。在写脚本、调试环境、或需要干净输出时特别有用。
