Hvordan oprettes aliaser og shell-funktioner på Linux?

At kende kommandoprompterne og shell-scripts er stadig nødvendigt, hvis du vil få mest muligt ud af GNU / Linux-systemet, og jo mere man opererer på kommandolinjen, jo mere vil man opdage, at størstedelen af ​​de kommandoer, der bruges, er meget lille delmængde af de tilgængelige kommandoer. De fleste opgaver er sædvanlige, og den bruger du kan køre disse på samme måde hver dag.

Mens producenterne af mange af de mest almindelige kommandoprogrammer har forsøgt at eliminere fremmede skrivning ved hjælp af forkortede navne, f.eks. i stedet for listen skriver vi “ls”& I stedet for ændringsmappe skriver vi“cd”. Derudover har mange Linux-brugere ofte brug for en kommando igen og igen. At skrive / kopiere den samme kommando igen og igen reducerer produktiviteten og distraherer brugeren fra det faktiske arbejde.

Det ville være dejligt, hvis vi bruger mindre tid på at skrive disse lange kommandoer. Vi har to effektive måder at minimere din tid på kommandolinjen er skalaliaser og funktioner, ved hjælp af disse to kan brugeren tæmme gentagne opgaver, forkorte lange processer og konfigurere tilpassede kommandoer med de muligheder, som brugeren altid bruger og kæmper for at huske.

Du kan definere dine kommandoer, der passer til dine specifikke behov, og for at lette byrden ved gentagne opgaver.

Aliaser og shell-scripts, dvs. funktioner udfører den samme slags job. De giver dig mulighed for at definere - og navngive - et sæt Bash-skalfunktionalitet, der derefter kan kaldes med det navn, du har givet det. At skrive navnet er lettere og mere praktisk end at skulle indtaste alle trin eller kommandoer hver gang du vil bruge dem.

Forskellen mellem et alias og en funktion er en af ​​kompleksitet og skala. Scripts er bedre til at holde længere og mere detaljerede kodestykker. Aliaser er perfekte til at holde kortere, mere kortfattede sæt kommandoer.

Shell-aliasser

Et shell-alias er en brugerdefineret genvej til reference til en kommando eller et sæt kommandoer, der udføres med eller uden brugerdefinerede indstillinger. Disse aliasser er alternative, let at huske navne til lange kommandoer, som du ofte skal udføre. Når du skriver på kommandolinjen, ser skallen først efter, hvad du skrev i sin liste over aliasser. Hvis der findes et match, erstattes det af aliaset med dets tilsvarende tekst; efter at have afsluttet det, ville det igen se på hele den resulterende kommandolinje og udføre den.

Chancerne er, at du måske allerede har brugt aliaser på Linux-systemet, da de fleste Linux-distributioner tilføjer mindst nogle af de populære aliaser som standard i “.bashrc ” brugerkontoens fil.

Ud over aliaser: Shell-funktioner

Blokke med lignende, men ikke identiske koder, kan ikke erstattes af aliaser. De kan ikke håndtere fejl eller returnere brugerdefinerede udgangskoder, udføre flowkontrol eller bruge variabler. Hvis du har brug for at gøre noget af dette, er det tid til at bruge skalfunktioner.

Shell-funktioner er kodeblokke struktureret som komplette sub-scripts, skrevet en gang og påberåbt fra ethvert script, der har brug for det.

Syntaks for aliaser:

Oprettelse af aliasser i bash er meget ligetil. Syntaksen er som følger:

alias alias_name = ”command_to_run”

For at oprette et nyt bash-alias i den aktuelle session

  1. Indtast “alias
  2. Angiv derefter aliasnavnet
  3. Efterfulgt af et lighedstegn
  4. Og kommandoen, der kører, når aliaset kaldes.

Kommandoen skal være indeholdt i anførselstegn og uden mellemrum omkring lighedstegnet. Pladser her bryder kommandoen. Hvert alias skal erklæres på en ny linje.

