web-dev-qa-db-fra.com

Exécutez une commande qui est masquée par un alias

Disons que j'ai l'alias suivant dans bash - alias ls='ls --color=auto' - et je veux appeler le ls ordinaire sans options. La seule façon de le faire est de supprimer l'alias, d'exécuter la commande puis de nouveau l'alias? Ou il existe une astuce astucieuse ou une solution de contournement?

173

Vous pouvez également préfixer une barre oblique inverse pour désactiver l'alias: \ls

Modifier: D'autres façons de faire de même incluent:

Utilisez "commande": command ls selon Mikel .

Utilisez le chemin complet: /bin/ls selon ther .

Citez la commande: "ls" ou 'ls' selon le commentaire de Mikel.

Vous pouvez supprimer temporairement l'alias pour cette session de terminal avec unalias command_name.

225
Not Now

C'est à cela que sert la commande command.

Essayer

command ls

Cela indique au shell de contourner les alias et les fonctions.

Cette méthode est prise en charge par bash , zsh et ash /dash.

82
Mikel

L'alias n'est qu'un raccourci défini. Dans cet exemple, l'alias défini est la chaîne ls, qui exécute ls --color=auto. Si vous ne souhaitez pas ce comportement, vous pouvez appeler le binaire ls en utilisant le chemin absolu.

Donc, exécuter juste /bin/ls produira une sortie sans couleur car ce n'est pas l'alias que vous avez défini.

Vous pouvez également changer l'alias en quelque chose de différent ou ajouter un nouvel alias qui exécute simplement ls sans les paramètres de couleur.

19
George M

Une autre façon, en s'appuyant sur la réponse de @ uther, est d'utiliser $(which ...) ou `which ...` (en utilisant des raccourcis ``) pour trouver automatiquement le chemin de l'exécutable. Cela fonctionnera dans bash:

$(which ls)

`which ls`

Sans aucun doute, il suffit de préfixer la commande avec un \ est beaucoup plus court.

[~ # ~] mise à jour [~ # ~] : Selon Comment utiliser `which` sur une commande aliasée? , cela ne semble pas du tout fiable.

10
krlmlr

Personnellement, j'évite simplement de définir des alias avec les mêmes noms que les commandes, donc ls invoque toujours la commande réelle. J'ai des alias ou des fonctions pour diverses combinaisons d'options comme l, ll et lg. (Cela signifie que j'ai besoin de unalias ls dans mon .bashrc ou .cshrc.)

Je trouve que les hypothèses du système d'exploitation sur les options que je pourrais préférer (outrepassant les hypothèses des concepteurs de la commande ls elle-même) correspondent rarement à mes goûts personnels. Je déteste le look de ls --color=auto, et sa lisibilité peut varier considérablement entre le noir sur blanc et le blanc sur noir.

YMMV, et les autres solutions sont bien sûr encore bonnes à connaître.

2
Keith Thompson

Taper la commande en majuscule semble fonctionner, comme LS, mais je ne sais pas vraiment pourquoi.

1
asmeurer