logo

Introduksjon til Linux Shell og Shell Scripting

Hvis vi bruker et større operativsystem, samhandler vi indirekte med skall . Mens vi kjører Ubuntu, Linux Mint eller en hvilken som helst annen Linux-distribusjon, samhandler vi med skallet ved å bruke terminalen. I denne artikkelen vil vi diskutere Linux-skall og shell-scripting, så før vi forstår shell-scripting må vi bli kjent med følgende terminologier:

  • Kjerne
  • Shell
  • Terminal

Innholdsfortegnelse

Hva er kjernen?

Kjernen er et dataprogram som er kjernen i en datamaskins operativsystem, med full kontroll over alt i systemet. Den administrerer følgende ressurser i Linux-systemet –



  • Filbehandling
  • Prosessledelse
  • I/O-administrasjon
  • Minnehåndtering
  • Enhetshåndtering etc.

Det blir ofte feil at Linus Torvalds har utviklet Linux OS, men faktisk er han kun ansvarlig for utviklingen av Linux-kjernen.

Komplett Linux-system = kjerne + GNU systemverktøy og biblioteker + andre administrasjonsskript + installasjonsskript.

Hva er Shell?

Et skall er et spesielt brukerprogram som gir brukeren et grensesnitt for å bruke operativsystemtjenester. Shell godtar menneskelesbare kommandoer fra brukere og konverterer dem til noe som kjernen kan forstå. Det er en kommandospråktolk som utfører kommandoer som leses fra inndataenheter som tastaturer eller fra filer. Skallet starter når brukeren logger på eller starter terminalen.

Sree Ramanujan
Linux Shell

Linux Shell

Shell er grovt klassifisert i to kategorier –

  • Kommandolinjeskall
  • Grafisk skall

Kommandolinjeskall

Shell kan nås av brukere ved hjelp av et kommandolinjegrensesnitt. Et spesielt program kalt Terminal i Linux/macOS, eller kommandoprompt i Windows OS er tilgjengelig for å skrive inn de menneskelig lesbare kommandoene som cat, ls osv., og deretter blir det utført. Resultatet vises deretter på terminalen til brukeren. En terminal i Ubuntu 16.4-systemet ser slik ut -

linux kommandolinje

linux kommandolinje

I skjermbildet ovenfor ls kommando med -l alternativet er utført. Den vil vise alle filene i den gjeldende arbeidskatalogen i et langt listeformat.
Å jobbe med et kommandolinjeskall er litt vanskelig for nybegynnere fordi det er vanskelig å huske så mange kommandoer. Den er veldig kraftig; det lar brukere lagre kommandoer i en fil og utføre dem sammen. På denne måten kan alle repeterende oppgaver enkelt automatiseres. Disse filene kalles vanligvis batchfiler i Windows og Shell Skript i Linux/macOS-systemer.

Grafiske skjell

Grafiske skall gir midler for å manipulere programmer basert på det grafiske brukergrensesnittet (GUI), ved å tillate operasjoner som å åpne, lukke, flytte og endre størrelse på vinduer, samt bytte fokus mellom vinduer. Window OS eller Ubuntu OS kan betraktes som et godt eksempel som gir GUI til brukeren for å samhandle med programmet. Brukere trenger ikke å skrive inn kommandoer for hver handling. En typisk GUI i Ubuntu-systemet -

GUI-skall

GUI-skall

gimp lagring som jpeg

Det er flere skjell tilgjengelig for Linux-systemer som -

  • BASH (Bourne Again SHell) - Det er det mest brukte skallet i Linux-systemer. Det brukes som standard påloggingsskall i Linux-systemer og i macOS. Det kan også installeres på Windows OS.
  • CSH (C SHell) – C-skallets syntaks og bruken er veldig lik C-programmeringsspråket.
  • KSH (Korn SHell) - Korn Shell var også basen for POSIX Shell standard spesifikasjoner etc.

Hvert skall gjør den samme jobben, men forstår forskjellige kommandoer og gir forskjellige innebygde funksjoner.

Hva er en terminal?

Et program som er ansvarlig for å gi et grensesnitt til en bruker slik at han/hun kan få tilgang til skallet. Det lar i utgangspunktet brukere legge inn kommandoer og se utdataene fra disse kommandoene i et tekstbasert grensesnitt. Store skript som er skrevet for å automatisere og utføre komplekse oppgaver blir utført i terminalen.

dynamisk array i java


For å få tilgang til terminalen, søk ganske enkelt i søkeboksen terminal og dobbeltklikk på den.

åpen terminal

Her kan du se hvordan terminalen ser ut til Red Hat Linux.

terminal

Shell Scripting

Vanligvis er skjell interaktive, noe som betyr at de godtar kommandoer som input fra brukere og utfører dem. Men noen ganger ønsker vi å utføre en haug med kommandoer rutinemessig, så vi må skrive inn alle kommandoer hver gang i terminalen.

Siden et skall også kan ta kommandoer som input fra fil, kan vi skrive disse kommandoene i en fil og kan utføre dem i skall for å unngå dette repeterende arbeidet. Disse filene kalles Shell Scripts eller Shell-programmer . Shell-skript ligner på batchfilen i MS-DOS. Hvert shell-skript lagres med `.sh` filtype, f.eks. myscript.sh.