Lad os få det afklaret med eksemplet. På Linux-kommandolinjen er en af ​​de mest anvendte kommandoer “ls”. For det meste bruges "ls" -kommandoen med "la”Switch, der viser alle filer og mapper med skjulte filer i formatet på den lange liste. Nu opretter vi et simpelt bash-alias “ll”Som vil være en genvej tills -la kommando.

  1. Åbn en terminalvindue
  2. Type:
    alias ll = "ls -la"

    & tryk gå ind

  3. Nu i konsol-typen “ll”Og tryk på gå ind
  4. Outputtet vil være det samme som ved at skrive ls -la.

Ovenstående definerede alias “ll” vil kun være tilgængeligt i den aktuelle shell-session. Hvis du lukker sessionen eller et nyt sessionsvindue startet fra en anden terminal, vil det ovenfor definerede alias “ll” ikke være tilgængeligt.

Vi vil diskutere det senere om, hvordan man gør aliaset vedvarende. Eksemplerne her er til bash shell, men alle koncepter og det meste af koden er også gyldige for andre skaller.

Foruddefinerede aliasser

Nogle aliasser er foruddefineret til dig. For at kende listen over alle aliasser, der er defineret i systemet, bruger vi kommandoen "alias" uden nogen parametre:

alias

Dette er aliaserne på Ubuntu-testmaskinen, som denne artikel blev undersøgt om. Også tilpassede aliasser vises også på denne liste.

Der er en masse forskellige aliaser til ls-kommandoen, og der er en gruppe aliaser, der giver farveoutput til grep-familien af ​​kommandoer, f.eks. med aliasser defineret som ovenfor, når du skriver:

grep

Det fortolkes som:

grep --farve = auto

Dette viser et vigtigt punkt med aliaser. De kan have samme navn som eksisterende kommandoer. De kan endda indeholde den oprindelige kommando i sig selv.

Her er definitionen af ​​grep-aliaset.

alias grep = 'grep --farve = auto'
  1. Alias-kommandoen bruges til at definere et alias.
  2. Navnet på aliaset gives derefter. I dette eksempel er det “grep”.
  3. Ligetegnet forbinder aliasets navn tillegeme af aliaset. For alle undtagen meget enkle aliasser er aliasets krop omgivet af enkelt anførselstegn '.
  4. Aliasets krop er det afsnit, der udføres, når aliaset bruges på kommandolinjen.
  5. Kroppen af ​​dette alias kalder simpelthen grep-kommandoen med indstillingen –color = auto.

Alarmen Alias

Øverst på listen er der et kompliceret alias kaldetalert. Som en hurtig til side, og så du ved, hvad den gør, bruges alarmaliaset til at fortælle dig, når en kommando er afsluttet. Det angiver også, om kommandoen blev fuldført med succes eller ej. Det giver en grafisk systemalarm øverst på skærmen.

Her er et simpelt eksempel. Søvnkommandoen vil sove i fem sekunder. Alarmaliaset kaldes derefter op. Aliaset kontrollerer svaret fra den forrige kommando. Det udtrækker den sidste kommando fra historikfilen. Det bestemmer, om kommandoen blev gennemført med succes eller ej. Derefter præsenteres resultaterne i en systemalarm.

Hvis kommandoen blev udført som forventet, er ikonet i systemalarmen et lille terminalvindue. Hvis kommandoen returnerede en fejlkode, er ikonet i systemalarmen et rødt fejlikon.

sove 5; alert

Efter fem sekunder ser vi denne systemadvarsel:

Ikonet er et lille terminalvindue, hvilket betyder, at alt gik godt. Lad os prøve det igen med en kommando, som vi ved, vil mislykkes:

DoomedToFail; alert

Vores systemadvarsel har nu et fejlikon.

Definition af et trivielt alias

Som vi har set, for at definere et alias, bruger vi alias-kommandoen.

Vi opretter et pseudonym for den klare kommando. Vores alias kaldes cls, og det kalder den klare kommando.

