Articles

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 lsdiv>.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 ‒lvé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