it-swarm.dev

Jak vidět příkaz připojený k bash alias?

Předpokládejme, že mám alias v bash Shell. Existuje jednoduchý příkaz k vytištění, jaký příkaz bude alias spuštěn?

360
Casebash

K tomu je užitečný zabudovaný type. To vám nejen řekne o aliasech, ale také o funkcích, vestavěných slovech, klíčových slovech a externích příkazech.

$ 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;
        printf '%s\n' "$REPLY";
        grep --color=auto "[email protected]"
    }
}

type -a cmd zobrazí všechny příkazy pod tímto jménem v pořadí podle priority, což je užitečné pro výše uvedený alias ls, kde alias sám volá ls.

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

To vám řekne, že když spustíte ls, /bin/ls bude použito a --color=auto bude zahrnut do seznamu argumentů, kromě všech ostatních, které sami přidáte.

483
geirha

Stačí zadat alias, když jste na Shell Prompt. Měl by vydat seznam všech aktuálně aktivních aliasů.

Nebo můžete zadat alias [command] Chcete-li zjistit, k čemu je konkrétní alias přiřazen, jako příklad, pokud chcete zjistit, k čemu byl alias ls alias, můžete udělat alias ls.

178
Thomas Ward

Opravdu se mi líbí Ctrl+Alt+E jak jsem se poučil z tato odpověď . Rozšiřuje aktuálně zadaný příkazový řádek, což znamená, že provádí alias expanzi (mimo jiné).

Co to znamená? Změní jakýkoli alias, který by mohl být aktuálně zapsán na příkazovém řádku, na to, co alias znamená.

Například když napíšu:

$ ls

a poté stiskněte Ctrl+Alt+E, to se promění v

$ ls --time-style=locale --color=auto
58
Der Hochstapler

Přísně řečeno správná odpověď používá pole BASH_ALIASES, např .:

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

Můžete použít příkaz which.

Pokud nastavíte alias pro ls jako ls -al a potom zadejte which ls, uvidíš:

ls: aliased to ls -al.

3
user312471