Sådan oprettes brugerdefinerede kommandoer i Linux

I denne vejledning viser vi dig, hvordan du opretter brugerdefinerede kommandoer i Linux, som giver dig mulighed for at oprette "genvejskommandoer" ved hjælp af et simpelt navn, du vælger. Endnu bedre, du kan kæde flere kommandoer som dette sammen og køre dem alle sammen med et enkelt ord. Nyttigt, ikke? Da du får mere og mere bekendt med Linux, kommer du på tværs af kommandoer i fora og vejledninger, som kan være meget komplekse (og underlige). Overvej følgende eksempel for at udskrive listen over filer i en enkelt kolonne:

ls -l -farve | awk '{print $ 9}'

Dette giver os følgende output:

Output af awk kommando

Så langt så godt. Men hvad nu hvis du vil bruge denne kommando ofte? Det er svært at huske dette brev til brev, det er ikke let at skrive ud, og det tager alt for lang tid. Tilføj nu dusinvis af andre kommandoer med lignende (eller større) kompleksitetsniveauer, og det er nemt at se, at vi har brug for en ny løsning.

Trin 1: Åbn en fil i teksteditoren med dit kommandonavn

Lad os sige, at vi vil kalde vores nye kommando "filer". Vi opretter en ny fil med navnet "filer" ved hjælp af teksteditoren "vi" ved at udstede denne kommando:

vi filer

Dette åbner en grundlæggende editor, hvor du kan skrive din tekst. Som standard er det i "læs" -tilstand, og du kan ikke tilføje ny tekst. Skift dette for at indsætte tilstand ved at trykke på "Insert" -tasten på tastaturet.

Kopier og indsæt nu følgende tekst. Du kan hurtigt indsætte ind i terminalen ved at højreklikke inde i den.

#! / bin / bash # Udskriv liste over filer i en kolonne ls -l --farve | awk '{print $ 9}'

Som du kan se, indsættes dette i vi, når "INSERT" -tilstanden er tændt:

Kopier og indsæt scriptet i vi