Vores alias-definition er så trivielt, at det ikke berettiger til at blive pakket ind i enkelte anførselstegn. Hvis aliasets krop er mere komplekst end dette, eller hvis det indeholder mellemrum, skal du pakke det ind i enkelte citater. Vi definerer aliaset, bruger ls til at lægge noget output i terminalvinduet og bruger derefter vores nye alias cls til at rydde skærmen.

alias cls = klart ls -l cls

Skærmen er ryddet. Succes, omend kortvarig. Aliaset vil kun overleve, så længe dette terminalvindue forbliver åbent. Når vinduet er lukket, forsvinder aliaset.

For at gøre aliaser permanente ved hjælp af ".bashrc" -filen

Du undrer dig måske over, hvor de færdigpakkede aliasser er defineret. det er i ".bashrc" -filen i din hjemmemappe. Denne fil læses, og kommandoerne inde i den udføres, hver gang du starter en interaktiv shell. Det er når du åbner et terminalvindue.

Skriv følgende kommando i din hjemmemappe for at se indholdet af ".bashrc" -filen med syntaksfremhævning.

gedit .bashrc

Dette vil startegediteditor med filen ".bashrc" indlæst i den.

De fremhævede områder viser to områder, hvor aliasser er defineret.

Rulning gennem dokumentet afslører to andre sektioner relateret til aliasser:

Den første af disse er definitionen af ​​alarmaliaset. Den anden er en if-erklæring. Det oversættes til, "hvis filen".bash_aliases”Eksisterer, læs det ind.”

Hvis du kun har et par aliasser, som du vil definere, kan du placere dem i din ".bashrc" -fil. Stik dem ind under sektionen, der indeholder ls-aliaserne.

Hvis du vil oprette mange aliaser, eller du bare kan lide ideen om at få dine aliaser indkapslet i den egen fil, kan du definere dem i din ".bash_aliases" -fil. En fordel ved at oprette dem i din ".bash_aliases" -fil er, at du ikke ved et uheld kan ændre nogen af ​​indstillingerne i ".bashrc" -filen. En anden fordel er, at dine aliasser let kopieres til nye systemer, fordi de adskilles fra ".bashrc" -filen.

Aliaset skal navngives på en måde, der er let at huske. Det anbefales også at tilføje en kommentar til fremtidig reference.

Lagring af aliasser i .bash_aliases-filen

Filen “.bash_aliases” findes ikke som standard, du bliver nødt til at oprette den. Du kan oprette filen med denne kommando:

tryk på .bash_aliases

Lad os redigere filen og tilføje et par aliaser til den. Denne kommando åbner filen ".bash_aliases" i gedit-editoren.

gedit .bash_aliases

Vi har tilføjet tre aliasser. Den første er voresclsalias, som vi brugte tidligere. Den næste kaldesh. og er en stenografisk måde at kalde kommandoen historie på.

Det tredje alias kaldesftc. Dette står for "antal filtyper."

Dette alias er mere involveret, så det er pakket med enkelt anførselstegn. Det bruger en kæde af kommandoer, der er bundet sammen af ​​rør. Det producerer en sorteret liste over de forskellige filtypenavne og katalognavne med et antal for hver listeindgang.

Når vi har gemt ".bash_aliases" -filen, kan vi forvente, at vores aliaser er live og tilgængelige. Det er ikke tilfældet. Filen skal læses af Bash-skalen, inden aliasdefinitionerne er live. Dette gøres, når en interaktiv skal åbnes.

Vi kan også bruge den indbyggede Bash-skal. for at læse og udføre kommandoerne i en fil. Fordi vores ".bash_alias" -fil læses ind, når ".bashrc" behandles, bør vi udføre vores test ved at kalde ".bashrc". På den måde kan vi kontrollere, at ".bash_alias" -filen kaldes fra ".bashrc", og at vores aliaser lever og har det godt.

De kommandoer, vi har brugt, er:

gedit .bash_aliases

