Hvordan lage aliaser og skallfunksjoner på Linux?

Å vite kommandoprompter og skallskript er fortsatt nødvendig hvis du vil få mest mulig ut av GNU / Linux-systemet og jo mer man opererer på kommandolinjen, jo mer vil man oppdage at de fleste kommandoene som brukes er veldig liten delmengde av tilgjengelige kommandoer. De fleste oppgaver er vanlige og brukeren du kan kjøre på samme måte hver dag.

Mens produsentene av mange av de vanligste kommandoverktøyene har forsøkt å eliminere fremmede skriving ved å bruke forkortede navn f.eks. i stedet for liste skriver vi “ls”& I stedet for endringskatalog skriver vi inn“cd”. I tillegg trenger mange Linux-brukere ofte å bruke en kommando om og om igjen. Å skrive / kopiere den samme kommandoen igjen og igjen vil redusere produktiviteten og distrahere brukeren fra faktisk arbeid.

Det ville være flott hvis vi bruker mindre tid på å skrive de lange kommandoene. Vi har to kraftige måter å minimere tiden din på kommandolinjen er skallaliaser og funksjoner, ved bruk av disse to kan brukeren temme repeterende oppgaver, forkorte lange prosesser og konfigurere tilpassede kommandoer med alternativene brukeren alltid bruker og sliter med å huske.

Du kan definere kommandoene dine som passer til dine spesifikke behov, og for å lette byrden av gjentatte oppgaver.

Aliaser og skallskripter, dvs. funksjoner gjør den samme jobben. De lar deg definere - og gi navn - et sett med Bash-skallfunksjonalitet som deretter kan kalles med navnet du har gitt det. Å skrive navnet er enklere og mer praktisk enn å måtte skrive ut alle trinnene eller kommandoene hver gang du vil bruke dem.

Forskjellen mellom et alias og en funksjon er kompleksitet og skala. Skript er bedre til å holde lengre og mer forseggjorte biter av kode. Aliaser er perfekte for å holde kortere, kortfattede, sett med kommandoer.

Skallaliaser

Et skallalias er en egendefinert snarvei for å referere til en kommando eller et sett med kommandoer utført med eller uten egendefinerte alternativer. Disse aliasene er alternative, lett å huske navn for lange kommandoer som du trenger å utføre ofte. Når du skriver på kommandolinjen, ser skallet først etter det du skrev i aliaslisten. Hvis det blir funnet et treff, vil det bli erstattet av aliaset med tilsvarende tekst. etter å ha fullført det, vil det igjen se på hele den resulterende kommandolinjen og utføre den.

Sjansen er stor for at du kanskje allerede har brukt aliaser på Linux-systemet da de fleste Linux-distribusjoner legger til i det minste noen av de populære aliasene som standard i “.bashrc ” filen til brukerkontoen.

Utover aliaser: Shell-funksjoner

Blokker med lignende, men ikke identiske koder, kan ikke erstattes av aliaser. De kan ikke håndtere feil eller returnere egendefinerte utgangskoder, gjøre flytkontroll eller bruke variabler. Hvis du trenger å gjøre noe av dette, er det på tide å bruke skallfunksjoner.

Shell-funksjoner er kodeblokker strukturert som komplette underskripter, skrevet en gang og påkalt fra ethvert skript som trenger det.

Syntaks for aliaser:

Å lage aliaser i bash er veldig rett frem. Syntaksen er som følger:

alias alias_name = ”command_to_run”

For å opprette et nytt bash-alias i den gjeldende økten

  1. Skriv inn “alias
  2. Erklær deretter aliasnavnet
  3. Etterfulgt av likhetstegn
  4. Og kommandoen som vil kjøre når aliaset kalles.

Kommandoen må være omsluttet av anførselstegn og uten avstand rundt likhetstegnet. Rom her vil bryte kommandoen. Hvert alias må deklareres på en ny linje.

