3. Skapa filer

Ibland vill du skapa filer från ett skript. Du kanske har lärt dig att kommandot echo ”första raden” > minfil är ett sätt att skicka text till en ny fil och kommandot echo ”andra raden” >> minfil är ett sätt att lägga till rader. Visst, det fungerar, men blir väldigt fult och plottrigt om du ska skapa en fil med ett större antal rader. Att skriva tjugo rader med echo ”text att lägga till” >> minfil är inte coolt.

Så här ska man göra i stället: Låt säga att du ofta vill lägga upp nya sajter i Apache och vill göra jobbet mer effektivt genom att skapa en mall. Skriptet kallar du för addsite och du anropar det med argumentet [domän]. I exemplet skippar vi felhantering för att spara utrymme – se bild 3.

I exemplet skapar vi en katalog för vår sajt, vi skapar en definitionsfil för Apache och vi avslutar genom att göra sajten tillgänglig och starta om Apache för att den ska gå live. Filen skapar vi genom ”cat << EOF >> filnamn”. All text som kommer därefter skickas till filen ”filnamn” fram tills dess du avslutar genom att skriva in EOF på en ensam rad. Du kan välja vilken text som helst för att avsluta men EOF (som står för End Of File), är det som Linuxgurus vanligtvis är överens om att använda.




3. Skapa filer



4. Dynamiska variabler


4. Dynamiska variabler

Bash-skript är oerhört kraftfulla om du känner till trixen. Låt säga att du periodvis vill ta backuper på en katalog, men samtidigt inte vill skriva över de gamla backup-filerna. Du behöver alltså en metod för att komprimera en katalog och spara ner den med ett namn som är unikt, gärna ett namn som tillför något extra som till exempel datum för backupen.

I vårt exempel vill vi ta backup på källkod som vi jobbar med som finns i katalogen $home/workspace och spara det till en fil workspace-$datum.tar.gz.

Skriv skriptet backup.sh och gör det körbart med kommandot chmod +x backup.sh – se bild 4.

I exemplet har vi använt oss av en dynamisk variabel, eller ”command substitution” som det heter på engelska. Variabler som du innesluter inom parantes exekveras i ett eget skal och kan användas som indata i skript. I exemplet använder vi kommandot date, men möjligheterna är i stort obegränsade.

Eventuellt kan du stöta på syntaxen `date +%Y-%m-%d` i stället för $( date +%Y-%m-%d), det vill säga ”bakåtfnuttar” istället för dollartecken och parenteser. Vi rekommenderar dock att du använder dollartecken och parenteser eftersom det dels syns tydligare, dels minskar risken för att du skriver fel eftersom det är svårt att skilja ` från ’.


Sida 2 / 4

Innehållsförteckning