For at redigere filen ".bash_aliases".

. .bashrc

Dette vil læse ind og udføre kommandoerne inden for ".bashrc", som kalder ".bash_aliases".

ftc

Dette kalder ftc-aliaset.

Vores alias reagerer, hvilket betyder, at Bash har læst i både ".bashrc" og ".bash_aliases", og vores nye aliaser er nu live.

Du kan nu fortsætte og tilføje nye aliasser til ".bash_aliases" -filen, når de optræder for dig. Hvis du finder ud af, at du gør ting mere end en eller to gange, kan du overveje at oprette et alias for det.

Fjernelse af aliasser

Der er en kommando til at fjerne aliasser, så Bash ikke genkender dem eller reagerer på dem. Forfriskende direkte kaldes kommandoenunalias.

For at bruge det skal du give navnet på det alias, du vil have Bash til at glemme. For at få Bash til at glemme vores ftc-alias, brug unalias f.eks. den tidligere anvendte “ll”Kommando:

unalias ll

Du kan bruge unalias til at fjerne aliasser, du har defineret, og ethvert af de foruddefinerede aliasser.

For at fjerne alle aliaserne fra dit system skal du bruge indstillingen -a (alle):

unalias -a

Bashs hukommelsestab er dog ikke permanent. Næste gang du åbner et terminalvindue, kommer de "glemte" aliaser tilbage. For virkelig at udslette dem skal du fjerne dem fra dine ".bashrc" - og ".bash_alias" -filer.

Hvis du tror, ​​du nogensinde vil have dem tilbage, skal du ikke slette dem fra din ".bashrc" -fil. I stedet skal du kommentere dem ved at tilføje en hash # til starten af ​​hver aliaslinje. For at gøre din “.bash_alias” -fil ineffektiv, skal du omdøbe den. Hvis din ".bashrc" -fil ikke kan se den, vil den ikke læse den i. Det er en triviel sag at vende disse trin for at genindføre dine aliasser.

For midlertidigt at omgå et alias (sig, at vi aliaser ls til ls -a), kan vi skrive:

\ ls

Resultatet blev, at den normale kommando ville blive kaldt, ikke den aliasede version.

Hjælp til Alias-kommando:

  • –Hjælp: Det viser information om hjælp.

Syntaks:

alias - hjælp

Shell-funktioner

Nogle gange kræves et alias, der kan acceptere et eller flere argumenter, det er når bash-funktioner bruges.

Syntaks

Oprettelse af en bash-funktion er ikke særlig vanskelig. De kan erklæres i et af følgende to forskellige formater:

funktionsnavn () {[kommandoer]}

eller

fungere funktionsnavn {[kommandoer]}

Vi kan komprimere denne anden form til en linje og adskille kommandoerne med semikolon. Et semikolonskal kom også efter den sidste kommando:

funktionsnavn () {kommando1; command2; }

Lika aliaser, Bash shell-funktioner kan defineres i ".bashrc" -filen, men det er ofte pænere at placere dem i deres egen definitionsfil. Vi kalder det ".bash_functions" efter den konvention, der blev brugt til filen ".bash_aliases".

Det betyder, at vi skal fortælle ".bashrc" -filen at læse i vores definitioner. Vi kan kopiere og ændre kodestykket, der læser i ".bash_aliases" -filen. Start gedit og indlæs ".bashrc" -filen med denne kommando:

gedit .bashrc

Du skal tilføje det fremhævede afsnit vist nedenfor.

Du kan fremhæve aliasafsnittet og trykke på Ctrl + C og derefter flytte til det sted, hvor du vil have det nye afsnit, og trykke på Ctrl + V for at indsætte en kopi af teksten. Så er alt hvad du skal gøre, at ændre de to steder, hvor der står ".bash_aliases" til ".bash_funktioner."

Vi kan gemme disse ændringer og lukke gedit.

Nu skal vi oprette og redigere filen ".bash_functions" og sætte en funktionsdefinition i den.