Dette kaldes et "script", og det består af tre dele:

  1. Det begynder med ordene "#! / Bin / bash"
  2. Linjer der starter med en hashtag (#) er kommentarer
  3. Resten er kommandoer. Udskift 3rd-linjen med din komplicerede kommando, som du vil forenkle

Afslut nu "Insert" -tilstanden ved at trykke på "Esc" -tasten. Gem filen ved at trykke på Skift + Z + Z (Hold skifttasten nede og tryk to gange på "z".

Filen er nu gemt i din nuværende mappe. Du kan vise indholdet ved at skrive:

cat filer

Dette giver følgende output:

Vis indholdet af vores fil

Trin 2: Tildel de rigtige tilladelser til vores script

Hvis vi blot lister filerne i mappen, vil du se, at vores nye fil er en af ​​dem.

Bare en almindelig fil

Men det er bare en almindelig fil og ikke noget der kan udføres. Kommandoen "ls" viser eksekverbare filer i grønt. Så vi skal fortælle Linux, at vores nye fil er eksekverbar. Det gør vi ved at skrive følgende:

chmod 755-filer

Dette ændrer filtilladelserne og gør det eksekverbart. Nu viser "ls" filen som grøn:

Skift script fil tilladelser

Det er på tide at løbe vores kommando!

Trin 3: Angivelse af stier til vores script

Desværre kan vi ikke bare skrive "filer" til den aktuelle mappe for at køre vores nye script. Vi får en fejlmeddelelse, der siger "kommando ikke fundet":

Kommando ikke fundet

Dette skyldes, at Linux søger efter almindelige kommandoer i et specifikt sæt af mapper, der refereres af $ PATH-variablen. Og vores nuværende mappe er ikke på listen.

Så vi har tre valg:

  1. Angiv den fulde placering af vores scriptfil manuelt hver gang
  2. Tilføj den "aktuelle mappe" til variablen $ PATH
  3. Flyt vores script fil til en eksisterende mappe refereret af $ PATH

Lad os se, hvordan man gør alle tre:

Metode 1: Manuel angiv den fulde placering

Da vi forsøgte at skrive "filer" tidligere, fik vi en fejl. Men vi kan angive den nuværende mappe til vores script-fil som denne:

./files

Og det fungerer som du kan se nedenfor:

Angiv den aktuelle mappe manuelt

Desværre vil det ikke fungere, hvis vi er i en anden mappe. Vi skal angive den fuldt kvalificerede vej, hvilket er en smerte.

Metode 2: Tilføj "Current Directory" til PATH Variable

Denne metode lider af det samme problem som den første. Vi kan fortælle Linux altid at søge i "nuværende katalog" for scripts og kommandoer. På den måde behøver vi ikke bruge "./". Vi kan midlertidigt tilføje den nuværende mappe til $ PATH som denne:

PATH = "$ PATH :."

Nu er det bare at skrive "filer" som vist her:

Tilføjelse af den aktuelle katalog-til-PATH

Denne tilgang har dog to problemer:

  1. Som nævnt kan du ikke få adgang til scriptet fra en anden mappe end sin egen
  2. Ændringen i $ PATH er midlertidig. Det vil blive nulstillet, når brugerens session er overstået!

For at gøre ændringerne til $ PATH permanent, skal vi redigere denne fil:

~ / .bash_profile

Som før kan vi bruge vi-editoren:

vi ~ / .bash_profile

Igen skal du trykke på "Insert" for at gå ind i INSERT-tilstand og navigere til linjen med angivelse af PATH-variablen som vist her:

Naviger til variabeldeklarationen PATH

Tilføj nu følgende til slutningen af ​​PATH-linjen:

:.

Det er et kolon (:) efterfulgt af en prik (.). Gem filen i vi ved at trykke på "Esc" og Shift + z + z som før. Ændringerne træder dog ikke i kraft, før du genindlæser ~ / .bash_profile. Gør dette ved hjælp af følgende kommando:

kilde ~ / .bash_profile

Du kan kontrollere, om ændringerne har fundet sted ved at echo'ing variablen $ PATH. Du bør se tilføjelsen i slutningen af ​​linjen som denne:

Tilføj nuværende sti til PATH

Nu vil ændringen fortsætte, selv når din brugersession slutter. Du kan dog stadig ikke udføre kommandoen fra nogen mappe. Til det har vi brug for metode 3.

Metode 3: Tilføj filen til en eksisterende $ PATH-destination (anbefales)

Efter min mening er dette den bedste måde at tilføje din brugerdefinerede kommando på, så du kan få adgang til den fra hvor som helst.

Først får du en liste over $ PATH-placeringer ved at echo'ing PATH som vist i metode 2.

Hver mappeplacering er adskilt af et kolon (:) Du kan se i ovenstående skærmbillede, at mappen / usr / local / bin er en af ​​stierne.

usr local bin er en af ​​stierne

Så vi flytter kun vores brugerdefinerede kommando til denne placering (eller en anden mappe i $ PATH) via denne kommando:

mv filer / usr / local / bin

Og nu kan vi ændre vores arbejdsmappe og få adgang til scriptet fra hvor vi vil!

Brugerdefineret kommando Arbejder fra ny placering

I dette skærmbillede har jeg flyttet scriptet til / usr / local / bin og gået en mappe op med "cd ..". Og kommandoen virker stadig!

Dette er den rigtige måde at oprette brugerdefinerede kommandoer på i Linux. Det er bare toppen af ​​isbjerget, når det kommer til scripting i Linux. Du kan skrive komplekse logiske loops og udføre betingede udsagn. Du kan også bruge dette til at oprette aliaser for eksisterende kommandoer, eller kæde en masse af dem sammen til automatisk eksekvering! Hvis dette er din første foray i Linux scripting, være forberedt på at få adgang til et væld af magt og funktionalitet i fremtiden.

Glad scripting!

Oprindelig artikel

Efterlad en kommentar