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


17

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

我有几个别名与另一个命令的名称相同,因此,如果我不对它进行别名处理,则键入相同的名称现在会产生不同的效果。

大多数时候,我都希望使用别名命令,这就是为什么要使用别名的原因。但是,有时我需要无锯齿的命令。

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

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

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

Answers:


29

您可以使用反斜杠:

% 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壳族的论点。)


我不断收到“命令:找不到命令”。用于命令,对于“ \ cd:找不到命令”。“ command”是内置的tcsh吗?
piCookie 2011年

叹息 POSIX怪异...这里有假货/usr/bin。但是手册确认反斜杠应该起作用...事实证明确实如此,但是您必须引用一个内部字符以防止在仍支持内置函数的情况下出现别名。顺便说一句,如果你想以后做一些事情cd,来看看alias cwdcmdtcsh(1); 这也使您不必应付pushd/ popd
geekosaur

command通常是POSIX Shell中内置的,需要用于command -[Vv]。使用反斜杠绕过别名仅适用于常规命令,不适用于内置命令(因为(t)csh中对内置命令的引用不能超过别名的引用)。
吉尔(Gilles)'所以

似乎该命令在我的系统上不可用(除了:您如何格式化它才能脱颖而出?),但是内部反斜杠对我有用。谢谢!
piCookie 2011年

干杯@geekosaur-我不知道这个\行为,我认为这将非常方便,因为我开始越来越频繁地使用别名。:)
boehj 2011年

1

在命令前加上“命令”一词。例如

command ls

1
如问题所要求,这在tcsh中有效吗?它可以与内置命令一起使用吗?
dhag 2015年

0

请勿使用Clobber Shell内置的别名。您的生活会轻松得多。还有很多按键组合,请尝试cw更改窗口标题的别名:)

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

  1. 查找别名cd为change-directory命令之外的东西的猴子,并请求将其转移到本地文件的oped列。他不应该从事可以将诸如此类的想法强加于他人的想法!
  2. echo unalias cd >> ~/.bashrc

我的某些别名不是我自己做的。我感谢您的建议,并会在可能的情况下竭尽所能。现在,有别名我想绕行,我该怎么办?
piCookie 2011年

当然。unalias cd
卡雷布(Caleb)

显然,我一点也不清晰,Caleb,我深表歉意。让我们将“ cd”情况称为已解决。我试图找出如何在混淆的情况下对其他别名执行此操作。对不起,我没有明白这一点。看起来内部反斜杠正是我所要的。
piCookie 2011年

cd别名可能设置标题不断变化的目录。从和之前的日子开始precmd,这是很普遍的习惯PROMPT_COMMAND
Mikel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.