Čo robí potrubie alias
príkaz tu znamená?
$ alias which="alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde"
odpovede:
3 pre odpoveď č. 1Toto je (neprenosný) hack umožňujúci GNU which
snažte sa správať skôr type
.
Volá sa bash vstavaný nástroj na zobrazovanie nielen externých umiestnení príkazov, ale aj prezývok, funkcií atď type
, Pri volaní pomocou aliasu (alebo funkcie shellu) vyšle jeho definíciu:
$ type ls
ls is aliased to `ls --color=auto"
pretože which
je externý príkaz, nemá nijaké informácie o aliasoch ... pokiaľ oni sú kŕmení na stdin:
$ alias # we have some aliases defined...
alias ls="ls --color=auto"
alias some-other-alias="whatever"
$ which ls # but which doesn"t know about them...
/usr/bin/ls
$ alias | which --read-alias ls # *unless* we feed the definitions to it via stdin
alias ls="ls --color=auto"
/usr/bin/ls
Ako vidíte vyššie, which --read-alias
prehľadá jeho stdin (predpokladá sa, že ide o zoznamaliasy) pre definíciu aliasu, ktorá vyzerá, že sa zhoduje s daným príkazom a vydáva ho na jeho výstupe. Tieto definície získava z výstupu zabudovaného do shellu alias
príkaz, ktorý ich vysiela, keď je volaný bez argumentov.
Toto je stále horšie a mali by ste ho používať type
namiesto toho vždy, keď viete, že váš shell je bash. na rozdiel od which
, type
vie o funkciách shellu; vie o vyhľadávaní PATH v pamäti; je zaručené, že bude k dispozícii všade, kde je nainštalovaný bash (na rozdiel od GNU which
, ktorá je predvolene nedostupná na platformáchktoré majú nástroje užívateľskej krajiny, ktoré nie sú GNU, ako napríklad MacOS alebo FreeBSD); a dokáže urobiť všetko interné v škrupine bez toho, aby bolo potrebné vytvárať externý softvér.