Como posso executar o comando original com o mesmo nome?

22

Um alias para o lscomando no ~/.bashrcarquivo aliasado a este:

alias ls='ls --color=auto'

então, quando executo o lscomando no terminal alias ls( ls --color=auto) é executado. mas minha pergunta é como posso executar o original lsapenas e somente lssozinho, sem argumentos extras e sem resolver problemas ao excluir entradas com alias? desde quando eu excluir esta entrada eu posso executá-lo de forma simples ls.

αғsнιη
fonte

Respostas:

60

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 embutido: command ls

  4. aspas duplas: "ls"

  5. aspas simples: 'ls'

  6. um caractere de barra invertida: \ls

Terdon
fonte
9
precisões adicionais no bash: command somethingignora o apelido AND da função nomeada something. \\something, 'something'e "something"ignora apenas o alias nomeado something(se uma função existir, ela será chamada). (função de alias preceder se ambos existem e nenhum são ignorados)
Olivier Dulac
9

Suspender expansão de alias

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

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

Para habilitá-los:

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

Observe que a expansão do alias é desativada por padrão em scripts, mas definida por padrão em shells interativos.

Volker Siegel
fonte
9

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

Portanto, para executar o lscomando original, você precisa executá-lo usando\ls

Por exemplo

  • Primeiro, criando o alias de lscomando.

    [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 muitos mais...)

  • Saída do original lsusando a \qual 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 /]$ 
g_p
fonte
6

Você pode adicionar commandantes do comando alias, por exemplo

command ls

Ou execute o executável original combinando which

which ls

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

`qual é`

você pode executá-lo diretamente.

P.-H. Lin
fonte
4

Você também pode executar o comando a partir do local original em /bin/lsvez dels

Harris
fonte