Enkel innføring i shell scripting: automatiser kjedelige oppgaver på PC-en din

Mye av det du gjør på PC-en er det samme om og om igjen: flytte filer, ta en backup, rydde mapper eller starte flere programmer i samme slengen. I stedet for å klikke deg gjennom alt manuelt, kan du la et lite skript gjøre jobben.
I denne artikkelen får du en jordnær innføring i shell scripting for nybegynnere. Du lærer hva et shell-skript er, hvordan du lager dine første skript, og ser konkrete eksempler du kan bruke og bygge videre på.
Hva er et shell-skript, egentlig?
Et shell-skript er en tekstfil med kommandoer som datamaskinen kan kjøre i rekkefølge. Det er det samme som du kan skrive inn i terminalen, bare lagret i en fil som kan kjøres når du vil.
På Linux og macOS brukes oftebash(Bourne Again Shell), mens Windows i økende grad harPowerShellog kan også bruke bash via WSL. I denne artikkelen fokuserer vi på bash, siden den er vanlig på både utviklermaskiner og servere.
Forutsetninger: dette trenger du
For å følge eksemplene trenger du tilgang til en terminal med bash. På macOS og de fleste Linux-distribusjoner er dette allerede tilgjengelig. På Windows kan du installere WSL (Windows Subsystem for Linux) eller bruke Git Bash.
Du trenger også en enkel teksteditor, for eksempel Visual Studio Code, nano eller en annen editor du trives med. Poenget er at den lagrer ren tekst uten spesialformat.
Slik lager du ditt første shell-skript
La oss lage et veldig enkelt skript som skriver ut en melding. Åpne editoren din og lag en ny fil med navnethei.sh. Skriv inn dette:
Innhold i hei.sh:
#!/usr/bin/env bash
echo "Hei, verden!"
Den første linjen kalles enshebang. Den forteller systemet hvilket program som skal kjøre skriptet. Her bruker vi /usr/bin/env bash for å finne bash på en fleksibel måte.
Lagre filen, åpne terminalen, gå til mappen der du lagret den, og gjør filen kjørbar:
chmod +x hei.sh
Nå kan du kjøre skriptet:
./hei.sh
Variabler: lagre verdier du bruker flere ganger
Variabler i shell-skript lar deg lagre verdier du vil bruke senere, for eksempel filbaner eller navnet på en mappe. Du definerer en variabel med navn og likhetstegn uten mellomrom.
Eksempel:
#!/usr/bin/env bash
navn="Ola"
echo "Hei, $navn!"
Når du vil lese variabelen, skriver du $navn. Husk at variabelnavn er følsomme for store og små bokstaver, så navn er ikke det samme som Navn.
Argumenter: la skriptet ta imot input
Ofte vil du at skriptet skal gjøre noe med en mappe eller fil du oppgir når du kjører det. Shell gir deg ferdige variabler for dette, for eksempel $1 for første argument, $2 for andre, og så videre.
Eksempel: hilse på navnet du sender inn
#!/usr/bin/env bash
navn="$1"
echo "Hei, $navn!"
Kjør skriptet slik:
./hei.sh Kari
Her blir $1 satt til Kari. Hvis du vil gjøre skriptet litt tryggere, kan du sjekke om brukeren faktisk sendte inn et argument.
Enkel feilsjekk: ikke stol blindt på input

Det er lurt å sjekke om skriptet har fått det det trenger, spesielt hvis det skal flytte eller slette filer. Dette reduserer sjansen for uhell.
Eksempel: sjekk at navnet er oppgitt
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "Bruk: ./hei.sh <navn>"
exit 1
fi
navn="$1"
echo "Hei, $navn!"
Her bruker vi -z til å sjekke om strengen er tom. Hvis den er tom, skriver vi ut en hjelpetekst og avslutter med returkode 1, som betyr at noe gikk galt.
Et nyttig skript: rydd opp i nedlastinger-mappen
La oss lage et mer nyttig eksempel som du faktisk kan ha glede av i hverdagen: et skript som sorterer filer i Nedlastinger-mappen din i undermapper etter filtype.
Mål:Flytte bilder, dokumenter og arkiver til egne undermapper, slik at det blir lettere å finne frem.
Eksempel: sortere en mappe etter filtype
#!/usr/bin/env bash
# Mappen som skal ryddes
MAPPE="${1:-$HOME/Downloads}"
if [ ! -d "$MAPPE" ]; then
echo "Fant ikke mappe: $MAPPE"
exit 1
fi
echo "Rydder i: $MAPPE"
mkdir -p "$MAPPE/bilder" "$MAPPE/dokumenter" "$MAPPE/arkiver"
mv "$MAPPE"/*.jpg "$MAPPE/bilder" 2>/dev/null
mv "$MAPPE"/*.png "$MAPPE/bilder" 2>/dev/null
mv "$MAPPE"/*.pdf "$MAPPE/dokumenter" 2>/dev/null
mv "$MAPPE"/*.docx "$MAPPE/dokumenter" 2>/dev/null
mv "$MAPPE"/*.zip "$MAPPE/arkiver" 2>/dev/null
mv "$MAPPE"/*.tar.gz "$MAPPE/arkiver" 2>/dev/null
echo "Ferdig."
Forklaring i korte trekk: vi bruker en variabel MAPPE som enten settes til første argument eller, hvis det mangler, til $HOME/Downloads. mkdir -p lager undermappene hvis de ikke finnes, og mv flytter filene.
Hvorfor omdirigere feil og bruke returkode?
Du ser kanskje 2>/dev/null i eksempelet. Tallet 2 betyr feilmeldingsstrømmen, og /dev/null er et slags svart hull. Vi gjør dette for å slippe støyende meldinger hvis det ikke finnes filer av en bestemt type.
Returkoder (for eksempel exit 1) er nyttige når du senere vil kjøre skriptet fra andre skript eller automatiseringsverktøy. Da kan de se om skriptet lykkes eller feilet, og reagere deretter.
Gode vaner når du skriver shell-skript
Selv små skript blir enklere å forstå og vedlikeholde hvis du følger noen enkle vaner. Dette sparer deg tid når du kommer tilbake til filen etter noen måneder.
- Start alltid med en tydelig shebang-linje.
- Kommenter kort hva skriptet gjør øverst i filen.
- Gi variabler meningsfulle navn, ikke bare
xogtmp. - Sjekk input og at mapper/filer finnes før du endrer eller sletter noe.
- Test på en kopi av data før du kjører skript som sletter eller flytter mye.
Hvordan komme videre herfra
Når du er komfortabel med enkle skript, kan du begynne å utforske betingelser, løkker, funksjoner og mer avansert tekstbehandling. Et naturlig neste steg er å lære litt om kommandoer som find, grep og sed.
Det viktigste er å starte i det små: finn en kjedelig oppgave du ofte gjør, prøv å automatisere den med noen få linjer, og forbedre skriptet litt hver gang du bruker det. På den måten bygger du ferdigheter som faktisk merkes i hverdagen.









0 kommentarer