La oss få det avklart med eksemplet. På Linux-kommandolinjen er en av de mest brukte kommandoene “ls”. For det meste brukes "ls" -kommandoen med "la”-Bryter som vil vise alle filer og kataloger med skjulte filer i formatet til den lange listen. Nå skal vi lage et enkelt bash-alias “ll”Som vil være en snarvei tills -la kommando.

  1. Åpne en terminalvindu
  2. Type:
    alias ll = "ls -la"

    & trykk Tast inn

  3. Nå i konsolltypen “llOg trykk Tast inn
  4. Resultatet blir det samme som ved å skrive ls -la.

Ovennevnte alias “ll” vil bare være tilgjengelig i den gjeldende shell-økten. Hvis du lukker økten eller et nytt øktvindu startet fra en annen terminal, vil ikke det ovenfor definerte aliaset “ll” være tilgjengelig.

Vi vil diskutere det senere om hvordan vi kan gjøre aliaset vedvarende. Eksemplene her er for bash-skallet, men alle konseptene og det meste av koden gjelder også for andre skjell.

Forhåndsdefinerte aliaser

Noen aliaser er forhåndsdefinerte for deg. For å kjenne listen over alle aliaser som er definert i systemet, bruker vi kommandoen “alias” uten noen parametere:

alias

Dette er aliasene på Ubuntu-testmaskinen denne artikkelen ble undersøkt på. Eventuelt tilpassede aliaser vil også vises i denne listen.

Det er en rekke forskjellige aliaser for ls-kommandoen, og det er en gruppe aliaser som gir fargeutgang til grep-kommandofamilien, f.eks. med aliaser definert som ovenfor, når du skriver:

grep

Det vil bli tolket som:

grep --farge = auto

Dette viser et viktig poeng med aliaser. De kan ha samme navn som eksisterende kommandoer. De kan til og med inneholde den opprinnelige kommandoen i seg selv.

Her er definisjonen av grep-aliaset.

alias grep = 'grep --farge = auto'
  1. Alias-kommandoen brukes til å definere et alias.
  2. Navnet på aliaset blir gitt neste. I dette eksemplet er det “grep”.
  3. Liketegnet kobler navnet på aliaset tilkropp av aliaset. For alle bortsett fra veldig enkle aliaser, er aliasets kropp innelukket i enkle anførselstegn ‘.
  4. Teksten til aliaset er seksjonen som utføres når aliaset brukes på kommandolinjen.
  5. Kroppen til dette aliaset kaller bare grep-kommandoen med alternativet –farge = auto.

Varslingsaliaset

På toppen av oppføringen heter det et komplisert aliasvarsling. Som et raskt til side, og slik at du vet hva det gjør, brukes aliaset for å gi deg beskjed når en kommando er ferdig. Det indikerer også om kommandoen ble fullført eller ikke. Det gir et grafisk systemvarsel øverst på skjermen.

Her er et enkelt eksempel. Søvnkommandoen vil sove i fem sekunder. Alarmen vil da ringes opp. Aliaset sjekker svaret fra forrige kommando. Den trekker ut den siste kommandoen fra historikkfilen. Den avgjør om kommandoen ble fullført eller ikke. Deretter presenteres resultatene i et systemvarsel.

Hvis kommandoen fullføres som forventet, er ikonet i systemvarslingen et lite terminalvindu. Hvis kommandoen returnerte en feilkode, er ikonet i systemvarslingen et rødt feilikon.

sove 5; varsling

Etter fem sekunder ser vi dette systemvarselet:

Ikonet er et lite terminalvindu, noe som betyr at alt gikk bra. La oss prøve det igjen med en kommando som vi vet vil mislykkes:

Dømt til å mislykkes; varsling

Systemvarselet vårt har nå et feilikon.

Definere et Trivial Alias

Som vi har sett, for å definere et alias, bruker vi alias-kommandoen.

Vi skal lage et pseudonym for den klare kommandoen. Aliaset vårt vil bli kalt cls og det vil kalle den klare kommandoen.

