Jak používat aliasy v Linux shell příkazy
Tento článek je přetištěn z knihy Praktický Průvodce pro Linux Commands, Editors, and Shell Programming 3rd edition, se svolením autora a vydavatele, Prentice Hall, všechna práva vyhrazena.
alias je (obvykle krátký) název, který shell překládá do jiného (obvykle delšího) jména nebo příkazu. Aliasy umožňují definovat nové příkazy nahrazením řetězce pro první token jednoduchého příkazu. Obvykle jsou umístěny v~/.bashrc (bash) nebo ~/.,spouštěcí soubory tcshrc (tcsh) tak, aby byly k dispozici interaktivním podsložkám.
V bash syntaxe alias builtin je
alias ]
Pod tcsh syntaxe je
alias ]
V bash syntaxe nesmí obsahovat žádné mezery po znaménko rovná se. Pokud hodnota obsahuje mezery nebo karty, musíte hodnotu uzavřít do uvozovek. Na rozdíl od aliasů pod tcsh, Bash alias nepřijímá argument z příkazového řádku v hodnotě., Použijte funkci bash, když potřebujete použít argument.
alias nenahrazuje sám, což vylučuje možnost, nekonečná rekurze při manipulaci alias, jako je například následující:
alias ls='ls -F'
můžete hnízdo aliasy. Aliasy jsou zakázány pro neinteraktivní skořápky(tj. Použijteunalias
builtin odstranit alias., Když dáte alias
builtin příkaz bez argumentů, shell zobrazí seznam všech definovaných aliasů:
$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'
zobrazit alias pro konkrétní jméno, zadejte příkaz alias následuje název alias. Většina linuxových distribucí definuje alespoň některé aliasy. Zadejte příkaz alias, abyste zjistili, které aliasy jsou platné. Aliasy, které nechcete, můžete odstranit z příslušného spouštěcího souboru.,
jednoduché versus dvojité uvozovky v aliasech
volba jednoduchých nebo dvojitých uvozovek je významná v syntaxi aliasu, pokud alias obsahuje proměnné. Pokud vložíte hodnotu do dvojitých uvozovek, všechny proměnné, které se objeví v hodnotě, se při vytvoření aliasu rozšíří. Pokud vložíte hodnotu do jednotlivých uvozovek, proměnné se nerozšíří, dokud nebude použit alias. Následující příklad ukazuje rozdíl.
proměnná klíčových slov PWD obsahuje název cesty pracovního adresáře., Max vytváří dvě aliasy, zatímco pracuje ve svém domovském adresáři. Protože používá dvojité uvozovky, když vytváří alias dirA, shell nahrazuje hodnotu pracovního adresáře, když vytvoří tento alias. Alias dirA příkaz zobrazí dirA alias a ukazuje, že substituční již proběhla:
$ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max'
Při Max vytváří dirB alias, používá jednoduché uvozovky, které brání shell z rozšíření $PWD proměnné., Alias dirB příkaz ukazuje, že dirB alias stále drží neexpandované $PWD proměnné:
$ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'
Po vytvoření dirA a dirB aliasy, Max používá cd
, aby se auta jeho pracovní adresář a dává každému z přezdívky jako příkaz. Alias, který vytvořil pomocí dvojitých uvozovek, zobrazuje název adresáře, ve kterém vytvořil alias jako pracovní adresář (což je špatné)., V kontrastu, dirB alias se zobrazí správný název pracovní adresář:
$ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars
TIP: Jak, aby se zabránilo shell z vyvolání alias
shell kontroluje pouze jednoduché, nekótované příkazy, aby zjistili, zda jsou aliasy. Příkazy zadané jako relativní nebo absolutní názvy cest a citované příkazy nejsou kontrolovány. Když chcete, aby příkaz, který má alias, ale nechcete použít alias, předcházet příkaz s lomítkem, zadejte příkaz je absolutní cesta, nebo dát příkaz jako ./command
.,
Příklady aliasů
následující alias umožňuje zadat r
opakujte předchozí příkaz nebo r abc
opakovat poslední příkaz řádek, který začal s abc:
$ alias r='fc -s'
Pokud použijete příkaz ls -ltr
často, můžete vytvořit alias, který náhražky ls -ltr
když dáš příkaz l
:
Další běžné použití aliasů je chránit se z chyb., Následující příklad nahradí interaktivní verze rm
utility, když zadáte příkaz zap
:
$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n
– jsem způsobí, že rm
požádat, abyste ověřit každý soubor, který by být odstraněny, a tím pomáhá vyhnout smazání nesprávný soubor. Můžete také alias rm
rm -i
příkaz: alias rm='rm ‒i'
.,
aliasy v následujícím příkladu způsobí, že shell nahradit ls -l
pokaždé, když dát ll
příkaz ls ‒F
pokaždé, když používáte ls
.-F
způsobí, že ls
tisk lomítko (/) na konci názvy adresářů a hvězdičku (*) na konci jména spustitelné soubory.,
V tomto příkladu je řetězec, který nahradí alias ll
(ls ‒l
) sám o sobě obsahuje alias (ls
). Když nahradí alias svou hodnotou, shell se podívá na první slovo náhradního řetězce, aby zjistil, zda se jedná o alias. V předchozím příkladu, náhradní řetězec obsahuje alias ls
, tak druhá substituce dochází k výrobě konečného příkazu ls ‒F ‒l
., (Aby se zabránilo rekurzivnímu propadu, ls
v náhradním textu, i když alias, není rozšířen podruhé.)
Když daný seznam aliasů bez =value
nebo value
pole alias
builtin zobrazuje hodnotu každého definován alias., alias
builtin hlásí chybu, pokud alias není definován.
$ alias ll l ls zap wx alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i' bash: alias: wx: not found
můžete vyhnout alias nahrazení předcházejících alias příkazu s lomítkem (\
):
$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir
Protože nahrazení název aliasu alias hodnota nemění zbytek příkazového řádku, jakékoliv argumenty jsou stále obdržel příkaz, který je spuštěn:
$ ll f* -rw-r--r--. 1 max pubs 641 04-01 08:12 fixtax.icn -rw-r--r--. 1 max pubs 30015 03-01 14:24 flute.ps -rwxr-xr-x. 1 max pubs 485 09-21 08:03 floor*
můžete odstranit alias, pomocí unalias
builtin., Když zap alias je odstraněn, je již zobrazena pomocí alias
builtin, a jeho následné využití výsledků v chybová zpráva:
$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found