sv.phhsnews.com


sv.phhsnews.com / Begreppsguiden till Shell Scripting: Grunderna

Begreppsguiden till Shell Scripting: Grunderna


Termen "shell scripting" nämns ofta i Linux-forum, men många användare är inte bekanta med det. Att lära sig denna enkla och kraftfulla programmeringsmetod kan hjälpa dig att spara tid, lära sig kommandoraden bättre och förhindra tråkiga filhanteringsuppgifter.

Vad är Shell Scripting?

Att vara en Linux-användare innebär att du leker med kommandot linje. Gilla det eller inte, det finns bara några saker som görs mycket lättare via detta gränssnitt än genom att peka och klicka. Ju mer du använder och lär kommandoraden, desto mer ser du dess potential. Tja, kommandoraden själv är ett program: skalet. De flesta Linux distros använder idag Bash, och det här är vad du verkligen kommenterar.

Nu kan några av er som använde Windows innan de använder Linux komma ihåg batchfiler. Dessa var små textfiler som du kan fylla med kommandon som ska utföras och Windows skulle köra dem i sin tur. Det var ett smart och snyggt sätt att få saker att göra, som att köra spel i ditt högskolelaboratorium när du inte kunde öppna systemmappar eller skapa genvägar. Batchfiler i Windows, medan det är användbart, är en billig imitation av skalskript.

Shell-skript tillåter oss att programmera kommandon i kedjor och få systemet att utföra dem som en skripthändelse, precis som batchfiler. De möjliggör också mycket mer användbara funktioner, såsom kommandosubstitution. Du kan åberopa ett kommando, som datum, och använda det som utgångspunkt som en del av ett filnamnschema. Du kan automatisera säkerhetskopior och varje kopierad fil kan ha det aktuella datumet bifogat till slutet av dess namn. Skript är inte bara invokationer av kommandon, heller. De är program i sig själv. Scripting tillåter dig att använda programmeringsfunktioner - som "för" loopar, om / då / annat uttalanden, och så vidare - direkt i operativsystemets gränssnitt. Och du behöver inte lära dig något annat språk eftersom du använder det du redan vet: kommandoraden.

Det är egentligen skriptets kraft, tror jag. Du kommer att programmera med kommandon som du redan vet, medan du lär dig häftklammer i de flesta större programmeringsspråk. Behöver du göra något repeterande och tråkigt? Skriv det! Behöver du en genväg för ett riktigt ingripet kommando? Skriv det! Vill du bygga ett lättanvänt kommandoradsgränssnitt för något? Skript det!

Innan du börjar

Innan vi börjar vår skriptserie, låt oss täcka några grundläggande uppgifter. Vi använder bash-skalet, som de flesta Linux-distributioner använder nativt. Bash är tillgängligt för Mac OS-användare och Cygwin på Windows också. Eftersom det är så universellt, borde du kunna skript oavsett din plattform. Dessutom, så länge som alla kommandon som refereras finns, kan skript fungera på flera plattformar med liten eller ingen tweaking krävs.

Scripting kan enkelt använda "administratör" eller "superuser" privilegier, så det är bäst att testa skript innan du sätter dem på jobbet. Använd också sunt förnuft, som att se till att du har säkerhetskopior av filerna du ska köra ett skript på. Det är också väldigt viktigt att använda rätt alternativ, som -i för kommandot rm, så att din interaktion krävs. Detta kan förhindra några otäcka misstag. Läs så igenom skript som du laddar ner och var försiktig med data du har, bara om sakerna går fel.

Skript är helt enkelt enkla textfiler. Du kan använda någon textredigerare för att skriva dem: gedit, emacs, vim, nano ... Listan fortsätter. Var noga med att spara den som vanlig text, inte som en rik text eller ett Word-dokument. Eftersom jag älskar användarvänligheten som nano tillhandahåller, använder jag det.

Skriptbehörigheter och namn

Skript utförs som program, och för att detta ska kunna ske måste de ha rätt behörigheter. Du kan göra skript körbara genom att köra följande kommando på det:

chmod + x ~ / somecrazyfolder / script1

Detta gör det möjligt för någon att köra det aktuella skriptet. Om du vill begränsa användningen till bara din användare kan du använda det istället:

chmod u + x ~ / somecrazyfolder / script1

För att köra det här skriptet måste du cd i rätt katalog och sedan köra skriptet så här:

cd ~ / somecrazyfolder

./ script1

För att göra det bekvämare kan du placera skript i en "bin" -mapp i din hemkatalog:

~ / bin

