如何暂时绕过 tcsh 中的别名?

piC*_*kie 21 shell tcsh alias

我正在使用 tcsh。bash 和 zsh 以及其他建议在这里无济于事。

我有几个别名与另一个命令的名称相同,所以如果我取消了它的别名,现在输入相同的东西会做不同的事情。

大多数时候我想要别名命令,这就是我拥有它们的原因。但是,有时我想要无别名的命令。

在没有实际取消别名和重新定义命令的情况下,是否有一种简单的方法可以告诉 tcsh 使用取消别名的命令?

例如,vi 是 vim 的别名,但有时我只想使用 vi。cd 别名用于更改我的窗口标题,但有时我想不理会它。

显然我可以输入 /usr/bin/vi 但由于 cd 是一个 shell 内置命令,所以没有等效的命令。有没有通用的解决方案?

gee*_*aur 34

您可以使用反斜杠:

% alias ls ls -a
% ls
# ls -a output here
% \ls
# plain ls output here
Run Code Online (Sandbox Code Playgroud)

对于 shell 内置函数,结果证明存在一个问题:前导反斜杠可防止使用别名和内置函数,但内部反斜杠仅抑制别名。

% alias cd pushd
% cd /tmp
/tmp /tmp 
% c\d
% dirs
~ /tmp
Run Code Online (Sandbox Code Playgroud)

(我很想把这称为反对使用cshshell 家族的另一个论点。)