我正在使用 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
(我很想将此称为反对使用csh
shell 系列的另一个论据。)
答案2
不要创建破坏 shell 内置命令的别名。你的生活会轻松很多。还有很多组合键,尝试cw
更改窗口标题别名:)
编辑:修复不属于您的别名的两步解决方案:
- 找到那个使用除更改目录命令之外的别名的猴子
cd
,并请求将其转移到当地报纸的专栏。他不应该从事一份可以将这样的想法强加给别人的工作! echo unalias cd >> ~/.bashrc
答案3
在命令前加上“命令”一词。前任。
command ls