/ Snaží sa pochopiť význam pojmu "alias" syntax nejakého príkazu - bash, alias

Snažím sa pochopiť význam "aliasu" some-command "syntax - bash, alias

Č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ď č. 1

Toto 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.