I många moderna distroer skapas den här mappen inte längre som standard, men du kan skapa Det. Detta är vanligtvis där exekverbara filer lagras som tillhör din användare och inte till andra användare. Genom att placera skript här kan du bara köra dem genom att skriva in deras namn, precis som andra kommandon, istället för att behöva cd och använda prefixet "./".

Innan du namnger ett skript bör du dock följande kommando för att kontrollera om du har ett program installerat som använder det namnet:

vilket [kommando]

Många människor heter deras tidiga skript "test" och när de försöker köra det i kommandoraden, ingenting händer. Detta beror på att det strider mot testkommandot, vilket gör ingenting utan argument. Var alltid säker på att dina skriptnamn inte stämmer överens med kommandon, annars kanske du tycker att du gör saker du inte tänker göra!

Scripting Guidelines

Som jag nämnde tidigare är varje skriptfil i huvudsak vanlig text. Det betyder inte att du kan skriva vad du vill ha, men kommer inte att vara. När en textfil försöker utföras, kommer skalen att analysera dem för ledtrådar om huruvida de är skript eller inte och hur man hanterar allt ordentligt. På grund av detta finns några riktlinjer du behöver veta.

  1. Varje skript bör vara med "#! / Bin / bash"
  2. Varje ny rad är ett nytt kommando
  3. Kommentarlinjer börjar med en #
  4. Kommandon är omgivna av ()

Hash-Bang Hack

När ett skal analyseras via en textfil är det mest direkta sättet att identifiera filen som ett skript genom att göra din första rad:

# ! / bin / bash

