Hur man skriver skript i Linux. Att skriva manus i Bash

I samhället av systemadministratörer och vanliga Linuxanvändare är det väldigt ofta en berömd praxis att skriva Bash-skript för att underlätta och förenkla implementeringen av specifika mål i Linux-operativsystemet. I den här artikeln kommer vi att titta på att skriva skript i Bash, titta på de grundläggande operatorerna, samt hur de fungerar, så att säga, bash-script från grunden. Enkelt uttryckt skrev du en gång ordningen på händelser som måste göras, målade data och så vidare, och skrev sedan enkelt och enkelt ett enda litet kommando och alla procedurer utförs efter behov.

Det är möjligt att gå ännu längre och schemalägga script-a för att köras automatiskt. Om du redan är en mer erfaren användare gör du troligen olika saker via terminalen ganska ofta. Detta är bara ett exempel och det finns många sådana åtgärder, till och med att ta backup och ladda upp kopierade filer till en fjärrserver. Ofta finns det uppgifter för vilka du behöver utföra flera kommandon i tur och ordning, till exempel för att uppdatera systemet måste du först uppdatera arkiven och först sedan ladda ner nya versioner av paket.

Detta är ett kommandoskal där du har möjlighet att utfärda olika kommandon som kommer att starta i hög hastighet och fruktbart utföra olika arbeten. Absolut all kraft i Linux OS ligger i användningen av terminalen. Därför, för att inte skriva samma kommandon flera gånger, kan du använda skript. Detta är väldigt bekvämt, du kombinerar bara flera kommandon som har en viss effekt och kör dem sedan med samma kommando eller till och med med en genväg. För operativsystemet linux har många skript skapats som körs i olika kommandoskal. Tja, i princip förstår du uppenbarligen redan detta.

Operativsystemet anser att endast de filer som har tilldelats den körbara egenskapen är körbara. Och redan tolken uttalar rad för rad i rad och utför alla direktiv som finns i filen. Men om den körbara egenskapen är inställd för dem, används ett specialiserat datorprogram för att starta dem - en tolk, särskilt bash-skalet. Vi kan köra det som vilket annat program som helst med en terminalserver, eller så kan vi köra ett skal och tala om för den vilken fil som ska köras.

I det här fallet behöver du inte ens den körbara flaggan. Istället för detta används filstartsignaturer och speciella flaggor. Vi har flera olika metoder för att göra ett skript - en inkludering på ett Linux OS. I Linux används filtillägget praktiskt taget inte för att bestämma dess typ på systemnivå. Filhanterare kan göra detta, men inte alltid. Operativsystemet anser att endast de filer som har tilldelats den körbara egenskapen är körbara. Det här är vanliga filer som innehåller text.

Bash-skript för Linux för dummies

En bash-konstruktion kan beskrivas i 7 åtaganden med en liknande typ: "skalanrop - bash script body - script end". Skript skrivs med stöd för olika textredigerare, de lagras som textdatordata. Men för att göra det bekvämare lagrar jag dem tillsammans med tillägget "*.sh". Men låt oss titta på allt detta i termer av ett specifikt mål. Det finns en användning som måste lanseras med en ganska stor uppsättning egenskaper. Du kommer ofta att behöva börja, och varje gång är du för lat för att ange dessa egenskaper. För att vara mer specifik, låt oss se hur den här effekten ser ut:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u användare -c 100

För detta script-a, låt oss använda bash-tolken. Den primära processen för oss är att ringa tolken. Öppna en textredigerare och skriv koden.

Låt oss lägga till denna operation, med hänsyn till de introducerade variablerna:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u $user -c $cash

Texten som vi kommer att skriva in i loggarna kommer att vara följande: text = "Saldot för användaren "användare" fylldes på med "kontanter" rubel vid tidpunkten"

Textargumentet varierar beroende på variablerna användare, kontanter och tid

om [ -e /home/Admin/scripts/sgconf/sgconf.log] sedan ekotext >> /home/Admin/scripts/sgconf/sgconf.log annars ekotext > /home/Admin/scripts/sgconf/sgconf.logfi

Nu, när vi behöver sätta någon pengar, kör vi skriptet med kommandot "sh sgconf.sh", ange namnet på betalaren och betalningsbeloppet. Inga långa rader, ingen huvudvärk med att ständigt skriva in samma värden.

Skapa bash-skript i Linux OS

