Comment puis-je exécuter la commande d'origine qui a un alias avec le même nom?

22

Un alias pour la lscommande dans un ~/.bashrcfichier aliasé avec celui-ci:

alias ls='ls --color=auto'

puis, lorsque j'exécute la lscommande dans le terminal, alias ls( ls --color=auto) s'exécute. mais ma question est de savoir comment puis-je exécuter l'original lsuniquement et uniquement lsseul sans argument supplémentaire et sans résoudre le problème de suppression de l'entrée aliasée? car lorsque je supprime cette entrée, je peux l'exécuter en toute simplicité ls.

αғsнιη
la source

Réponses:

60

Vous pouvez contourner les alias par les méthodes suivantes:

  1. le chemin complet de la commande: /bin/ls

  2. substitution de commande: $(which ls)

  3. la commande intégrée: command ls

  4. guillemets doubles: "ls"

  5. guillemets simples: 'ls'

  6. un caractère barre oblique inverse: \ls

terdon
la source
9
précisions supplémentaires dans bash: command somethingcontourne à la fois l' alias ET la fonction nommée something. \\something, 'something'et "something"contourne uniquement l' alias nommé something(si une fonction existe, elle sera alors appelée). (l'alias précède la fonction si les deux existent et qu'aucun n'est contourné)
Olivier Dulac
9

Suspendre l'expansion des alias

Vous pouvez également désactiver temporairement l'extension d'alias pour tous les alias, sans les supprimer:

$ shopt -u expand_aliases
$ command -v ls
/bin/ls

Pour les activer:

shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'

Notez que l'expansion d'alias est désactivée par défaut dans les scripts, mais définie par défaut dans les shells interactifs.

Volker Siegel
la source
9

Vous pouvez désactiver un alias en utilisant \devant la commande.

Donc, pour exécuter la lscommande d' origine, vous devez l'exécuter en utilisant\ls

Par exemple

  • Première création d'alias de lscommande.

    [guru@guru-Aspire-5738 /]$ alias ls='ls -l'
    [guru@guru-Aspire-5738 /]$ ls
    total 96
    drwxr-xr-x   2 root root  4096 Sep  3 18:31 bin
    drwxr-xr-x   5 root root  4096 Sep 17 02:51 boot
    drwxr-xr-x   2 root root  4096 Sep  3 22:17 cdrom
    drwxr-xr-x  17 root root  4520 Sep 17 21:11 dev
    drwxr-xr-x 153 root root 12288 Sep 17 21:11 etc
    drwxr-xr-x   3 root root  4096 Sep  3 22:17 home
    lrwxrwxrwx   1 root root    37 Sep  8 21:31 initrd.img -> /boot/initrd.img-3.2.0-68-generic-pae
    lrwxrwxrwx   1 root root    36 Sep  3 22:18 initrd.img.old -> boot/initrd.img-3.2.0-

    (et beaucoup plus...)

  • Sortie de l' original à l' lsaide \qui annule l'alias.

    [guru@guru-Aspire-5738 /]$ \ls
    bin    etc         lib     opt   sbin     tmp      vmlinuz.old
    boot   home        lost+found  proc  selinux  usr
    cdrom  initrd.img      media       root  srv      var
    dev    initrd.img.old  mnt     run   sys      vmlinuz
    [guru@guru-Aspire-5738 /]$ 
g_p
la source
6

Vous pouvez ajouter commandavant la commande aliasée, par exemple

command ls

Ou exécutez l'exécutable d'origine en combinant which

which ls

Il renverra "/ bin / ls", donc avec

`qui ls`

vous pouvez l'exécuter directement.

P.-H. Lin
la source
4

Vous pouvez également exécuter la commande à partir de son emplacement d'origine au /bin/lslieu dels

Harris
la source