Como posso executar um comando original que tenha um alias com o mesmo nome?

20

Um alias para o comando ls no arquivo ~/.bashrc com alias a este:

alias ls='ls --color=auto'

depois, quando executo o comando ls no terminal com alias ls ( ls --color=auto ) é executado. mas a minha pergunta é: como posso executar o% originalls apenas e apenas ls sem argumento extra e sem resolver problemas com a exclusão de entrada com alias? desde quando excluo esta entrada, posso executá-la no simples ls .

    
por devWeek 17.09.2014 / 17:41

5 respostas

53

Você pode ignorar aliases pelos seguintes métodos:

  1. o nome completo do caminho do comando: /bin/ls

  2. substituição de comando: $(which ls)

  3. o comando incorporado: command ls

  4. aspas duplas: "ls"

  5. aspas simples: 'ls'

  6. um caractere de barra invertida: \ls

por terdon 17.09.2014 / 17:58
9

Suspender expansão de alias

Você também pode desativar a expansão de alias para todos os aliases temporariamente, sem excluí-los:

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

Para ativá-los:

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

Observe que a expansão de alias está desabilitada por padrão em scripts, mas definida por padrão em shells interativas.

    
por Volker Siegel 17.09.2014 / 18:30
9

Você pode desativar um alias usando \ na frente do comando.

Então, para executar o comando original ls , você precisa executá-lo usando \ls

Por exemplo

  • Primeiro, criando o alias do comando ls .

    [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-
    

    (e muito mais ...)

  • Saída do original ls usando \ , que substitui o 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 /]$ 
    
por g_p 17.09.2014 / 17:46
6

Você pode adicionar command antes do comando com alias, por exemplo

command ls

Ou execute o executável original combinando which

which ls

Ele retornará "/ bin / ls", portanto, com

'which ls'

você pode executá-lo diretamente.

    
por P.-H. Lin 17.09.2014 / 17:51
4

Você também pode executar o comando a partir de seu local original /bin/ls em vez de ls

    
por Harris 17.09.2014 / 17:49