A quale comando viene assegnato l'alias?


28

Qualcuno può dirmi a quale comando terminale llserve l'alias ? Tutto quello che posso trovare online è che molte persone dicono che è un alias per ls -lo ls -lao ls -ltr. Ma è semplicemente sbagliato. Il risultato sembra diverso. C'è un modo per individuare lle guardare la sua sintassi?

Risposte:


76

È possibile utilizzare i comandi aliaso typeper verificare il significato di uno specifico alias:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

Si noti tuttavia che gli alias potrebbero utilizzare altri alias, quindi potrebbe essere necessario verificarlo in modo ricorsivo, ad esempio nel caso di ll, è necessario verificare anche il lscomando che chiama:

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

Quindi in llrealtà significa:

ls --color=auto -alF

10
Si noti che nel caso generale, un comando potrebbe avere diverse definizioni simultanee. type -a commandnamerivelerà tutto - ti dirà se il comando è uno o più di un alias, una funzione, un builtin o uno o più file eseguibili nel tuo PERCORSO, in quell'ordine di precedenza. Questo aiuta a capire perché, ad esempio, unaliasing di un comando non lo riporta completamente al comportamento previsto.
In pausa fino a nuovo avviso.

Lo consiglierei alias ll='ls -lh'. È possibile eseguire ls -lse si desidera dimensioni in byte anziché B / kiB / MiB / GiB a misura d'uomo.
Peter Cordes,

13

llè un alias definito nel tuo ~/.bashrc, a condizione che tu non l'abbia cambiato, è ls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

Queste tre opzioni sono:

  • -a, --all - non ignora le voci che iniziano con.
  • -l - usa un formato di elenco lungo
  • -F, --classify - accoda l'indicatore (uno di * / => @ |) alle voci

Come

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

mostra, lsè di nuovo un alias per ls --color=auto:

Con --color=auto, lsemette codici colore solo quando l'uscita standard è collegata a un terminale. La LS_COLORSvariabile di ambiente può modificare le impostazioni. Utilizzare il dircolors comando per impostarlo.


Non necessariamente .bashrc. Se si utilizza una shell diversa, verrà definita nel file .rc per quella shell: cshrc, .tchshc e così via.
jamesqf,

@jamesqf Penso che qualcuno che usa una shell diversa sappia anche quali alias sono predefiniti in essa - ho preso la domanda per essere sulla configurazione predefinita di Ubuntu, dove bashè la shell predefinita per gli utenti e l'alias llè definito in /etc/skel/.bashrccui viene copiato in ogni nuovo home directory dell'utente. Ovviamente potresti usare qualsiasi file per archiviare i tuoi alias - tutto ciò che ti serve è procurartelo.
dessert

2
Non è necessario reindirizzare il file in grep, prenderà il nome del file come argomento. Mentre i file di avvio grepping ti aiuteranno a trovare dove l'alias è (ri) definito (nota che potrebbe essere in un file in /etc- sapendo che ti farà risparmiare un po 'di grattacapi se lo rimuovi dal file di avvio dell'utente e persiste ancora o addirittura cambia il suo comportamento), se vuoi solo sapere rapidamente qual è la definizione, il comando alias , come indicato nella risposta accettata, farà il lavoro.
In pausa fino a nuovo avviso.

@DennisWilliamson Non è necessario bashaprire il file, ma è molto meglio! L'ultima frase nel post della domanda recita C'è un modo per individuare lle guardare la sua sintassi? , ecco cosa risponde la mia risposta.
dessert

3

Puoi guardare nel tuo ~ / .bashrc (o in qualche file dove si trovano i tuoi alias) oppure puoi scrivere alcuni di questi comandi nella tua shell:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

Ma perché usare find senza il nome ". *"? Perché puoi metterlo nel tuo .bashrc

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

Poiché "ll" è un alias, non è necessario che abbia un solo significato (ll = 'ls -alF --color'), puoi alias il tuo "ll" come un altro comando come, non lo so, "rm" . Penso che sia più una convenzione (prodotto di usi comuni).

Ma "ll" potrebbe essere un programma memorizzato in qualsiasi cartella del tuo PERCORSO. Ad esempio, se hai una cartella denominata "bin" in casa, crea uno script "ll" che contenga qualcosa di simile

#!/bin/bash
ls -lhar

Ma cosa succede se il tuo PERCORSO è stato modificato per aggiungere un'altra cartella che contiene il nuovo comando "ll"? Per informazioni più interessanti, è possibile consultare il seguente collegamento a una domanda correlata.


0

Non è necessario analizzare ~ / .bashrc o qualsiasi altro script. È possibile controllare i valori correnti di tutti gli alias digitando il aliascomando nel terminale. Porterà tutti gli alias definiti con le loro definizioni sullo schermo.


Ciao e benvenuto su askubuntu. In che modo questa risposta aggiunge qualcosa a quella accettata?
Bruni,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.