Comment contourner temporairement un alias dans tcsh?

17

J'utilise tcsh. bash et zsh et d'autres suggestions n'aideront pas ici.

J'ai plusieurs alias qui sont nommés la même chose qu'une autre commande, donc si je le désaliasais, taper la même chose ferait maintenant quelque chose de différent.

La plupart du temps, je veux la commande aliasée, c'est pourquoi je les ai. Cependant, parfois je veux la commande sans biais.

Sans réellement supprimer l'alias et redéfinir la commande, existe-t-il un moyen simple de dire à tcsh d'utiliser la commande sans alias à la place?

Par exemple, vi est un alias de vim, mais parfois je veux simplement utiliser vi. cd est aliasé pour changer le titre de ma fenêtre, mais parfois je veux le laisser tranquille.

Évidemment, je pourrais taper / usr / bin / vi mais comme cd est une commande intégrée au shell, il n'y a pas d'équivalent. Existe-t-il une solution générale?

piCookie
la source

Réponses:

29

Vous pouvez utiliser une barre oblique inverse:

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

Pour les commandes internes de shell, il se trouve qu'il y a un piège: une barre oblique inverse principale empêche l'utilisation des alias et des commandes internes, mais une barre oblique inverse interne supprime uniquement l'aliasing.

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

(Je suis tenté d'appeler cela un autre argument contre l'utilisation de la cshfamille des obus.)

geekosaure
la source
Je reçois toujours "commande: commande introuvable." pour la commande et "cd: commande introuvable" pour \ cd. La commande est-elle un tcsh intégré?
piCookie
soupire bizarrerie POSIX ... il y a des contrefaçons /usr/binici. Mais le manuel confirme que la barre oblique inverse devrait fonctionner ... et il s'avère que c'est le cas, mais vous devez citer un caractère interne pour empêcher l'aliasing tout en prenant en charge les commandes intégrées. En passant, si vous essayez de faire quelque chose après cd, jetez un oeil à alias cwdcmden tcsh(1); cela vous évite également d'avoir à faire face à pushd/ popdetc.
geekosaur
commandest généralement un shell POSIX intégré, et doit l'être pour command -[Vv]. L'utilisation d'une barre oblique inverse pour contourner l'alias ne fonctionne que pour les commandes normales, pas pour les commandes intégrées (car les commandes intégrées ne peuvent pas être citées dans (t) csh pas plus que les alias).
Gilles 'SO- arrête d'être méchant'
Il semble que la commande ne soit pas disponible sur mon système (à part: comment avez-vous formaté cela pour vous démarquer?), Mais la barre oblique inverse interne fonctionne pour moi. Merci!
piCookie
Cheers @geekosaur - Je n'étais pas au courant de ce \ comportement et je pense que ce sera très pratique car je commence à utiliser des alias de plus en plus fréquemment. :)
boehj
1

préfixez votre commande avec le mot «commande». Ex.

command ls
Weston Ganger
la source
1
Est-ce que cela fonctionne dans tcsh, comme l'exige la question? Fonctionne-t-il avec des commandes intégrées?
dhag
0

Ne créez pas d'alias qui encombrent les commandes internes du shell. Votre vie sera beaucoup plus facile . Il reste de nombreuses combinaisons de touches, essayezcw votre alias de titre de fenêtre de changement :)

Edit: Solution en deux étapes pour corriger un alias qui n'est pas le vôtre:

  1. Trouvez le singe qui s'est aliasé cd pour autre chose que la commande change-directory et demandez son transfert dans la colonne oped du journal local. Il ne devrait pas occuper un emploi où il pourrait forcer des idées comme celle-là sur les coquilles des autres!
  2. echo unalias cd >> ~/.bashrc
Caleb
la source
Certains des pseudonymes que j'ai ne sont pas de mon fait. J'apprécie vos conseils et ferai de mon mieux pour en tenir compte dans la mesure du possible. Maintenant qu'il ya des noms d' emprunt , je voudrais contourner, comment puis-je?
piCookie
Sûr. unalias cd.
Caleb
Évidemment, je n'étais pas clair du tout, Caleb, et je m'excuse. Appelons le cas «cd» résolu. J'essayais de savoir comment faire cela pour d'autres alias sans décroissance. Je suis désolé de ne pas l'avoir fait comprendre. On dirait qu'une barre oblique inverse est exactement ce que je cherchais.
piCookie
L' cdalias peut définir le titre et changer de répertoire. C'est une pratique assez courante des jours précédents precmdet PROMPT_COMMAND.
Mikel