Alias-definisjonen vår er så triviell at den ikke garanterer å være pakket inn i enkelte anførselstegn. Hvis aliaset er mer komplekst enn dette, eller hvis det inneholder mellomrom, pakk det inn i enkle anførselstegn. Vi definerer aliaset, bruker ls for å legge noe ut i terminalvinduet og bruker deretter de nye alias-cls for å tømme skjermen.

alias cls = klart ls -l cls

Skjermen er ryddet. Suksess, om enn kortvarig. Aliaset vil bare overleve så lenge dette terminalvinduet forblir åpent. Når vinduet er lukket, vil aliaset forsvinne.

For å gjøre aliaser permanente ved bruk av ".bashrc" -filen

Du lurer kanskje på hvor de forhåndspakkede aliasene er definert. det er i ".bashrc" -filen i hjemmemappen din. Denne filen leses, og kommandoene i den utføres når du starter et interaktivt skall. Det er når du åpner et terminalvindu.

Skriv inn følgende kommando i hjemmemappen for å se innholdet i ".bashrc" -filen med syntaksfremheving.

gedit .bashrc

Dette vil startegeditredaktør med ".bashrc" -filen lastet inn i den.

De uthevede områdene viser to områder der aliaser er definert.

Bla gjennom dokumentet vil avsløre to andre seksjoner relatert til aliaser:

Den første av disse er definisjonen av alarmaliaset. Det andre er en if-uttalelse. Det oversettes til "hvis filen".bash_aliases”Eksisterer, les den inn.”

Hvis du bare har noen aliaser som du ønsker å definere, kan du legge dem i ".bashrc" -filen. Sett dem inn under delen som inneholder ls-aliasene.

Hvis du skal lage mange aliaser, eller bare liker ideen om å ha aliasene innkapslet i den egne filen, kan du definere dem i ".bash_aliases" -filen. En fordel med å lage dem i ".bash_aliases" -filen er at du ikke ved et uhell kan endre noen av innstillingene i ".bashrc" -filen. En annen fordel er at aliasene dine enkelt kopieres til nye systemer fordi de er atskilt fra ".bashrc" -filen.

Aliaset skal navngis på en måte som er lett å huske. Det anbefales også å legge til en kommentar for fremtidig referanse.

Lagring av aliaser i .bash_aliases-filen

Filen “.bash_aliases” eksisterer ikke som standard, du må opprette den. Du kan opprette filen med denne kommandoen:

berør .bash_aliases

La oss redigere filen og legge til noen aliaser i den. Denne kommandoen åpner ".bash_aliases" -filen i gedit-editoren.

gedit .bash_aliases

Vi har lagt til tre aliaser. Den første er vårclsalias som vi brukte tidligere. Den neste heterh. og er en kortfattet måte å ringe historikkommandoen på.

Det tredje alias kallesftc. Dette står for "antall filtyper."

Dette aliaset er mer involvert, så det er pakket inn i enkelte anførselstegn. Den bruker en kjede av kommandoer koblet sammen av rør. Den produserer en sortert liste over de forskjellige filtypene og katalognavnene, med et antall for hver listeoppføring.

Når vi har lagret “.bash_aliases” -filen, kan vi forvente at aliasene våre skal være live og tilgjengelige. Det er ikke tilfelle. Filen må leses inn av Bash-skallet før aliasdefinisjonene er live. Dette gjøres når et interaktivt skall åpnes.

Vi kan også bruke Bash shell innebygd. for å lese og utføre kommandoene i en fil. Fordi ".bash_alias" -filen vår leses inn når ".bashrc" behandles, bør vi utføre testen vår ved å ringe ".bashrc". På den måten kan vi sjekke at ".bash_alias" -filen kalles fra ".bashrc" og at aliasene våre lever og har det bra.

Kommandoene vi har brukt er:

gedit .bash_aliases