För att skriva ett genialiskt bashscript måste vi utföra sådana vanliga procedurer. Låt oss skapa en tom fil på Linux-kommandoraden (vi kallar det firstscript för provet) och öppna den för redigering i din favorittextredigerare (vi/vim, nano, gedit, och så vidare). För att utveckla ett manus behöver du inte mycket stress, men för att skissera ett manus (program) måste du studera olika hjälplitteratur. Vi kommer att beskriva det mest grundläggande skriptet, så låt oss komma igång, men om du inte vet vad en terminal är och hur man använder den, då är du här. I början, för att skriva bash, måste vi skapa en katalog för våra skript och en fil där vi kommer att skriva allt, för detta öppnar vi terminalen och skapar en katalog.

Växla till den nyskapade katalogen

Och skapa en fil

sudo geditscript.sh

I mitt exempel kommer jag att skapa ett systemuppdateringsskript, skriva det till den här filen. vi kommer att öppna gedit textredigerare, jag gillar vim mer, men det kommer inte att accepteras allmänt för dig, så jag visar det på standarden.

sudo apt uppdatering;sudo apt full uppgradering;

Gör skriptfilen körbar (om den inte redan är det). Att köra sh-skript från kommandoraden är enkelt. Kör bash script linux.

chmod +x script.sh

Kör skriptet genom att helt enkelt ange sökvägen till det:

sökväg/till/script.sh

Om skriptet finns i den aktuella katalogen måste du ange ./ före skriptfilens namn:

Ibland krävs superanvändarrättigheter för att köra skriptet, skriv sedan bara sudo-kommandot före skriptet:

sudo./script.shsudo sökväg/to/script.sh

Naturligtvis kan du starta skriptet genom att direkt ordinera tolken: sh, bash och andra:

bash script.shsh sökväg/to/script.sh

Som du kan se är att starta ett sh-skript på linux en ganska vanlig uppgift, även om du inte är bekant med terminalen ännu. Det finns verkligen många skript och några av dem kan du behöva köra. I den här guiden har vi täckt några användbara Linux-bash-skript som du kan använda när du använder Linux OS. I den här artikeln tittade vi på användbara linux bash-skript som du kan använda när du arbetar med systemet. Vissa av dem består av flera rader, några är placerade på en rad. Det finns både mindre utdrag som du kan använda i dina skript och fullfjädrade dialogskript för att arbeta med dem via konsolen.

Först och främst, låt oss förstå vad som är manus och vad det är till för.

Manusöversatt från engelska - scenario. Vi tittar alla på film, många av oss tittar på föreställningar. För att skapa en film/föreställning skriver manusförfattare till dem, utifrån vilka skådespelarna, scen för scen, utför sina roller på scen, av vilka filmen/föreställningen bildas. Arbetet med att skapa ett manus är ganska mödosamt, där du måste ta hänsyn till allt in i minsta detalj, så att artisterna i slutändan kan uppfylla manusförfattarens plan, och tittaren ser ett helhetsverk.

På liknande sätt skrivs skript för att utföra en lista med uppgifter som användaren sätter ihop (kod) för att göra dem enklare och snabbare att köra på operativsystemet. För att skriva enkla manus är det inte nödvändigt att ha en programmerares utbildning.

Till att börja med, låt oss skapa det mesta, det varken är det enklaste script-skal för att uppdatera systemet.

Alla åtgärder kommer jag att utföra med systemet ubuntu, men de gäller även för andra system. linux, härrörande från ubuntu. För detta behöver vi: Textredigerare för att fylla den med nödvändiga uppgifter för att skapa ett skript (kod) och Terminal- för att köra det skapade skriptet. Dessa verktyg installeras i alla distributioner linux standard.