Et shell-skript har syntaks akkurat som alle andre programmeringsspråk. Hvis du har noen tidligere erfaring med programmeringsspråk som Python, C/C++ osv. Det ville være veldig enkelt å komme i gang med det.

Et skallskript består av følgende elementer -

  • Shell Nøkkelord – if, else, break etc.
  • Shell-kommandoer – cd, ls, echo, pwd, touch etc.
  • Funksjoner
  • Kontroller flyt – hvis..så..annet, kasse- og skallløkker etc.

Hvorfor trenger vi shell-skript?

Det er mange grunner til å skrive shell-skript:

java klasse diagram
  • For å unngå repeterende arbeid og automatisering
  • Systemadministratorer bruker shell-scripting for rutinemessige sikkerhetskopier.
  • Systemovervåking
  • Legge til ny funksjonalitet til skallet osv.

Noen fordeler med shell-skript

  • Kommandoen og syntaksen er nøyaktig de samme som de som er lagt inn direkte på kommandolinjen, så programmerere trenger ikke å bytte til en helt annen syntaks
  • Å skrive shell-skript er mye raskere
  • Kjapp start
  • Interaktiv feilsøking etc.

Noen ulemper med shell scripts

  • Utsatt for kostbare feil, kan en enkelt feil endre kommandoen som kan være skadelig.
  • Langsom utførelseshastighet
  • Designfeil i språksyntaksen eller implementeringen
  • Ikke godt egnet for store og komplekse oppgaver
  • Gi minimal datastruktur i motsetning til andre skriptspråk. etc.

Enkel demo av shell-skripting med Bash Shell

Hvis du jobber på en terminal, noe du krysser dypt ned i kataloger. Så for å komme noen få kataloger opp i banen må vi utføre en kommando som denne som vist nedenfor for å komme til python-katalogen:

komme til python-katalogen:

komme til python-katalogen:

Det er ganske frustrerende, så hvorfor ikke vi kan ha et verktøy der vi bare må skrive inn navnet på katalogen og vi kan hoppe direkte til det uten å kjøre cd ../ kommando igjen og igjen. Lagre skriptet som jump.sh

bash
# !/bin/bash # A simple bash script to move up to desired directory level directly function jump() {  # original value of Internal Field Separator  OLDIFS=$IFS  # setting field separator to '/'  IFS=/  # converting working path into array of directories in path  # eg. /my/path/is/like/this  # into [, my, path, is, like, this]  path_arr=($PWD)  # setting IFS to original value  IFS=$OLDIFS  local pos=-1  # ${path_arr[@]} gives all the values in path_arr  for dir in '${path_arr[@]}'  do  # find the number of directories to move up to  # reach at target directory  pos=$[$pos+1]  if [ '' = '$dir' ];then  # length of the path_arr  dir_in_path=${#path_arr[@]}  #current working directory  cwd=$PWD  limit=$[$dir_in_path-$pos-1]  for ((i=0; i; i++))  do  cwd=$cwd/..  done  cd $cwd  break  fi  done }>

Foreløpig kan vi ikke kjøre skallskriptet vårt fordi det ikke har tillatelser. Vi må gjøre det kjørbart ved å skrive følgende kommando -

$ chmod +x bane/to/our/file/jump.sh

Nå for å gjøre dette tilgjengelig på hver terminaløkt, må vi legge dette inn .bashrc fil.

.bashrc er et shell-skript som Bash shell kjører når det startes interaktivt. Hensikten med en .bashrc-fil er å gi et sted hvor du kan sette opp variabler, funksjoner og aliaser, definere ledeteksten vår og definere andre innstillinger som vi ønsker å bruke hver gang vi åpner et nytt terminalvindu.

Åpne nå terminalen og skriv inn følgende kommando:

dharmendra alder

$ ekkokilde ~/path/to/our/file/jump.sh>> ~/.bashrc

Åpne nå terminalen og prøv ny hoppfunksjonalitet ved å skrive følgende kommando-

$ hoppe dir_name

akkurat som skjermbildet nedenfor:

hoppe dir_name

hoppe dir_name

Konklusjon

I denne artikkelen lærte vi om de essensielle delene av Linux-systemer: kjernen, som styrer alt, skallet, som lar oss samhandle med operativsystemet, og terminalen, grensesnittet vårt for å gi kommandoer. Vi utforsket kommandolinje og grafiske skall, som BASH, og forsto at terminalen er der vi skriver inn kommandoene våre. Artikkelen introduserte shell scripting, en måte å automatisere oppgaver ved hjelp av enkle skript, og diskuterte fordeler og ulemper ved å bruke dem. Et praktisk eksempel demonstrerte å lage et skript for rask katalognavigering. Til slutt så vi hvordan man får skriptet til å fungere og bli tilgjengelig i hver terminaløkt. Denne artikkelen er en nybegynnervennlig guide til å forstå og bruke Linux-skall og shell scripting.linux er et godt språk det er skrevet på linux-språket