tryk på .bash_funktioner gedit .bash_funktioner

Dette åbner den tomme ".bash_functions" -fil i gedit.

Vi vil tilføje en simpel funktion, der kaldes op. op tager en enkelt kommandolinjeparameter, som er et ciffer. op kalder derefter cd .. det antal gange. Så hvis du brugte kommandoen

op 2

op kalder cd .. to gange og bevæger sig op to niveauer i katalogtræet.

Der er forskellige måder at definere en funktion på. Her er en:

funktion op () {

Ordfunktionen er valgfri. Hvis du er en traditionel, skal du bruge den. Hvis du ikke kan være generet af at skrive den, skal du lade den ude.

Her er hele vores funktion i gedit:

funktion op () {

Dette markerer starten på vores funktionsdefinition, og den navngiver funktionen op.

niveauer = $ 1

Dette skaber en variabel kaldetniveauer og indstiller den til værdien af ​​den første parameter. Denne parameter vil være et ciffer, der leveres af brugeren, når de kalder funktionen. $ 1 betyder "første kommandolinjeparameter."

mens ["$ levels" -gt "0"]; gør

Vi går derefter ind i en sløjfe, som derefter oversættes som "når"værdi”Af“niveauer”Er positiv eller større end nul, gør hvad der er inde i sløjfens krop.”

Inde i sløjfekroppen har vi to kommandoer. De er:

cd ..

Flyt et niveau op i katalogtræet.

niveauer = $ (($ niveauer - 1))

Indstil niveauer til en ny værdi, som er en mindre end dens aktuelle værdi.

Vi går derefter tilbage til toppen af ​​sløjfen, sammenligningen mellem værdien af ​​niveauer og nul foretages igen. Hvis “niveauer” er mere end nul, udføres sløjfekroppen igen. Hvis det ikke er positivt eller større end nul, er sløjfen færdig, og vi falder igennem til det færdige udsagn, og funktionen er forbi.

Gemme disse ændringer og lukgedit.

Vi læser ind og udfører kommandoer i ".bashrc", som skal læse ind og udføre kommandoer i vores ".bash_functions" -fil.

. .bashrc

Vi kan teste funktionen ved at flytte til et sted i katalogtræet og bruge op til at flytte tilbage til et “højere” punkt i katalogtræet.

cd ./work/backup/ op 2

Funktionen fungerer. Vi er flyttet to katalogniveauer højere i træet.

Holde styr på typen

Når du opbygger en række aliasser og et bibliotek med funktioner, kan det blive svært at huske, om en bestemt kommando er et alias eller en funktion. Du kan bruge “type" kommando for at minde dig. Det seje her er, at du også får set definitionen.

Lad os bruge typen på voresftcalias og vores op-funktion.

skriv ftc type op

Vi får en meget nyttig påmindelse om, hvilken type kommando hver enkelt er sammen med deres definitioner.

Begynd at samle

Aliaser og funktioner kan fremskynde din brug af kommandolinjen enormt. De kan forkorte kommandosekvenser, og de giver dig mulighed for at bage ind de muligheder, du altid bruger med standardkommandoer. Hver gang du ser en smart one-liner eller en nyttig funktion, kan du tilpasse og tilpasse den og derefter føje den til dine ".bash_aliases" eller ".bash_functions" filer. Omfattende brug af disse kan hjælpe med at gøre din tid i skallen mere behagelig og mindre kompleks.

Husk at være forsigtig med at omdefinere eksisterende kommandoer med adfærd, der er potentielt destruktiv.Selv at gøre det modsatte og aliasere en kommando til en sikrere variant (altid bede om bekræftelse før du sletter rekursivt, for eksempel) kan komme tilbage og bide dig første gang du er på et system uden det, når du først er kommet til at stole på det . For at finde kandidater, der kan være gode at oprette aliasser til, kan det være en god ide at søge i din historie efter dine mest anvendte kommandoer.

Facebook Twitter Google Plus Pinterest