For å redigere “.bash_aliases” -filen.

. .bashrc

Dette vil lese inn og utføre kommandoene i ".bashrc", som vil kalle ".bash_aliases".

ftc

Dette vil kalle ftc-aliaset.

Aliaset vårt svarer, noe som betyr at Bash har lest i både ".bashrc" og ".bash_aliases", og de nye aliasene våre er nå live.

Du kan nå fortsette og legge til nye aliaser i ".bash_aliases" -filen når de opptrer for deg. Hvis du finner ut at du gjør ting mer enn en eller to ganger, bør du vurdere å lage et alias for det.

Fjerne aliaser

Det er en kommando om å fjerne aliaser slik at Bash ikke gjenkjenner dem eller svarer på dem. Forfriskende rett fram kalles kommandoenunalias.

For å bruke det, oppgi navnet på aliaset du vil at Bash skal glemme. For å få Bash til å glemme ftc-aliaset vårt, bruk unalias f.eks. den tidligere brukte “ll”Kommando:

unalias ll

Du kan bruke unalias til å fjerne aliaser du har definert, og hvilken som helst av de forhåndsdefinerte aliasene.

For å fjerne alle aliasene fra systemet ditt, bruk alternativet -a (alle):

unalias -a

Bashs hukommelsestap vil imidlertid ikke være permanent. Neste gang du åpner et terminalvindu, vil de "glemte" aliasene være tilbake. For å virkelig utslette dem, må du fjerne dem fra ".bashrc" - og ".bash_alias" -filene.

Hvis du tror du noen gang vil ha dem tilbake, må du ikke slette dem fra ".bashrc" -filen. I stedet kan du kommentere dem ved å legge til en hash # til starten av hver aliaslinje. For å gjøre “.bash_alias” -filen din ineffektiv, endre navn på den. Hvis ".bashrc" -filen ikke kan se den, vil den ikke lese den i. Å reversere disse trinnene for å gjenopprette aliasene dine er en triviell sak.

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

\ ls

Følgelig vil den normale kommandoen bli kalt, ikke den aliaserte versjonen.

Hjelp for Alias-kommandoen:

  • –Hjelpemulighet: Den viser hjelpinformasjon.

Syntaks:

alias - hjelp

Skallfunksjoner

Noen ganger kreves et alias som kan akseptere ett eller flere argumenter, det er når bash-funksjoner brukes.

Syntaks

Å lage en bash-funksjon er ikke veldig vanskelig. De kan deklareres i et av følgende to forskjellige formater:

funksjonsnavn () {[kommandoer]}

eller

funksjon funksjonsnavn {[kommandoer]}

Vi kan komprimere denne andre formen til en linje og skille kommandoene med semikolon. Et semikolon kom etter den siste kommandoen også:

funksjonsnavn () {kommando1; command2; }

Lika-aliaser, Bash-skallfunksjoner kan defineres i ".bashrc" -filen, men det er ofte bedre å sette dem i sin egen definisjonsfil. Vi vil kalle det ".bash_functions", etter konvensjonen som ble brukt for ".bash_aliases" -filen.

Det betyr at vi må fortelle ".bashrc" -filen å lese i definisjonene våre. Vi kan kopiere og endre kodebiten som står i ".bash_aliases" -filen. Start gedit og last inn ".bashrc" -filen med denne kommandoen:

gedit .bashrc

Du må legge til den uthevede delen vist nedenfor.

Du kan markere alias-delen og trykke Ctrl + C og deretter flytte dit du vil ha den nye delen, og trykke Ctrl + V for å lime inn en kopi av teksten. Så er alt du trenger å gjøre å endre de to stedene der det står ".bash_aliases" til ".bash_functions."

Vi kan lagre disse endringene og lukke gedit.

Nå skal vi opprette og redigere “.bash_functions” -filen, og sette en funksjonsdefinisjon i den.

trykk på .bash_functions gedit .bash_functions

