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