Sådan bruges aliaser i Linu.shell-kommandoer
Denne artikel er genoptrykt fra bogen En praktisk Guide til Linu. – kommandoer, redaktører og Shell programmering 3. udgave, med tilladelse fra forfatteren og udgiveren Prentice Hall, Alle rettigheder forbeholdes.
et alias er et (normalt Kort) navn, som skallen oversætter til et andet (normalt længere) navn eller kommando. Aliaser giver dig mulighed for at definere nye kommandoer ved at erstatte en streng for det første token af en simpel kommando. De er typisk placeret i ~/.bashrc (bash) eller~/.,tcshrc (tcsh) startfiler, så de er tilgængelige for interaktive subshells.
Under bash syntaks af alias er indbygget
alias ]
Under tcsh syntaksen
alias ]
I bash syntaks ingen mellemrum er tilladt omkring lighedstegnet. Hvis værdi indeholder mellemrum eller faner, skal du vedlægge værdi inden anførselstegn. I modsætning til aliaser under tcsh accepterer et bash-alias ikke et argument fra kommandolinjen i værdi., Brug en bash-funktion, når du skal bruge et argument.
Et alias ikke erstatte sig selv, der udelukker muligheden af en uendelig løkke i håndtering af et alias som følgende:
alias ls='ls -F'
Du kan indlejre aliaser. Aliaser er deaktiveret for ikke-interaktive skaller (det vil sige shell scripts). Brugunalias
indbygget for at fjerne et alias., Når du giver en alias
indbygget kommando uden nogen argumenter, skallen viser en liste over alle definerede aliaser:
$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'
for At få vist alias for et bestemt navn, skal du indtaste kommandoen alias efterfulgt af navnet på alias. De fleste Linu. – distributioner definerer mindst nogle aliaser. Indtast en alias-kommando for at se, hvilke aliaser der er i kraft. Du kan slette de aliaser, du ikke ønsker, fra den relevante startfil.,
enkelt versus dobbelt anførselstegn i aliaser
valget af enkelt-eller dobbelt anførselstegn er signifikant i aliassynta .en, når aliaset indeholder variabler. Hvis du vedlægger værdi inden for dobbelt anførselstegn, udvides alle variabler, der vises i værdi, når aliaset oprettes. Hvis du vedlægger værdi inden for enkelte anførselstegn, udvides variabler ikke, før aliaset bruges. Det følgende eksempel illustrerer forskellen.
p .d-nøgleordsvariablen indeholder stienavnet på arbejdsmappen., Ma.opretter to aliaser, mens han arbejder i sin hjemmemappe. Fordi han bruger dobbelt anførselstegn, når han opretter dira-aliaset, erstatter skallen værdien af arbejdsmappen, når han opretter dette alias. Kommandoen alias dirA viser dira-aliaset og viser, at substitutionen allerede har fundet sted:
$ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max'
Når Ma.opretter dirB-aliaset, bruger han enkelte anførselstegn, som forhindrer skallen i at udvide $p .d-variablen., Alias dirB kommando viser, at dirB alias stadig holder den ikke-udvidet $PWD variabel:
$ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'
Efter at skabe dirA og dirB aliaser, Max bruger cd
for at gøre biler sin arbejdsmappe og giver hver af de aliaser som en kommando. Det alias, han oprettede ved hjælp af dobbelt anførselstegn, Viser navnet på det bibliotek, han oprettede aliaset I som arbejdsmappe (hvilket er forkert)., I modsætning hertil viser dirB-aliaset det rigtige navn på arbejdsmappen:
$ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars
TIP: Sådan forhindres skallen i at påkalde et alias
skallen kontrollerer kun enkle, ikke-noterede kommandoer for at se, om de er aliaser. Kommandoer givet som relative eller absolutte stinavne og citerede kommandoer er ikke markeret. Når du vil give en kommando, der har et alias, men ikke vil bruge aliaset, skal du gå forud for kommandoen med et backslash, angive kommandos absolutte stinavn eller give kommandoen som ./command
.,
Eksempler på aliaser
følgende alias giver dig mulighed for at skrive r
for at gentage den foregående kommando eller r abc
for at gentage den sidste kommando, der begyndte med abc:
$ alias r='fc -s'
Hvis du bruger kommandoen ls -ltr
ofte, kan du oprette et alias, der erstatter ls -ltr
, når du giver kommandoen l
:
et Andet fælles brug af aliaser er at beskytte dig mod fejl., Følgende eksempel erstatter den interaktive version af rm
utility, når du indtaster kommandoen zap
:
$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n
– jeg mulighed medfører rm
for at bede dig om at bekræfte hver enkelt fil, som ville blive slettet, og derved hjælpe dig med at undgå at slette den forkerte fil. Du kan også alias rm
med rm -i
kommando: alias rm='rm ‒i'
.,
aliasser i det næste eksempel, vil forårsage tanken at erstatte ls -l
hver gang, du giver en ll
kommando og ls ‒F
hver gang du bruger ls
.Indstillingen -F
forårsager ls
for at udskrive en skråstreg ( / ) i slutningen af mappenavne og en stjerne ( * ) i slutningen af navnene på eksekverbare filer.,
i dette eksempel indeholder strengen, der erstatter aliaset ll
(ls ‒l
) selv et alias (ls
). Når det erstatter et alias med dets værdi, ser skallen på det første ord i erstatningsstrengen for at se, om det er et alias. I det foregående eksempel indeholder erstatningsstrengen aliaset ls
, så der sker en anden substitution for at producere den endelige kommando ls ‒F ‒l
., (For at undgå et rekursivt Spring udvides ls
i erstatningsteksten, selvom et alias, ikke en anden gang.)
når der gives en liste over aliaser uden =value
eller value
– feltet, viser alias
builtin værdien af hvert defineret alias., alias
indbyggede rapporter en fejl, hvis et alias er ikke blevet defineret:
$ 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 undgå alias substitution ved at foranstille alias kommandoen med en omvendt skråstreg (\
):
$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir
på Grund af udskiftning af et alias navn med alias værdi ikke ændre resten af kommandolinjen, alle argumenter er endnu ikke modtaget ved den kommando, der udføres:
$ 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 dæknavn unalias
indbygget., Når aliasap-aliaset fjernes, vises det ikke længere af alias
builtin, og dets efterfølgende brug resulterer i en fejlmeddelelse:
$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found