Wie umgehe ich einen Alias ​​in tcsh vorübergehend?

17

Ich benutze tcsh. Bash und Zsh und andere Vorschläge werden hier nicht helfen.

Ich habe mehrere Aliase, die den gleichen Namen wie ein anderer Befehl haben. Wenn ich also einen Unalias-Namen hätte, würde die Eingabe des gleichen Namens jetzt etwas anderes bewirken.

Meistens möchte ich den Alias-Befehl, weshalb ich sie habe. Manchmal möchte ich jedoch den unausgeglichenen Befehl.

Gibt es eine einfache Möglichkeit, tcsh anzuweisen, stattdessen den unaliased-Befehl zu verwenden, ohne den Befehl tatsächlich zu unaliasen und neu zu definieren?

Zum Beispiel ist vi auf vim ausgerichtet, aber manchmal möchte ich nur vi verwenden. cd hat das Alias, meinen Fenstertitel zu ändern, aber manchmal möchte ich es in Ruhe lassen.

Natürlich könnte ich / usr / bin / vi eingeben, aber da cd ein in die Shell integrierter Befehl ist, gibt es kein Äquivalent. Gibt es eine allgemeine Lösung?

piCookie
quelle

Antworten:

29

Sie können einen Backslash verwenden:

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

Für Shell-Buildins stellt sich heraus, dass es ein Gotcha gibt: Ein führender Backslash verhindert, dass sowohl Aliase als auch Builtins verwendet werden, ein interner Backslash unterdrückt jedoch nur das Aliasing.

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

(Ich bin versucht, das als weiteres Argument gegen die Verwendung der cshMuschelfamilie zu bezeichnen.)

Geekosaurier
quelle
Ich erhalte immer wieder "Befehl: Befehl nicht gefunden." für Befehl und "cd: Befehl nicht gefunden" für \ cd. Ist 'command' ein eingebautes tcsh?
piCookie
Seufz POSIX Verrücktheit ... hier sind Fälschungen drin /usr/bin. Aber das Handbuch bestätigt, dass Backslash funktionieren sollte ... und es stellt sich heraus, dass es funktioniert, aber Sie müssen ein inneres Zeichen angeben, um ein Aliasing zu verhindern, während weiterhin Builtins unterstützt werden. Übrigens, wenn Sie versuchen, etwas nach einem zu tun cd, werfen Sie einen Blick auf alias cwdcmdin tcsh(1); das erspart dir auch den pushdpopd
umgang
commandist in der Regel eine in POSIX eingebaute Shells und muss für sein command -[Vv]. Die Umgehung des Alias ​​durch einen Backslash funktioniert nur für reguläre Befehle, nicht für integrierte Befehle (da integrierte Befehle in (t) csh nicht mehr als Aliase in Anführungszeichen gesetzt werden können).
Gilles 'SO- hör auf böse zu sein'
Es scheint, dass der Befehl auf meinem System nicht verfügbar ist (abgesehen davon, wie haben Sie ihn formatiert, um aufzufallen?), Aber der interne Backslash funktioniert für mich. Vielen Dank!
piCookie
Cheers @geekosaur - Ich wusste nichts über dieses Verhalten und ich denke, es wird sehr praktisch sein, da ich immer häufiger Aliase benutze. :)
boehj
1

Stellen Sie Ihrem Befehl das Wort "Befehl" voran. Ex.

command ls
Weston Ganger
quelle
1
Funktioniert das in tcsh, wie es die Frage erfordert? Funktioniert es mit eingebauten Befehlen?
Dhag
0

Machen Sie keine Aliase, die in die Clobber-Shell eingebaut sind. Ihr Leben wird viel einfacher sein . Es gibt noch viele Tastenkombinationen, versuchen Sie es cwmit Ihrem Titel-Alias ​​für das Änderungsfenster :)

Bearbeiten: Zweistufige Lösung zum Beheben von Aliasnamen, die nicht von Ihnen stammen:

  1. Suchen Sie den Affen, der sich cdauf etwas anderes als den Befehl change-directory eingelassen hat , und fordern Sie seine Übertragung in die geöffnete Spalte der Lokalzeitung an. Er sollte keinen Job haben, bei dem er Ideen wie diese auf die Muscheln anderer Leute zwingen kann!
  2. echo unalias cd >> ~/.bashrc
Caleb
quelle
Einige der Aliase, die ich habe, sind nicht von mir. Ich weiß Ihren Rat zu schätzen und werde mein Bestes tun, um ihn zu befolgen, wo immer dies möglich ist. Nun, da es Aliase gibt, die ich umgehen möchte, wie gehe ich vor?
piCookie
Sicher. unalias cd.
Caleb
Offensichtlich war ich überhaupt nicht klar, Caleb, und ich entschuldige mich. Nennen wir den CD-Fall gelöst. Ich habe versucht herauszufinden, wie dies für andere Aliase ohne Unaliasing durchgeführt werden kann. Es tut mir leid, dass ich das nicht rüber gebracht habe. Es sieht so aus, als ob ein interner Backslash genau das ist, wonach ich gesucht habe.
piCookie
Der cdAlias ​​legt möglicherweise den Titel fest und ändert das Verzeichnis. Das ist eine ziemlich verbreitete Praxis aus den Tagen vor precmdund PROMPT_COMMAND.
Mikel