Vraag Hoe zie ik de opdracht gekoppeld aan een bash alias?


Stel dat ik een alias heb in de bashshell. Is er een eenvoudige opdracht om uit te printen welk commando de alias zal uitvoeren?


258
2018-02-07 03:24


oorsprong




antwoorden:


De type ingebouwde is hiervoor handig. Het zal niet alleen u vertellen over aliassen, maar ook over functies, ingebouwde items, trefwoorden en externe opdrachten.

$ 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



wat te doen als een alias MEER aliassen bevat? - user251046
@ user251046 blijven gebruiken type tot je iets anders dan een alias raakt ... - geirha
Ik vind dit antwoord leuk omdat type zal alle aanhalingstekens analyseren / interpreteren, zodat u zeker weet dat de aanhalingstekens juist zijn. - wisbucky


Typ gewoon alias tijdens de prompt van Shell. Er moet een lijst met alle momenteel actieve aliassen worden uitgevoerd.

Of u kunt typen alias [command] om te zien waarvoor een specifieke alias wordt gealiast, bijvoorbeeld als u wilt weten wat de ls alias is gealiast naar, je zou kunnen doen alias ls.


127
2018-02-07 03:30



Of typ alias ls om te weten te komen wat specifiek is ls is gealiast aan. - poolie
@poolie Inderdaad. Ik denk dat de vraag was om te zien alle de aliassen, daarom heb ik niet verder ingegaan op het alias-commando. - Thomas Ward♦
terwijl dit voor aliassen werkt, werkt het niet als u een aangepaste shell-functie hebt gedefinieerd. type werkt echter in beide gevallen. - Sujay Phadke


ik hou echt van Ctrl+alt+E zoals ik heb geleerd van dit antwoord. Het "expandeert" de momenteel getypte opdrachtregel, wat betekent dat het onder andere alias-uitbreiding uitvoert.

Wat betekent dat? Het verandert elke alias, die momenteel op de opdrachtregel staat, in waar het alias voor staat.

Als ik bijvoorbeeld typ:

$ ls

en druk vervolgens op Ctrl+alt+E, het is veranderd in

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

51
2018-02-13 17:52



heeft dit een equivalent op andere distributies? - sepehr
@sepehr Werkt op Debian, ik neem aan dat het een bash-functie is en moet werken aan elke distributie. - Der Hochstapler
je hebt gelijk, het werkt op bash maar ik heb zsh en het werkt helaas niet. - sepehr
was erg behulpzaam. Ik had een ander doel om een ​​van de eerdere bash-opdrachten uit de geschiedenis uit te breiden met, d.w.z. 394, zodat ik het eerst kon bewerken voordat ik het uitvoerde - XXL
Hoe dit te bereiken op bash OSX? - Govind Rai


Strikt genomen is het juiste antwoord het gebruik van de array BASH_ALIASES, bijvoorbeeld:

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

6
2018-01-13 12:12



Ik vond dit nuttig in een situatie waar ik programmatische toegang tot de daadwerkelijke verklaring wilde die aliased zonder de mens-nuttige dingen rond het was. - M. Justin
Heel handig, bedankt! - Noldorin
dit werkt niet in zsh - ProGrammar
@ProGrammar de vraag ging over bash - voor zsh zou je vragen moeten zien over zsh - noonex


Je zou de kunnen gebruiken which opdracht.

Als u een alias instelt ls als ls -al en typ dan which ls, je zult zien:

ls: aliased to ls -al.


1
2017-08-05 07:36



bash heeft nee which opdracht. - geirha
Werkt niet voor mij .. - Chiel ten Brinke
Het werkt voor mij. bedankt - Indrajeet Gour
which is een slechte manier om aliassen op te zoeken zoals hier uitgelegd: unix.stackexchange.com/questions/10525/...   Het werkt zelfs niet voor mij voor aliassen in bash op Ubuntu. - Sujay Phadke