Hogyan kell használni álnevek Linux shell parancsok
Ez a cikk utánnyomást a könyv gyakorlati útmutató Linux parancsok, szerkesztők, és Shell programozás 3. kiadás, engedélyével a szerző és kiadó Prentice Hall, Minden jog fenntartva.
az alias egy (általában rövid) név,amelyet a shell egy másik (általában hosszabb) névre vagy parancsra fordít. Az álnevek lehetővé teszik az új parancsok meghatározását egy karakterlánc helyettesítésével egy egyszerű parancs első tokenjéhez. Ezek általában a ~/ – ba kerülnek.bashrc (bash) vagy ~/.,tcshrc (tcsh) indítási fájlokat úgy, hogy azok rendelkezésre állnak az interaktív subshells.
alatt bash a szintaxis az alias builtin
alias ]
alatt tcsh a szintaxis
alias ]
a Bash szintaxisban nincs szóköz az egyenlő jel körül. Ha az érték szóközöket vagy lapokat tartalmaz, akkor az értéket idézőjelbe kell helyezni. A tcsh aliasokkal ellentétben a Bash alias nem fogad el argumentumot az érték parancssorából., Használjon Bash funkciót, ha argumentumot kell használnia.
álnév nem helyettesíti magát, amely kizárja annak a lehetőségét, végtelen rekurzió kezelése álnevet, mint például a következő:
alias ls='ls -F'
a fészek álneve. Az álnevek nem interaktív héjak (azaz shell szkriptek) esetén le vannak tiltva. Az alias eltávolításához használja a unalias
builtint., Ha argumentumok nélkül ad meg egy alias
builtin parancsot, a shell megjeleníti az összes definiált álnév listáját:
$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'
egy adott név aliasának megtekintéséhez írja be az alias parancsot, amelyet az alias neve követ. A legtöbb Linux disztribúció legalább néhány álnevet határoz meg. Adjon meg egy alias parancsot, hogy megtudja, mely álnevek vannak érvényben. Törölheti a nem kívánt álneveket a megfelelő indítási fájlból.,
Single versus double idézőjelek álnevekben
az egy-vagy kettős idézőjelek kiválasztása jelentős az alias szintaxisában, ha az alias változókat tartalmaz. Ha az értéket kettős idézőjelbe helyezi, az értékben megjelenő változók kibővülnek az alias létrehozásakor. Ha az értéket egyetlen idézőjelen belül csatolja, a változók nem bővülnek, amíg az alias nem kerül felhasználásra. A következő példa szemlélteti a különbséget.
a PWD kulcsszó változó a munkakönyvtár elérési útját tartalmazza., Max két álnevet hoz létre, miközben az otthoni könyvtárában dolgozik. Mivel kettős idézőjeleket használ a dirA alias létrehozásakor, a héj helyettesíti a munkakönyvtár értékét, amikor létrehozza ezt az álnevet. A dira alias parancs megjeleníti a dirA alias-t, és azt mutatja, hogy a helyettesítés már megtörtént:
$ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max'
amikor Max létrehozza a dirB alias-t, egyetlen idézőjelet használ, ami megakadályozza, hogy a shell bővítse a $PWD változót., Az alias dirB parancs megmutatja, hogy a dirB alias még mindig tartja a ki nem bontott $PWD változó:
$ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'
létrehozása Után a dirA, valamint dirB álneve, Max használja a cd
, hogy az autók a könyvtárban, illetve adja, minden álneve, mint egy parancs. A kettős idézőjelekkel létrehozott alias megjeleníti annak a könyvtárnak a nevét, amelyben létrehozta az alias-t, mint munkakönyvtárat (ami rossz)., Ezzel szemben a dirB alias megjeleníti a munkakönyvtár megfelelő nevét:
$ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars
tipp: hogyan lehet megakadályozni, hogy a shell hivatkozzon egy
álnévre. A relatív vagy abszolút pathnames-ként megadott parancsok és az idézett parancsok nem kerülnek ellenőrzésre. Ha olyan parancsot szeretne adni, amelynek álneve van, de nem akarja használni az alias-t, akkor előzze meg a parancsot egy visszalépéssel, adja meg a parancs abszolút elérési útját, vagy adja meg a parancsot ./command
.,
Példa alias
A következő alias lehetővé teszi, hogy az r
, hogy ismételje meg az előző parancsot, vagy r abc
megismételni az utolsó parancssori kezdődött, abc:
$ alias r='fc -s'
Ha a parancs ls -ltr
gyakran, létrehozhat egy álnév, hogy a helyettesítő ls -ltr
mikor adja ki a parancsot a l
:
egy Másik gyakori használata álneve, hogy megvédje magát a hibákat., A következő példa a helyettesítő interaktív változata a rm
utility mikor adja ki a parancsot a zap
:
$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n
A-i opció okoz rm
kérdezni, hogy ellenőrizze, minden fájl törölhető, ezáltal segít elkerülni törli a hibás fájlt. A rm
alias a rm -i
parancs: alias rm='rm ‒i'
.,
a következő példában szereplő álnevek miatt a héj helyettesíti a ll
parancsot és ls ‒F
minden alkalommal, amikor ls
div>.A-F
opció miattls
a könyvtárnevek végén egy perjel ( / ), a végrehajtható fájlok nevének végén pedig egy csillag (*) nyomtat.,
ebben a példában a ll
(ls ‒l
) álnevet helyettesítő karakterlánc maga is tartalmaz (ls
). Amikor egy álnevet helyettesít az értékével, a héj a helyettesítő karakterlánc első szavára néz, hogy megnézze, hogy álnév-e. Az előző példában a helyettesítő karakterlánc a ls
álnevet tartalmazza, így egy második helyettesítés történik a ls ‒F ‒l
végső parancs előállításához., (A rekurzív merülés elkerülése érdekében als
a helyettesítő szövegben, bár álnév, másodszor nem bővül.)
Ha a =value
vagy value
mező nélküli álnevek listáját adja meg, akkor a alias
a builtin megjeleníti az egyes meghatározott álnevek értékét., A alias
beépített jelentések hiba, ha álnév nem határozták meg:
$ 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
lehet elkerülni alias helyettesítő által megelőző aliased parancs egy backslash-t (\
):
$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir
Mert a csere alias név az alias érték nem változik, a többi a parancssorban, érveket még nem érkezett a parancs, amely végre:
$ 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*
akkor távolítsa el az álnév használata a unalias
beépített., A zap alias eltávolításakor a alias
builtin már nem jelenik meg, későbbi használata hibaüzenetet eredményez:
$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found