Come posso eseguire il comando originale con alias con lo stesso nome?

20

Un alias per il comando ls in ~/.bashrc alias del file con questo:

alias ls='ls --color=auto'

quindi, quando eseguo il comando ls in terminal aliased ls ( ls --color=auto ) viene eseguito. ma la mia domanda è: come posso eseguire solo ls originale e solo ls da solo senza argomenti aggiuntivi e senza risolvere il problema con l'eliminazione della voce con alias? da quando cancello questa voce posso eseguirlo in ls semplice.

    
posta αғsнιη 17.09.2014 - 17:41

5 risposte

53

È possibile ignorare gli alias con i seguenti metodi:

  1. il nome completo del percorso del comando: /bin/ls

  2. sostituzione del comando: $(which ls)

  3. il comando incorporato: command ls

  4. doppie virgolette: "ls"

  5. virgolette singole: 'ls'

  6. un carattere barra rovesciata: \ls

risposta data terdon 17.09.2014 - 17:58
9

Sospendi l'espansione dell'alias

Potresti anche disabilitare temporaneamente l'espansione dell'alias per tutti gli alias, senza eliminarli:

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

Per abilitarli:

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

Nota che l'espansione dell'alias è disabilitata per impostazione predefinita negli script, ma impostata per impostazione predefinita nelle shell interattive.

    
risposta data Volker Siegel 17.09.2014 - 18:30
9

Puoi disabilitare un alias usando \ davanti al comando.

Quindi per eseguire il comando ls originale devi eseguirlo usando \ls

Ad esempio

  • Crea prima l'alias del comando ls .

    [[email protected] /]$ alias ls='ls -l'
    [[email protected] /]$ 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 molti altri ...)

  • Output dell'originale ls utilizzando \ che sostituisce l'alias.

    [[email protected] /]$ \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
    [[email protected] /]$ 
    
risposta data g_p 17.09.2014 - 17:46
6

Potresti aggiungere command prima del comando alias, ad es.

command ls

Oppure esegui l'eseguibile originale combinando which

which ls

Restituirà "/ bin / ls", quindi con

'which ls'

potresti eseguirlo direttamente.

    
risposta data P.-H. Lin 17.09.2014 - 17:51
4

Puoi anche eseguire il comando dalla sua posizione originale /bin/ls anziché ls

    
risposta data Harris 17.09.2014 - 17:49

Leggi altre domande sui tag