Dette åpner den tomme ".bash_functions" -filen i gedit.

Vi skal legge til en enkel funksjon som kalles opp. opp tar en enkelt kommandolinjeparameter, som er et siffer. opp vil da ringe cd .. det antall ganger. Så hvis du brukte kommandoen

opp 2

opp vil ringe cd .. to ganger og vil flytte opp to nivåer i katalogtreet.

Det er forskjellige måter å definere en funksjon på. Her er en:

funksjon opp () {

Ordfunksjonen er valgfri. Hvis du er tradisjonalist, bruk den, hvis du ikke kan gidder å skrive den inn, la den være utenfor.

Her er hele funksjonen vår i gedit:

funksjon opp () {

Dette markerer starten på funksjonsdefinisjonen vår, og den navngir funksjonen opp.

nivåer = $ 1

Dette skaper en variabel som heternivåer og setter den til verdien av den første parameteren. Denne parameteren vil være et siffer gitt av brukeren når de ringer til funksjonen. $ 1 betyr "første kommandolinjeparameter."

mens ["$ levels" -gt "0"]; gjøre

Vi går deretter inn i en sløyfe som deretter vil oversettes som "når"verdi”Av“nivåer”Er positivt eller større enn null, gjør det som finnes i kroppen av sløyfen.”

Inne i kroppen av sløyfen har vi to kommandoer. De er:

cd ..

Flytt deg opp et nivå i katalogtreet.

nivåer = $ (($ nivåer - 1))

Sett nivåer til en ny verdi, som er en mindre enn den nåværende verdien.

Vi går deretter tilbake til toppen av løkken, sammenligningen mellom verdien av nivåer og null gjøres igjen. Hvis “nivåer” er mer enn null, utføres kroppen til sløyfen igjen. Hvis det ikke er positivt eller større enn null, er sløyfen ferdig, og vi slipper gjennom til ferdig uttalelse, og funksjonen er over.

Lagre disse endringene og lukkesgedit.

Vi vil lese inn og utføre kommandoene i ".bashrc" som skal lese inn og utføre kommandoene i vår ".bash_functions" -fil.

. .bashrc

Vi kan teste funksjonen ved å flytte til et sted i katalogtreet og bruke opp for å flytte tilbake til et “høyere” punkt i katalogtreet.

cd ./work/backup/ opp 2

Funksjonen fungerer. Vi er flyttet to katalognivåer høyere i treet.

Holde oversikt over typen

Når du bygger opp en serie aliaser og et bibliotek med funksjoner, kan det bli vanskelig å huske om en bestemt kommando er et alias eller en funksjon. Du kan bruke “type" kommando for å minne deg på. Det kule her er at du også får se definisjonen.

La oss bruke typen på vårftcalias og vår opp-funksjon.

skriv ftc skriv opp

Vi får en veldig nyttig påminnelse om hvilken type kommando hver er, sammen med definisjonene.

Begynn å samle

Aliaser og funksjoner kan øke hastigheten på bruken av kommandolinjen. De kan forkorte kommandosekvenser, og de lar deg bake inn alternativene du alltid bruker med standardkommandoer. Hver gang du ser en smidig en-liners eller nyttig funksjon, kan du tilpasse og tilpasse den, og deretter legge den til i filene “.bash_aliases” eller “.bash_functions”. Omfattende bruk av disse kan bidra til å gjøre tiden din i skallet morsommere og mindre kompleks.

Husk å være forsiktig med å omdefinere eksisterende kommandoer med atferd som er potensielt ødeleggende.Selv om du gjør det motsatte og aliaserer en kommando til en tryggere variant (for eksempel alltid ber om bekreftelse før du sletter rekursivt), kan du komme tilbake for å bite deg første gang du er på et system uten det når du først kommer til å stole på det . For å finne kandidater som det kan være bra å lage aliaser for, kan det være lurt å søke i historikken din etter de mest brukte kommandoene.

Facebook Twitter Google Plus Pinterest