logo

Introduktion till Linux Shell och Shell Scripting

Om vi ​​använder något större operativsystem interagerar vi indirekt med skal . När vi kör Ubuntu, Linux Mint eller någon annan Linux-distribution interagerar vi med skalet genom att använda terminalen. I den här artikeln kommer vi att diskutera Linux-skal och skalskript, så innan vi förstår skalskript måste vi bekanta oss med följande terminologier:

  • Kärna
  • Skal
  • Terminal

Innehållsförteckning



Vad är Kernel?

Kärnan är ett datorprogram som är kärnan i en dators operativsystem, med fullständig kontroll över allt i systemet. Den hanterar följande resurser i Linux-systemet –

  • Filhantering
  • Processledning
  • I/O-hantering
  • Minneshantering
  • Enhetshantering etc.

Det är ofta felaktigt att Linus Torvalds har utvecklat Linux OS, men egentligen är han bara ansvarig för utvecklingen av Linux-kärnan.

Komplett Linux-system = Kernel + GNU systemverktyg och bibliotek + andra hanteringsskript + installationsskript.



Vad är Shell?

Ett skal är ett speciellt användarprogram som tillhandahåller ett gränssnitt för användaren att använda operativsystemtjänster. Shell accepterar läsbara kommandon från användare och konverterar dem till något som kärnan kan förstå. Det är en kommandospråkstolk som utför kommandon som läses från indataenheter som tangentbord eller från filer. Skalet startar när användaren loggar in eller startar terminalen.

hög sort
Linux-skal

Linux-skal

Shell klassificeras i stora drag i två kategorier –



  • Kommandoradsskal
  • Grafiskt skal

Kommandoradsskal

Shell kan nås av användare med hjälp av ett kommandoradsgränssnitt. Ett speciellt program som heter Terminal i Linux/macOS, eller Kommandotolken i Windows OS tillhandahålls för att skriva in de mänskliga läsbara kommandona som cat, ls etc. och sedan körs det. Resultatet visas sedan på terminalen för användaren. En terminal i Ubuntu 16.4-systemet ser ut så här -

linux kommandorad

linux kommandorad

I skärmdumpen ovan ls kommando med -l alternativet exekveras. Det kommer att lista alla filer i den aktuella arbetskatalogen i ett långt listformat.
Att arbeta med ett kommandoradsskal är lite svårt för nybörjare eftersom det är svårt att memorera så många kommandon. Den är mycket kraftfull; det tillåter användare att lagra kommandon i en fil och köra dem tillsammans. På så sätt kan alla repetitiva uppgifter enkelt automatiseras. Dessa filer kallas vanligtvis batchfiler i Windows och Skal Skript i Linux/macOS-system.

Grafiska skal

Grafiska skal tillhandahåller medel för att manipulera program baserade på det grafiska användargränssnittet (GUI), genom att tillåta operationer som att öppna, stänga, flytta och ändra storlek på fönster, samt byta fokus mellan fönster. Window OS eller Ubuntu OS kan betraktas som ett bra exempel som ger användaren GUI för att interagera med programmet. Användare behöver inte skriva in kommandon för varje åtgärd. Ett typiskt gränssnitt i Ubuntu-systemet –

GUI-skal

GUI-skal

java har nästa

Det finns flera skal tillgängliga för Linux-system som -

  • BASH (Bourne Again SHell) – Det är det mest använda skalet i Linux-system. Det används som standardinloggningsskal i Linux-system och i macOS. Det kan också installeras på Windows OS.
  • CSH (C SHell) – C-skalets syntax och dess användning är mycket lik programmeringsspråket C.
  • KSH (Korn SHell) – Korn Shell var också basen för POSIX Shell standardspecifikationer etc.

Varje skal gör samma jobb men förstår olika kommandon och ger olika inbyggda funktioner.

Vad är en terminal?

Ett program som ansvarar för att tillhandahålla ett gränssnitt till en användare så att han/hon kan komma åt skalet. Det tillåter i princip användare att ange kommandon och se resultatet av dessa kommandon i ett textbaserat gränssnitt. Stora skript som är skrivna för att automatisera och utföra komplexa uppgifter exekveras i terminalen.


För att komma åt terminalen, sök helt enkelt i sökrutan terminal och dubbelklicka på den.

öppen terminal

Här kan du se hur terminalen ser ut på Red Hat Linux.

sträng till boolesk java

terminal

Skalskript

