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

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

我正在使用 tcsh。 bash 和 zsh 以及其他建议在这里没有帮助。

我有几个别名,它们的名称与另一个命令的名称相同,因此,如果我取消别名,那么输入相同的内容现在会执行不同的操作。

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

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

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

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

答案1

您可以使用反斜杠:

% alias ls ls -a
% ls
# ls -a output here
% \ls
# plain ls output here

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

% alias cd pushd
% cd /tmp
/tmp /tmp 
% c\d
% dirs
~ /tmp

(我很想将此称为反对使用cshshell 系列的另一个论据。)

答案2

不要创建破坏 shell 内置命令的别名。你的生活会轻松很多。还有很多组合键,尝试cw更改窗口标题别名:)

编辑:修复不属于您的别名的两步解决方案:

  1. 找到那个使用除更改目录命令之外的别名的猴子cd,并请求将其转移到当地报纸的专栏。他不应该从事一份可以将这样的想法强加给别人的工作!
  2. echo unalias cd >> ~/.bashrc

答案3

在命令前加上“命令”一词。前任。

command ls

相关内容