Om du använder ett annat skal, ersätt dess sökväg här. Kommentarlinjer börjar med hashes (#), men lägger till bang (!) Och skalbanan efter att det är ett slags hack som kringgår denna kommentoregel och kommer att tvinga manuset att utföras med det skal som den här raden pekar på.

Ny linje = Ny kommando

Varje ny rad ska betraktas som ett nytt kommando, eller en komponent i ett större system. Om / då / andra uttalanden kommer till exempel att ta över flera linjer, men varje komponent i det systemet är i en ny rad. Låt inte kommandot blöda i nästa rad, eftersom det här kan trunka föregående kommando och ge dig ett fel på nästa rad. Om din textredigerare gör det, bör du stänga av textförpackning för att vara på den säkra sidan. Du kan stänga av textförpackning i nano-bitar som slår ALT + L.

Kommentar Ofta med #s

Om du börjar en linje med en # ignoreras linjen. Detta gör det till en kommentarrad, där du kan påminna dig om vad produktionen av det föregående kommandot var eller vad nästa kommando kommer att göra. Återigen stäng av textomslag, eller bryt dig om att kommentera flera rader som alla börjar med en hash. Att använda massor av kommentarer är en bra övning att behålla, eftersom det låter dig och andra personer enkelt anpassa dina skript. Det enda undantaget är det ovan nämnda Hash-Bang-hacket, så följ inte #s med! S. ; -)

Kommandon är omgivna av parenteser

På äldre dagar gjordes kommandosubstitutioner med enskilda fältmärken (', delar ~ -knappen). Vi kommer inte att ta på det här ännu, men eftersom de flesta går och utforskar efter att ha läst grunderna är det nog en bra idé att nämna att du borde använda parentes istället. Detta beror främst på att när du boar - sätt kommandon i andra kommandon - fungerar parentes bättre.

Din första skript

Låt oss börja med ett enkelt skript som låter dig kopiera filer och lägga till datum i slutet av filnamnet. Låt oss kalla det "datecp". Låt oss först kontrollera om det namnet står i konflikt med någonting:

Du kan se att det inte finns någon utmatning av vilket kommando, så vi är alla inställda att använda det här namnet.

Låt oss skapa en tom fil i ~ / bin mapp:

touch ~ / bin / datecp

Och låt oss ändra tillståndet nu, innan vi glömmer:

Låt oss börja bygga vårt skript då. Öppna den filen i valfri textredigerare. Som jag sa, gillar jag enkelheten i nano.

nano ~ / bin / datecp

Och låt oss fortsätta och sätta in förstahandsgränsen och en kommentar om vad det här skriptet gör.

Nästa, låt oss förklara en variabel. Om du någonsin har tagit algebra vet du förmodligen vad det är. En variabel låter oss lagra information och göra saker med den. Variabler kan "expandera" när de refereras någon annanstans. Det är istället för att visa sitt namn, de kommer att visa sina lagrade innehåll. Du kan senare berätta samma variabel för att lagra annan information, och eventuella instruktioner som inträffar efter det kommer att använda den nya informationen. Det är en riktigt bra platshållare.

Vad ska vi lägga ut variabel? Tja, lagra datum och tid! För att göra detta ska vi anropa datumkommandot.

Ta en titt på skärmdumpen nedan för hur du bygger uppdata från datumkommandot:

Du kan se det genom att lägga till olika variabler som börjar med% du kan ändra kommandot på kommandot till det du vill ha. För mer information, kan du se på den manuella sidan för datumkommandot.

Låt oss använda den senaste iterationen av datumkommandot, "datum +% m_% d_% y-% H.% M.% S" och använd det i vårt skript.

Om vi ​​skulle spara det här skriptet just nu kunde vi köra det och det skulle ge oss utgången av datumkommandot som vi skulle förvänta oss:

Men låt oss göra något annat. Låt oss ge ett variabelt namn, som date_formatted till det här kommandot. Den korrekta syntaxen för detta är följande:

variabel = $ (kommandooptioner argument)

Och för oss skulle vi bygga det så här:

date_formatted = $ (datum +% m_% d_% y-% H.% M.% S)

Detta kallas kommandosubstitution. Vi berättar väsentligen att när variabeln "date_formatted" dyker upp, kör kommandot inuti parenteserna. Då ska vad som helst som kommandon ger, visas i stället för variabelns namn, "date_formatted".

Här är ett exemplarskript och dess utgång:

Observera att det finns två mellanslag i utmatningen. Utrymmet i citaten av ekokommandot och utrymmet framför variabeln visas båda. Använd inte mellanslag om du inte vill att dom ska dyka upp. Observera också att skriptet utan den här "echo" -linjen skulle ge absolut ingen utmatning.

Låt oss komma tillbaka till vårt skript. Låt oss nästa lägga till den kopierande delen av kommandot.

cp -iv $ 1 $ 2. $ date_formatted

Detta kommer att påkalla kopieringskommandot med alternativen -i och -v. Den tidigare kommer att be dig om verifiering innan du skriver över en fil, och den senare kommer att visa vad som ligger på kommandoraden.

Nästa kan du se att jag har lagt till alternativet "$ 1". När man skriver, kommer ett dollartecken ($) följt av ett tal att beteckna det numrerade argumentet för manuset när det påkallades. Till exempel i följande kommando:

cp -iv Trogdor2.mp3 ringtone.mp3

Det första argumentet är "Trogdor2.mp3" och det andra argumentet är "ringtone.mp3".

Ser tillbaka på vår script kan vi se att vi hänvisar till två argument:

Det betyder att när vi kör skriptet måste vi ge två argument för att skriptet ska köras korrekt. Det första argumentet, $ 1, är filen som kommer att kopieras och ersätts som kommandot "cp -iv".

Det andra argumentet, $ 2, kommer att fungera som utgångsfilen för samma kommando. Men du kan också se att det är annorlunda. Vi har lagt till en period och vi har refererat till variabeln "date_formatted" ovanifrån. Nyfiken om vad det här gör?

Det här är vad som händer när man kör skriptet:

Du kan se att utdatafilen är listad som vad som helst som jag angav för $ 2, följt av en period, då utsignalen från datumkommandot ! Vet sense, right?

Nu när jag kör kommandot datecp kör det här skriptet och tillåter mig att kopiera någon fil till en ny plats och lägg automatiskt till datum och tid till slutet av filnamnet. Användbar för arkivering av saker!


Shell scripting är kärnan i att göra ditt OS arbete för dig. Du behöver inte lära dig ett nytt programmeringsspråk för att få det att hända. Försök skripta med några grundläggande kommandon hemma och börja tänka på vad du kan använda detta för.

Skriver du? Har du några råd för nybörjare? Dela dina tankar i kommentarerna! Det finns mer att komma i denna serie!


De 10 bästa sätten att använda styrka på din Apple Watch

De 10 bästa sätten att använda styrka på din Apple Watch

Force Touch-funktionen på Apple Watch liknar ett högerklick i Windows. Det låter dig snabbt få tillgång till kontextspecifika alternativ på klockan. Vi visar dig 10 användbara sätt att använda Force Touch i olika appar på din klocka. Ändra och anpassa klockfas Detta är förmodligen den vanligaste användningen för Force Touch.

(how-to)

Så här använder du en USB-nyckel för att låsa upp en BitLocker-krypterad dator

Så här använder du en USB-nyckel för att låsa upp en BitLocker-krypterad dator

Aktivera BitLocker-kryptering och Windows låser automatiskt upp din enhet varje gång du startar datorn med hjälp av TPM som är inbyggd i de flesta moderna datorer . Men du kan ställa in någon USB-flash-enhet som en "startnyckel" som måste vara närvarande vid start innan datorn kan dekryptera sin enhet och starta Windows.

(how-to)