Articles

Hvordan bruke aliaser på Linux-shell-kommandoer

Denne artikkelen er gjengitt fra boken En Praktisk Guide til Linux-Kommandoer, Redaktører, og Shell Programmering 3rd edition, med tillatelse fra forfatter og utgiver Prentice Hall, alle rettigheter reservert.

Et alias er en (vanligvis kort) navn som skallet oversettes til en annen (vanligvis lenger) navn eller kommando. Aliaser lar deg definere nye kommandoer ved å erstatte en streng for det første tegn på en enkel kommando. De er vanligvis plassert i ~/.bashrc (bash) eller ~/.,tcshrc (tcsh) oppstart-filer slik at de er tilgjengelig for interaktiv subshells.

Under bash-syntaksen av alias builtin er

alias ]

Under tcsh syntaksen er

alias ]

I bash syntaks uten mellomrom er tillatt, rundt likhetstegnet. Hvis verdien som inneholder mellomrom eller tabulatorer, må du vedlegge verdi i anførselstegn. I motsetning til aliaser under tcsh, en bash alias godtar ikke et argument fra kommandolinjen i verdi., Bruk en bash-funksjonen når du trenger å bruke et argument.

Et alias ikke erstatte seg selv, som unngår muligheten for uendelig recursion i å håndtere et alias for eksempel følgende:

alias ls='ls -F'

Du kan reir aliaser. Aliaser er deaktivert for interaktive skjell (som er, shell scripts). Bruk unalias built-in for å fjerne et alias., Når du gir en alias builtin kommandoen uten noen argumenter, shell-viser en liste over alle definerte aliaser:

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

for Å vise alias for et bestemt navn, skriver du inn kommandoen alias etterfulgt av navnet på den alias. De fleste Linux-distribusjoner definere minst noen aliaser. Skriv inn et alias-kommandoen til å se hvilke aliaser er i effekt. Du kan slette aliaser du ikke vil fra den aktuelle oppstart fil.,

Enkelt versus doble anførselstegn i aliaser

valg av single eller doble anførselstegn er viktig i alias syntaks når alias inneholder variabler. Hvis du setter verdien i doble anførselstegn, noen variabler som vises i verdi er utvidet når alias er opprettet. Hvis du setter verdien i enkle anførselstegn, variabler er ikke utvidet til alias brukes. Følgende eksempel illustrerer forskjellen.

PWD søkeord variabel holder banenavn av arbeidsmappe., Maks skaper to aliaser mens han arbeider på sin hjemmekatalog. Fordi han bruker doble anførselstegn når han skaper dirA alias, skallet erstatter verdien av arbeidsmappen når han skaper dette alias. Alias dirA kommandoen viser dirA alias og viser at substitusjonsbehandling har allerede funnet sted:

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

Når Maks skaper dirB alias, han bruker du enkle anførselstegn, som hindrer skallet fra utvide $PWD-variabelen., Alias dirB-kommandoen viser at dirB alias fortsatt har unexpanded $PWD variabel:

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

Etter å skape dirA og dirB aliaser, Maks bruker cd for å gjøre bilene sin arbeidsmappe og gir hver av de aliaser som en kommando. Alias-han er opprettet ved hjelp av doble anførselstegn viser navnet på den mappen som han skapte alias i som arbeidsmappe (som er feil)., I kontrast, den dirB alias viser det riktige navnet på arbeidsmappe:

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

TIPS: Hvordan hindre at skallet fra å anvende et alias

shell sjekker bare enkelt, unquoted kommandoer for å se om de er aliaser. Kommandoer gitt som relativ eller absolutt pathnames og sitert talekommandoer er ikke kontrollert. Når du ønsker å gi en kommando som har et alias, men ikke ønsker å bruke alias, skriv kommandoen med en omvendt skråstrek, angi kommando er absolutt banenavn, eller gi kommandoen som ./command.,

Eksempler på aliaser

følgende alias, kan du skriv inn r gjenta den forrige kommandoen eller r abc for å gjenta siste kommando linje som begynte med abc:

$ alias r='fc -s'

Hvis du bruker kommandoen ls -ltr ofte, kan du opprette et alias, som erstatter ls -ltr når du gir kommandoen l:

en Annen vanlig bruk av aliaser er å beskytte deg selv fra å gjøre feil., Følgende eksempel erstatter den interaktive versjonen av rm verktøy når du skriver inn kommandoen zap:

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

– jeg valet rm for å be deg om å bekrefte hver fil, som ville bli slettet, slik at du unngår å slette feil fil. Du kan også alias rm med rm -i kommando: alias rm='rm ‒i'.,

aliaser i neste eksempel føre til skallet til erstatning. ls -l hver gang du gir en ll kommando og ls ‒F hver gang du bruker ls.-F alternativet fører til ls for å skrive ut en skråstrek (/) i slutten av katalognavn og en stjerne (*) ved utgangen av navn av kjørbare filer.,

I dette eksempelet, strengen som erstatter den alias ll (ls ‒l) i seg selv inneholder et alias (ls). Når det erstatter et alias med sin verdi, shell ser på det første ordet i den nye strengen for å se om det er et alias. I forrige eksempel, den nye strengen inneholder alias ls, slik at andre innbytte skjer for å produsere den siste kommandoen ls ‒F ‒l., (For å unngå en rekursiv stupe, ls i den nye teksten, selv om et alias, er ikke utvidet en annen gang.)

Når er det gitt en liste over aliaser uten =value eller value – feltet, alias innebygde viser verdien av hver definert alias., alias innebygde rapporter en feil hvis et alias ikke har vært definert:

$ 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 unngå alias substitusjon av før aliased kommando med en omvendt skråstrek (\):

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

Fordi utskifting av et alias-navn med alias verdien ikke endre resten av kommandolinjen, argumenter er fortsatt mottatt av kommandoen er utført:

$ 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 fjerne et alias bruke unalias bygd inn., Når zap alias er fjernet, er det ikke lenger vises av alias builtin, og senere bruk av resulterer i en feilmelding:

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