Articles

Så här använder du alias i Linux shell-kommandon

den här artikeln är omtryckt från boken En praktisk Guide till Linux-kommandon, redaktörer och Skalprogrammering 3rd edition, med tillstånd av författaren och utgivaren Prentice Hall, All rights reserved.

ett alias är ett (vanligtvis Kort) namn som skalet översätter till ett annat (vanligtvis längre) namn eller kommando. Alias kan du definiera nya kommandon genom att ersätta en sträng för den första token av ett enkelt kommando. De placeras vanligtvis i ~/.bashrc (bash) eller ~/.,tcshrc (tcsh) startfiler så att de är tillgängliga för interaktiva subshells.

under bash är syntaxen för aliaset builtin

alias ]

under tcsh är syntaxen

alias ]

i bash-syntaxen är inga mellanslag tillåtna runt equal-tecknet. Om värdet innehåller mellanslag eller flikar måste du bifoga värde inom citattecken. Till skillnad från Alias under tcsh accepterar ett bash-alias inte ett argument från kommandoraden i värde., Använd en bash-funktion när du behöver använda ett argument.

ett alias ersätter inte sig själv, vilket undviker möjligheten till oändlig rekursion vid hantering av ett alias som följande:

alias ls='ls -F'

Du kan häva Alias. Alias är inaktiverade för icke-interaktiva skal (det vill säga skalskript). Användunalias – byggnaden för att ta bort ett alias., När du ger ett alias inbyggt kommando utan några argument visar skalet en lista över alla definierade Alias:

$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'

om du vill visa alias för ett visst namn anger du kommandot alias följt av namnet på alias. De flesta Linux-distributioner definierar åtminstone några Alias. Ange ett aliaskommando för att se vilka alias som gäller. Du kan ta bort Alias du inte vill ha från lämplig startfil.,

enkla kontra dubbla citattecken i alias

valet av enkla eller dubbla citattecken är signifikant i aliassyntaxen när aliaset innehåller variabler. Om du bifogar värde inom dubbla citattecken utökas alla variabler som visas i värde när aliaset skapas. Om du omsluter värdet inom enskilda citattecken utökas variablerna inte förrän aliaset används. Följande exempel illustrerar skillnaden.

sökordsvariabeln PWD innehåller sökvägen till arbetskatalogen., Max skapar två Alias medan han arbetar i sin hemkatalog. Eftersom han använder dubbla citattecken när han skapar Dira-aliaset, ersätter skalet värdet på arbetskatalogen när han skapar detta alias. Kommandot alias dirA visar Dira-aliaset och visar att substitutionen redan har ägt rum:

 $ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max' 

När Max skapar dirb-aliaset använder han enstaka citattecken, vilket förhindrar att skalet utökar $PWD-variabeln., Kommandot alias dirB visar att dirb-aliaset fortfarande innehåller den oexpanderade $ PWD-variabeln:

 $ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'

Efter att ha skapat Dira-och dirB-aliasen använder Maxcd för att göra bilar till sin arbetskatalog och ger var och en av alias som ett kommando. Aliaset han skapade med dubbla citattecken Visar namnet på den katalog han skapade aliaset i som arbetskatalogen (vilket är fel)., DirB-aliaset visar däremot det korrekta namnet på arbetskatalogen:

 $ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars

tips: så här förhindrar du att skalet anropar ett alias

skalet kontrollerar bara enkla, ociterade kommandon för att se om de är Alias. Kommandon som ges som relativa eller absoluta sökvägar och citerade kommandon kontrolleras inte. När du vill ge ett kommando som har ett alias men inte vill använda aliaset, föregå kommandot med ett backslash, ange kommandos absoluta sökväg eller ge kommandot som ./command.,

exempel på Alias

följande alias gör att du kan skriva r för att upprepa föregående kommando eller r abc för att upprepa den sista kommandoraden som började med abc:

$ alias r='fc -s'

om du använder kommandot ls -ltr ofta kan du skapa ett alias som ersätter ls -ltr när du ger kommandot l:

en annan vanlig användning av alias är att skydda dig mot misstag., Följande exempel ersätter den interaktiva versionen av verktygetrm när du anger kommandot zap:

$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n

alternativet-i orsakar rm att be dig att verifiera varje fil som skulle raderas, vilket hjälper dig att undvika att ta bort fel fil. Du kan också aliasrm med kommandotrm -i:alias rm='rm ‒i'.,

alias i nästa exempel får skalet att ersättals -l varje gång du ger ettll kommando ochls ‒F varje gång du använderls.Alternativet-F orsakarls att skriva ut ett snedstreck (/) i slutet av katalognamn och en asterisk (*) i slutet av namnen på körbara filer.,

i det här exemplet innehåller strängen som ersätter aliasetll (ls ‒l) ett alias (ls). När det ersätter ett alias med dess värde ser skalet på det första ordet i ersättningssträngen för att se om det är ett alias. I föregående exempel innehåller ersättningssträngen aliaset ls, så en andra substitution uppstår för att producera det slutliga kommandot ls ‒F ‒l., (För att undvika ett rekursivt dopp utökas inte ls I ersättningstexten, även om ett alias, en andra gång.=value ellervalue fältet alias builtin visar värdet för varje definierat alias., alias builtin rapporterar ett fel om ett alias inte har definierats:

$ 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

Du kan undvika aliasersättning genom att föregå det aliaserade kommandot med ett backslash (\):

$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir

eftersom byte av alias inte har definierats.ett aliasnamn med aliasvärdet ändrar inte resten av kommandoraden, några argument tas fortfarande emot av kommandot som körs:

$ 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*

Du kan ta bort ett alias med hjälp av unalias builtin., När zap-aliaset tas bort visas det inte längre av alias builtin, och dess efterföljande användning resulterar i ett felmeddelande:

$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found