Så öppna en textredigerare gedit och skriv in de första obligatoriska tecknen under namnet shebang.
shebang i programmering är det en sekvens av två tecken: ett hashtecken och ett utropstecken ( #! ) i början av skriptfilen. Och lägg till dessa tecken utan mellanslag /bin/sh- tolken där skriptet kommer att köras. /bin/sh- det brukar vara Bourne skal eller en kompatibel kommandoradstolk som klarar "sökväg/till/skript" som första parameter.
Den första obligatoriska raden i skriptet kommer att se ut så här:

# Mitt första Ubuntu Update Script

Pundtecknet (#) i början av raden talar om för tolken/terminalen att denna rad inte behöver läsas och exekveras. Raden behövs i koden för det här skriptet så att skaparen av skriptet själv vet vad han ska köra på det här segmentet/scenen i koden, för att inte bli förvirrad i framtiden när det kommer att finnas mycket sådana rader. Sådana strängar med ett pundtecken kallas - kommenterade ut .

sudo apt uppdatering
sudo apt upgrade -y

-y i slutet av det andra kommandot gör det klart för tolken/terminalen att denna åtgärd/kommandot ska utföras automatiskt, utan ytterligare användarbekräftelse av att trycka på en tangent Inmatning. y- förkortning för engelska ja, dvs. Ja.

Det är allt. Ditt första skript har skapats. Du borde ha något som på bilden:


Det återstår att spara den skapade filen / skriptet och ge den namn med en obligatorisk förlängning i slutet - .sh. Förlängning .sh tilldelas den körbara filen.
jag gav honom namn - update.sh, sparar in hemmapp användare:


För att den skapade filen/skriptet ska kunna köras måste den ges tillstånd att göra det. Detta kan göras på två sätt.

1. Kör följande kommando i en terminal:

sudo chmod +x update.sh

2. Eller öppna filhanteraren i hemmapp(där du sparade det skapade skriptet), högerklicka på filen, i snabbmenyn - Egenskaper - Behörigheter och aktivera objektet - Prestanda: Tillåt filen att köras som ett program:


För att köra det skapade skriptet måste du öppna terminalen (som jag skrev om i början av artikeln, att terminalen är ett nödvändigt attribut/verktyg för att köra skriptet), skriv in sh, mellanslagsseparerat skriptnamn - update.sh och tryck på knappen Inmatning:


Eller skriv in i terminalen sh och dra den skapade filen med skriptet från filhanteraren (även åtskilda av ett mellanslag):


Efter att filsökvägen visas efter kommandot sh och ett mellanslag, tryck bara på knappen Stiga på(Enter) för att utföra en systemuppdatering:


Nu kan du när som helst göra en systemuppdatering skapad av ditt eget skript.

Ja, någon kanske hävdar att det inte är svårt att uppdatera systemet genom att utföra dessa två kommandon i terminalen, varför puffa upp och skapa något slags skript? Det är rätt. Men det här är ett exempel på att skapa ett enkelt manus för att visa att "inte gudar bränner grytor" 😃.

Efter att ha lärt dig hur man skriver och använder de enklaste skripten kan du skapa ett systemkonfigurationsskript så att de i händelse av en ominstallation av systemet kan använda det skapade skriptet utan att behöva leta efter webbplatser med liknande inställningar varje gång på nätverket.

Många av er använder sannolikt systeminställningsajter som de jag lägger upp efter nästa utgåva. ubuntu - Ubuntu efter installationen eller liknande webbplatser. Öppna en av dessa webbplatser: sedan en textredigerare för att skapa skriptet.
Till exempel gjorde jag följande tomt.

I en textredigerare anger du den första obligatoriska raden:

# Konfigurera Ubuntu efter installationen
# Systemuppdatering

Följande är systemuppdateringskommandona:

sudo apt uppdatering
sudo apt upgrade -y

Beskrivningsrad: Lägga till förråd:

# Lägger till arkiv

Och lägg till de nödvändiga förråden för ytterligare programvaruinstallation:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

Efter att de nödvändiga förråden har lagts till (igen, du kan ha dina egna förråd, jag har ett exempel), måste du uppdatera systemet:

Rad med beskrivning:

# Uppdatera systemet efter att du har anslutit arkiven

Och exekveringskommandot:

sudo apt uppdatering

Nu när arkiven har lagts till och systemet har uppdaterats är det dags att installera programvaran:

# Installera program

För att installera program räcker det att ange kommandot en gång sudo apt installera, och sedan, efter ett mellanslag, lägg till så många program du vill på den här raden, huvudsaken är att de är korrekt komponerade. Om ett program består av flera ord måste dess kommando vara monolitiskt, d.v.s. alla ord i den måste skrivas in med ett bindestreck, till exempel: enhet-tweak-verktyg:

sudo apt installera my-weather-indicator telegram skype lm-sensorer hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Installerar ytterligare codecs

# Multimedia och codecs

sudo apt installera ubuntu-restricted-extras -y

Avstängning om systemfel

# Inaktivera rapportering av systemkrasch

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

Tja, kanske det är allt. Den här genererade skriptfilen ska se ut så här:


Du måste spara den (klicka på knappen Spara) och ge namn med förlängning .sh. jag ringde honom Installation\Ubuntu.sh(du kan namnge det på ett annat sätt, men alltid med tillägget .sh):


Vi gör det skapade skriptet körbart:

sudo chmod +x Installation\ Ubuntu.sh

För att köra det genererade skriptet, skriv in i terminalen sh och namnet på det skapade skriptet, avgränsade med ett mellanslag, eller sh, space och dra den skapade filen till terminalen, som förklarats tidigare i det enklaste skriptet och tryck på tangenten Inmatning, för att utföra det.

Notera. omvänt snedstreck i kommandot Installation\Ubuntu.sh undviker ett mellanslag i filnamnet för terminalen mellan två separata ord.

Efter att skriptet har körts, lagra det för framtiden, för en eventuell ominstallation av systemet och omkonfigurering är det bäst på en separat del av f / disken i mappen /Hem. Om det inte finns någon, skriv i molntjänsten (molndatalagring): DropBox, Cloud Mail.Ru, Mega.co etc., för att när som helst själv använda skriptet, eller för att hjälpa vänner eller släktingar att sätta upp systemet.

Oavsett hur enkelt det grafiska gränssnittet i Linux är och hur många funktioner det än finns finns det fortfarande uppgifter som är mer bekväma att lösa via terminalen. För det första, eftersom det är snabbare, och för det andra, inte alla maskiner har ett grafiskt gränssnitt, till exempel på servrar, utförs alla åtgärder genom terminalen för att spara datorresurser.

Om du redan är en mer erfaren användare, så utför du förmodligen ofta olika uppgifter via terminalen. Ofta finns det uppgifter för vilka du behöver utföra flera kommandon i tur och ordning, till exempel för att uppdatera systemet måste du först uppdatera arkiven och först sedan ladda ner nya versioner av paket. Detta är bara ett exempel och det finns många sådana åtgärder, till och med att ta backup och ladda upp kopierade filer till en fjärrserver. Därför, för att inte skriva samma kommandon flera gånger, kan du använda skript. I den här artikeln kommer vi att titta på att skriva skript i Bash, titta på de grundläggande operatorerna, samt hur de fungerar, så att säga, bash-script från grunden.

Ett script, eller som det också kallas, ett script, är en sekvens av kommandon som läses och exekveras i tur och ordning av ett tolkprogram, i vårt fall är det ett kommandoradsprogram - bash.

Ett script är en vanlig textfil som listar de vanliga kommandon som vi är vana vid att ange manuellt, samt programmet som kommer att köra dem. Laddaren som kommer att köra skriptet vet inte hur man arbetar med miljövariabler, så den måste skicka den exakta sökvägen till programmet som ska startas. Och sedan skickar det ditt skript till det här programmet och körningen börjar.

Det enklaste exemplet på ett skript för ett Bash-skal:

!/bin/bash
echo "Hej världen"

Echo-verktyget skriver ut strängen som skickas till den som en parameter på skärmen. Den första raden är speciell, den anger vilket program som ska utföra kommandona. Generellt sett kan vi skapa ett skript i vilket annat programmeringsspråk som helst och ange önskad tolk, till exempel i python:

!/usr/bin/env python
print("Hej värld")

Eller i PHP:

!/usr/bin/env php
echo "Hej världen";

I det första fallet pekade vi direkt på programmet som kommer att köra kommandona; i de nästa två vet vi inte den exakta adressen till programmet, så vi ber verktyget env att hitta det efter namn och köra det. Detta tillvägagångssätt används i många skript. Men det är inte allt. På ett Linux-system, för att systemet ska kunna köra ett skript, måste du ställa in den körbara flaggan på filen med den.

Den här flaggan ändrar ingenting i själva filen, den talar bara om för systemet att detta inte bara är en textfil, utan ett program och det måste köras, öppna filen, ta reda på tolken och kör. Om ingen tolk anges kommer användarens tolk att användas som standard. Men eftersom inte alla använder bash måste du ange detta uttryckligen.

Att springa:

chmod ugo+x script_file

Nu kör vi vårt lilla första program:

./script_file

Allt fungerar. Du vet redan hur man skriver ett litet manus för till exempel en uppdatering. Som du kan se innehåller skripten samma kommandon som exekveras i terminalen, de är väldigt lätta att skriva. Men nu ska vi komplicera uppgiften lite. Eftersom ett skript är ett program måste det fatta vissa beslut på egen hand, lagra resultatet av kommandoexekveringen och köra loopar. Allt detta kan göras med Bash-skalet. Det är sant att allt är mycket mer komplicerat här. Låt oss börja enkelt.

Variabler i skript

Att skriva skript i Bash är sällan komplett utan att lagra temporär data, vilket innebär att man skapar variabler. Inte ett enda programmeringsspråk klarar sig utan variabler, och vårt primitiva skalspråk också.

Du kan ha stött på miljövariabler tidigare. Så det här är samma variabler och de fungerar på samma sätt.

Låt oss till exempel deklarera en strängvariabel:

string="Hej världen"

Värdet på vår sträng står inom citattecken. Men i själva verket behövs inte alltid offerter. Huvudprincipen för bash bevaras här - ett mellanslag är ett specialtecken, en separator, så om du inte använder citattecken, kommer världen redan att betraktas som ett separat kommando, av samma anledning sätter vi inte mellanslag före och efter lika tecken.

Symbolen $ används för att visa värdet på en variabel. Till exempel:

Låt oss ändra vårt manus:

!/bin/bash
string1="hej"
string2=värld
string=$string1$string2
echo $sträng

Och vi kollar:

Bash skiljer inte mellan variabeltyper på det sätt som högnivåspråk som C++ gör, du kan tilldela både ett nummer och en sträng till en variabel. På samma sätt kommer allt detta att betraktas som en sträng. Skalet stöder bara sammanslagning av strängar, för att göra detta, skriv helt enkelt variabelnamnen i rad:

!/bin/bash
string1="hej"
string2=värld
string=$string1$string2\ och\ jag
string3=$string1$string2" och jag"
echo $string3

Vi kontrollerar:

Observera att, som sagt, citattecken är valfria om det inte finns några specialtecken i strängen. Ta en närmare titt på båda sätten att slå samman strängar, citatteckens roll demonstreras också här. Om du behöver mer avancerad strängbearbetning eller aritmetiska operationer ingår inte detta i skalets möjligheter, vanliga verktyg används för detta.

Variabler och kommandoutgång

Variabler skulle inte vara så användbara om de inte kunde lagra resultatet av exekvering av verktyg. Följande syntax används för detta:

$(team)

Med den här konstruktionen kommer utdata från kommandot att omdirigeras direkt till där det anropades från, och inte till skärmen. Till exempel returnerar datumverktyget det aktuella datumet. Dessa kommandon är likvärdiga:

Förstår du? Låt oss skriva ett manus där hej värld och datum kommer att visas:

string1="hej värld"
string2=$(datum)

sträng=$sträng1$sträng2

Nu vet du tillräckligt om variabler och du är redo att skapa ett bash-skript, men det kommer mer. Därefter kommer vi att titta på parametrarna och kontrollstrukturerna. Låt mig påminna dig om att alla dessa är vanliga bash-kommandon, och du behöver inte spara dem i en fil, du kan köra dem direkt när du är på språng.

Skriptparametrar

Det är inte alltid möjligt att skapa ett bash-skript som inte är beroende av användarinmatning. I de flesta fall måste du fråga användaren vilken åtgärd som ska vidtas eller vilken fil som ska användas. När vi anropar ett skript kan vi skicka parametrar till det. Alla dessa parametrar är tillgängliga som variabler namngivna som siffror.

Variabeln som heter 1 innehåller värdet för den första parametern, variabel 2, den andra och så vidare. Detta bash-skript kommer att mata ut värdet för den första parametern:

!/bin/bash
echo $1

Kontrollkonstruktioner i skript

Att skapa ett bash-skript skulle inte vara så användbart utan förmågan att analysera vissa faktorer och utföra nödvändiga åtgärder som svar på dem. Detta är ett ganska komplext ämne, men det är väldigt viktigt för att skapa ett bash-skript.

I Bash finns det ett kommando för att kontrollera villkor. Dess syntax är följande:

if command_condition
sedan
team
annan
team
fi

Detta kommando kontrollerar utgångskoden för villkorskommandot, och om 0 (framgång) utför kommandot eller flera kommandon efter ordet då, om utgångskoden är 1, exekveras det andra blocket, fi betyder slutförandet av blocket av kommandon.

Men eftersom vi oftast inte är intresserade av returkoden för kommandot, utan av att jämföra strängar och siffror, introducerades kommandot [[, som låter dig utföra olika jämförelser och utfärda en returkod beroende på resultatet av jämförelsen. Dess syntax är:

[[ parameter1 operator parameter2 ]]

Som jämförelse använder vi de redan bekanta operatorerna<,>,=,!= osv. Om uttrycket är sant kommer kommandot att returnera 0, om inte - 1. Du kan testa dess beteende lite i terminalen. Returkoden för det sista kommandot lagras i variabeln $?:

Nu, genom att kombinera allt detta, får vi ett skript med ett villkorligt uttryck:

!/bin/bash
om [[ $1 > 2 ]]
sedan
echo $1" är större än 2"
annan
echo $1" är mindre än 2 eller 2"
fi

Naturligtvis har den här designen mer kraftfulla funktioner, men det är för komplicerat att täcka dem i den här artikeln. Jag kanske skriver om det senare. För nu, låt oss gå vidare till cykler.

Slingor i skript

Fördelen med program är att vi på flera rader kan specificera vilka åtgärder som behöver utföras flera gånger. Det är till exempel möjligt att skriva bash-skript som bara består av några få rader, men som körs i timmar, analyserar parametrarna och utför nödvändiga åtgärder.

Låt oss först titta på for-slingan. Här är dess syntax:

för variabel i listan
do
team
Gjort

Itererar över hela listan och tilldelar värdet från listan i tur och ordning till variabeln, efter varje tilldelning, utför kommandona som finns mellan gör och klar.

Låt oss till exempel iterera över fem siffror:

för index i 1 2 3 4 5
do
echo $index
Gjort

Eller så kan du lista alla filer i den aktuella katalogen:

för fil i $(ls -l); gör eko "$file"; Gjort

Som du förstår kan du inte bara visa namn, utan också utföra nödvändiga åtgärder, detta är mycket användbart när du skapar ett bash-skript.

Den andra loopen vi ska titta på är while-loopen, som körs medan condition-kommandot returnerar kod 0, framgång. Tänk på syntaxen:

medan kommandovillkor
do
team
Gjort

Tänk på ett exempel:

!/bin/bash
index=1
medan [[ $index< 5 ]]
do
echo $index
låt "index=index+1"
Gjort

Som du kan se är allt gjort, kommandot let utför helt enkelt den angivna matematiska operationen, i vårt fall ökar det värdet på variabeln med en.

Jag skulle vilja notera något annat. Konstruktioner som while, for, if är designade för att skrivas på flera rader, och om du försöker skriva dem på en rad får du ett felmeddelande. Men ändå är det möjligt, för detta, där det ska finnas en radbrytning, sätta ett semikolon ";". Till exempel kunde den föregående slingan ha körts som en enda rad:

index=1; medan [[ $index< 5 ]]; do echo $index; let "index=index+1"; done;

Allt är väldigt enkelt, jag försökte att inte komplicera artikeln med ytterligare bash-termer och funktioner, bara de mest grundläggande. I vissa fall kan du behöva göra en gui för ett bash-skript, sedan kan du använda program som zenity eller kdialog, med vilka det är väldigt bekvämt att visa meddelanden för användaren och till och med be honom om information.

Slutsatser

Nu förstår du grunderna i scripting i linux och du kan skriva det script du behöver, till exempel för säkerhetskopiering. Jag försökte titta på bash-skript från början. Därför har inte alla aspekter beaktats. Kanske återkommer vi till detta ämne i någon av följande artiklar.

Kommandoraden och de ofattbara sakerna som du kan göra med den är kännetecknet för UNIX och alla dess arvtagare. Och där det finns en kommandorad finns det skript. Och idag... nej, vi kommer inte lära oss hur man skriver manus, vi kommer att överväga de mest användbara av dem, de som du kan använda dagligen för att lösa en mängd olika uppgifter, från väderrapporter och en webbserver i en rad till en bot för twitter på tio rader och ett skript för att automatiskt starta valfri torrentklient.

Jag kommer genast att reservera mig för att jag inte alls är en anhängare av shamanism och jag uppmanar dig inte i något fall att sitta i den grön-svarta konsolen och skriva en massa bokstäver för att utföra åtgärder som det är för tillräckligt för att föra musen över det önskade elementet i det grafiska gränssnittet. Jag är dock övertygad om att konsolen och skripten är mycket bättre lämpade för att lösa många problem än det grafiska gränssnittet, och därför kan de inte försummas. Dessutom låter alla DE dig skapa en ikon för skriptet, så du behöver inte ens öppna konsolen för att köra det.

Enkla exempel

Så, utan vidare, låt oss gå direkt till exemplen:

$ curl ifconfig.com

Detta enkla kommando visar dig den externa IP-adressen - perfekt om du går till nätverket via en router. Allt det gör är att bara ringa ifconfig.co-servern, som returnerar IP-adressen på en rad istället för en hel webbsida.

Och ja, det här är inte alls ett skript, det är bara ett kommando, men för att förvandla ett kommando till ett skript, lägg det bara i en textfil och lägg till den så kallade shebang som första rad, det vill säga tecknen # ! följt av namnet på kommandotolken:

$ chmod +x ~/bin/myip.sh

Nu kan det anropas från kommandoraden med kommandot myip.sh.

#!/bin/sh curl -4 wttr.in/Moscow

Detta skript låter dig få en väderrapport för fyra dagar. Principen här är densamma som i fallet med ifconfig.co.

Konsolvädersammanfattning #!/bin/sh dig +kort txt $1.wp.dg.cx

Och på så sätt kan du få en kort beskrivning av något på Wikipedia, och med hjälp av en DNS-fråga istället för att kontakta en webbserver. Förresten, det är också väldigt enkelt att skapa en webbserver via kommandoraden:

#!/bin/sh while (nc -l 80< file.html >:) ; gör: ; Gjort

Det här skriptet är baserat på verktyget netcat (nc), som kallas den schweiziska armékniven för nätverksoperationer. Skriptet startar en loop som exekverar kommandot nc, som lyssnar på port 80 och, som svar på en begäran, returnerar file.html, skickar den godkända begäran till ingenstans (symbolen betyder noop, det vill säga en tom operation).

Med enkla skript och kommandon kan du enkelt lyssna på internetradio:

#!/bin/sh mpv --volume=50 -spellista ~/16bit.fm_128.m3u

Naturligtvis måste spellistan i M3U-format laddas ner i förväg från radiostationens hemsida. Förresten, om du startar MPlayer med argumentet --input-ipc-server=/tmp/mpvsocket, kan den styras genom att skriva kommandon till en fil. Justera till exempel volymen:

eko "volym +10" | socat - /tmp/mpvsocket

Skapa två skript: ett för att starta, det andra för att stoppa radion (med raden killall mpv), häng dem på skrivbordet och ställ in DE-snabbtangenterna för att styra uppspelningen. Voila, du har en spelare för internetradio redo, som kan startas genom att helt enkelt klicka på ikonen på skrivbordet. Och det kommer knappast att slösa minne eller ta upp brickan.

Men låt oss avvika från nätverksdrift och återgå till lokala angelägenheter.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Det här är ett av mina favoritmanus. Det skapar ett tar.gz-arkiv för den aktuella katalogen. Konstruktionen $(PWD##*/) förtjänar särskild uppmärksamhet här, som tar hela sökvägen till den aktuella katalogen ($PWD-variabel) och tar bort den första delen från den upp till det sista snedstrecket, och lämnar alltså bara namnet på katalogen sig. Vidare läggs tillägget tar.gz till. Du kan läsa mer om sådana konstruktioner i man bash.

#!/bin/sh medan sant; gör inotifywait -r -e ÄNDRA KATALOG && DIN_KOMMANDA klar

Och det här är ett skript som kör ett kommando som svar på en förändring av filer i katalogen. Den kan användas för många olika ändamål, som att slå på spelaren automatiskt när en MP3-fil sparas. Eller bara visa ett meddelande på skrivbordet med notify-send som ett kommando:

Meddela-skicka "Fil ändrad"

Skrivbord

Eftersom vi pratar om skrivbordet, låt oss fortsätta. Liksom konsolen kan den också skriptas. Till exempel, här är ett skript som laddar slumpmässiga bakgrundsbilder som lagts upp på bakgrundsbilden reddit-kanalen:

Fortsatt tillgänglig endast för medlemmar

Alternativ 1. Gå med i "site"-gemenskapen för att läsa allt material på sajten

Medlemskap i communityn under den angivna perioden ger dig tillgång till ALLT hackermaterial, ökar din personliga kumulativa rabatt och låter dig samla ett professionellt Xakep-poängbetyg!

Dela med sig