Vanligtvis är skalen interaktiva, vilket innebär att de accepterar kommandon som input från användare och kör dem. Men ibland vill vi köra ett gäng kommandon rutinmässigt, så vi måste skriva in alla kommandon varje gång i terminalen.

Eftersom ett skal också kan ta kommandon som indata från fil, kan vi skriva dessa kommandon i en fil och kan köra dem i skal för att undvika detta repetitiva arbete. Dessa filer kallas Skalskript eller Shell-program . Skalskript liknar batchfilen i MS-DOS. Varje skalskript sparas med `.sh` filtillägg, t.ex. myscript.sh.

Ett skalskript har syntax precis som alla andra programmeringsspråk. Om du har någon tidigare erfarenhet av något programmeringsspråk som Python, C/C++ etc. Det skulle vara väldigt enkelt att komma igång med det.

få aktuellt datum i java

Ett skalskript består av följande element –

  • Shell Nyckelord – om, annars, bryta etc.
  • Skalkommandon – cd, ls, echo, pwd, touch etc.
  • Funktioner
  • Styr flöde – om..då..annat, fodral och skalslingor mm.

Varför behöver vi skalskript?

Det finns många anledningar till att skriva skalskript:

  • För att undvika repetitivt arbete och automatisering
  • Systemadministratörer använder skalskript för rutinmässiga säkerhetskopieringar.
  • Systemövervakning
  • Lägger till ny funktionalitet i skalet etc.

Några fördelar med skalskript

  • Kommandot och syntaxen är exakt samma som de som anges direkt på kommandoraden, så programmerare behöver inte byta till en helt annan syntax
  • Att skriva skalskript går mycket snabbare
  • Snabbstart
  • Interaktiv felsökning etc.

Några nackdelar med skalskript

  • Utsatt för kostsamma fel kan ett enda misstag ändra kommandot vilket kan vara skadligt.
  • Långsam exekveringshastighet
  • Designfel inom språksyntaxen eller implementeringen
  • Inte väl lämpad för stora och komplexa uppgifter
  • Ge minimal datastruktur till skillnad från andra skriptspråk. etc.

Enkel demo av skalskript med Bash Shell

Om du arbetar på en terminal, något du går igenom djupt ner i kataloger. Sedan för att komma några kataloger upp i sökvägen måste vi köra ett kommando som detta som visas nedan för att komma till python-katalogen:

komma till pythonkatalogen:

komma till pythonkatalogen:

Det är ganska frustrerande, så varför inte kan vi ha ett verktyg där vi bara måste skriva in namnet på katalogen och vi kan direkt hoppa till det utan att köra CD ../ kommandot om och om igen. Spara skriptet som jump.sh

våldsamt slag
# !/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 }>

För närvarande kan vi inte köra vårt skalskript eftersom det inte har behörighet. Vi måste göra det körbart genom att skriva följande kommando -

$ chmod +x sökväg/till/vår/fil/jump.sh

Nu för att göra detta tillgängligt på varje terminalsession måste vi lägga in detta .bashrc fil.

.bashrc är ett skalskript som Bash shell kör när det startas interaktivt. Syftet med en .bashrc-fil är att tillhandahålla en plats där du kan ställa in variabler, funktioner och alias, definiera vår prompt och definiera andra inställningar som vi vill använda när vi öppnar ett nytt terminalfönster.

Öppna nu terminalen och skriv följande kommando:

Freddie Mercury född

$ ekokälla ~/path/to/our/file/jump.sh>> ~/.bashrc

Öppna nu din terminal och prova nya hoppfunktioner genom att skriva följande kommando-

$ hoppa dir_name

precis som skärmdumpen nedan:

hoppa dir_name

hoppa dir_name

Slutsats

I den här artikeln lärde vi oss om de väsentliga delarna av Linux-system: kärnan, som styr allt, skalet, som låter oss interagera med operativsystemet, och terminalen, vårt gränssnitt för att ge kommandon. Vi utforskade kommandoraden och grafiska skal, som BASH, och förstod att terminalen är där vi skriver in våra kommandon. Artikeln introducerade skalskript, ett sätt att automatisera uppgifter med enkla skript, och diskuterade fördelarna och nackdelarna med att använda dem. Ett praktiskt exempel visade att man skapade ett skript för snabb katalognavigering. Slutligen såg vi hur man får skriptet att fungera och bli tillgängligt i varje terminalsession. Den här artikeln är en nybörjarvänlig guide för att förstå och använda Linux-skal och skal scripting.linux är ett bra språk det är skrivet på linux-språket