Domanda Come visualizzare il comando allegato a un alias di bash?


Supponiamo che abbia un alias nella shell bash. C'è un semplice comando per stampare quale comando verrà eseguito l'alias?


258
2018-02-07 03:24


origine




risposte:


Il type builtin è utile per questo. Non ti dirà solo di alias, ma anche funzioni, builtin, parole chiave e comandi esterni.

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



cosa fare quando un alias contiene più alias? - user251046
@ user251046 continua a usare type finché non colpisci qualcosa di diverso da un alias ... - geirha
Mi piace questa risposta perché type analizzerà / analizzerà qualsiasi virgolette, in modo da assicurarti che le virgolette siano corrette. - wisbucky


Basta digitare alias mentre al prompt di Shell. Dovrebbe generare un elenco di tutti gli alias attualmente attivi.

Oppure, puoi digitare alias [command] per vedere a cosa serve un alias specifico, ad esempio, se si volesse scoprire quale sia il ls alias è stato alterato a, si potrebbe fare alias ls.


127
2018-02-07 03:30



O scrivi alias ls per scoprire cosa specificamente ls è aliasto a. - poolie
@poolie davvero. Penso che la domanda fosse vedere tutti gli alias, però, ed è per questo che non ho approfondito il comando degli alias. - Thomas Ward♦
mentre questo funziona per gli alias, non funziona se hai definito una funzione di shell personalizzata. type tuttavia, funziona in entrambi i casi. - Sujay Phadke


mi piace molto Ctrl+alt+E come ho imparato questa risposta. "Espande" la riga di comando attualmente digitata, il che significa che esegue l'espansione dell'alias (tra le altre cose).

Cosa significa? Trasforma qualsiasi alias, che potrebbe essere attualmente scritto sulla riga di comando, in ciò che l'alias rappresenta.

Ad esempio, se digito:

$ ls

e quindi premere Ctrl+alt+E, è trasformato in

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



avere questo equivalente su altre distro? - sepehr
@sepehr Funziona su Debian, presumo sia una caratteristica bash e dovrebbe funzionare su qualsiasi distribuzione. - Der Hochstapler
hai ragione, funziona su bash ma ho zsh e purtroppo non funziona. - sepehr
è stato davvero utile. Avevo un obiettivo diverso di espandere uno dei precedenti comandi bash registrati nella cronologia, cioè,! 394, in modo che potessi modificarlo prima di eseguire - XXL
Come realizzare questo su bash OSX? - Govind Rai


La risposta corretta in senso stretto sta usando l'array BASH_ALIASES, ad esempio:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



Ho trovato questo utile in una situazione in cui volevo che l'accesso programmatico all'effettiva affermazione fosse alias senza le risorse umane utili intorno ad esso. - M. Justin
Molto utile, grazie! - Noldorin
questo non funziona in zsh - ProGrammar
@ProGrammar la domanda riguardava bash: per zsh dovresti cercare domande su zsh - noonex


Potresti usare il which comando.

Se si imposta un alias per ls come ls -al e quindi digitare which ls, vedrai:

ls: aliased to ls -al.


1
2017-08-05 07:36



bash ha no which comando. - geirha
Non funziona per me .. - Chiel ten Brinke
Funziona per me. Grazie - Indrajeet Gour
which è un brutto modo di cercare alias come spiegato qui: unix.stackexchange.com/questions/10525/...   Non funziona nemmeno per me per gli alias in bash su Ubuntu. - Sujay Phadke