Bash-skripting er avgjørende for mange tekniske roller, spesielt innen Linux-systemadministrasjon, DevOps og programvareteknikk.
Hvis du ansetter noen til en Linux-orientert rolle, vil du gjerne at teammedlemmene dine har en solid forståelse av Bash-skripting og er i stand til å løse vanlige skriptoppgaveproblemer.
Om Bash
Bash er et skriptspråk som lar deg samhandle med et Unix-lignende operativsystem via kommandoer. Det er et kommandolinjeverktøy som hjelper deg med å automatisere oppgaver, administrere servere og effektivisere prosesser på Unix-baserte systemer som Linux og macOS. Enten det er snakk om å kjøre et raskt skript for å rydde opp i filer eller administrere komplekse serverdistribusjoner, er Bash supernyttig og bør være en kjernekompetanse på disse områdene.
Bash-skript kan gjøre alt fra å manipulere filer til å kjøre programmer automatisk, noe som sparer tid og krefter.
For tekniske team er Bash en favoritt fordi det er lett, fungerer på mange systemer og er perfekt for å automatisere oppgaver som filhåndtering, serverovervåking og sikkerhetskopiering av systemet. Det brukes i ulike miljøer, fra webhotell til skytjenester, og er spesielt viktig i DevOps og systemadministrasjonsroller.
Må-ha tekniske ferdigheter for Bash-utviklere
Her er de viktigste ferdighetene en god Bash-utvikler bør ha:
- Bash-skripting: Du bør være komfortabel med å skrive, redigere og kjøre Bash-skript, kjenne til grunnleggende syntaks som løkker, betingede kommandoer og funksjoner, og ha erfaring med feilsøking og oppdatering av skript. Bash tilbyr kommandolinjeverktøy som parameterutvidelse, piping, omdirigering og signalhåndtering.
- Fil- og prosesshåndtering: De må kunne arbeide med filer (f.eks. kopiering, flytting, omdøping) og administrere prosesser som kjører på systemet.
- Unix/Linux-kommandoer: En god Bash-utvikler bør beherske vanlige Unix-kommandoer som grep, sed, awk og find.
- Regelmessige uttrykk: Disse er nyttige for å finne tekstmønstre og automatisere oppgaver som involverer datauttrekk eller søkeoperasjoner.
- Git og versjonskontroll: De bør vite hvordan man håndterer kode ved hjelp av Git, spesielt hvis de samarbeider med et team.
- Automatiseringsverktøy: Erfaring med bruk av cron-jobber for oppgaveplanlegging eller oppsett av automatiserte sikkerhetskopier er viktig.
Gode å ha tekniske ferdigheter
Selv om disse ekstra ferdighetene ikke er avgjørende, kan de hjelpe en Bash-utvikler med å skille seg ut:
- Kunnskap om andre skriptspråk: De må ha erfaring med Python, eller Perl kan være nyttig for mer komplekse automatiseringsoppgaver. Windows-miljøer pleier å bruke PowerShell for å utføre lignende funksjonalitet.
- CI/CD-rørledningsverktøy: De bør være kjent med verktøy som Jenkins eller GitLab CI for å automatisere bygging og distribusjon.
- Infrastruktur som kode (Iaac): Infra- og konfigurasjonsstyringsverktøy som Ansible og Terraform brukes ofte til automatisering av infrastruktur.
- Containerization (Docker/Kubernetes): En solid forståelse av automatisering av container- og skytjenesteoppgaver er en bonus.
- Cloud-automatisering: Erfaring med AWS CLI, Google Cloud CLI eller lignende verktøy for administrasjon av skymiljøer vil også være nyttig.
Intervjuspørsmål for Bash-utviklere
For å hjelpe deg med å vurdere en kandidats Bash-ferdigheter, finner du her noen intervjuspørsmål du kan stille, og hva slags svar du kan forvente:
1. Hva betyr #!/bin/bash i et skript?
Eksempel på svar: Det kalles en "she-bang" (kombinasjon av "sharp" (#) og "bang" (!) og forteller systemet at det skal kjøre skriptet ved hjelp av Bash-skallet øverst i skriptet.
2. Hvordan sjekker du om en fil finnes i Bash?
Eksempel på svar: Bruk en if-setning med -f. Eksemplet nedenfor vil sjekke om en fil finnes. Du kan også bruke -d for å se etter en katalog eller -e for å se etter en hvilken som helst filtype (inkludert symbolske lenker)
if [ -f "proxify.txt" ]; then
echo "Filen finnes."
ellers
echo "Filen finnes ikke."
fi
3. Hvordan håndterer du feil i Bash-skript?
Eksempel på svar: Du kan bruke set -e
for å få skriptet til å stoppe hvis en kommando mislykkes, eller sjekke hver kommandos exit-status ved hjelp av $?
.
4. Hva er forskjellen mellom $ og $@?
Eksempel på svar: Begge representerer alle skriptargumenter, men $*
behandler dem som en enkelt streng, mens $@
beholder dem som separate argumenter.
5. Hvordan finner og sletter du filer som er eldre enn 7 dager i en katalog?
Eksempel på svar: Ved å bruke find-kommandoen i bash. Dette brukes ofte for filarkivering og oppryddingsoperasjoner. Du kan vise denne kommandoen til kandidaten og spørre dem når den vil bli brukt.
finn /sti/til/dir -type f -mtime +7 -exec rm {} \;
6. Hva er pipes i Bash og hvordan fungerer de?
Eksempel på svar: Pipes (|) tar utdataene fra én kommando og bruker dem som inndata for en annen. For eksempel, ls | grep ".txt"
lister opp alle .txt
-filer.
7. Hvordan leser du en fil linje for linje i Bash?
Eksempel på svar: Du kan bruke en while
-løkke
while IFS= read -r line; do
echo "$line"
ferdig < fil.txt
8. Hva betyr exit 0
i et skript?
Eksempel på svar: Det betyr at skriptet ble fullført. Tall som ikke er null indikerer vanligvis en feil. Hvis du har tenkt å returnere en feil fra skriptet, vil du vanligvis avslutte 1; (ikke 0 returverdi).
9. Hvordan kjører du en kommando i bakgrunnen i Bash?
Eksempel på svar: Ved å legge til &
på slutten av kommandoen, som min_kommando &
.
10. Hva er noen vanlige sikkerhetsfeil som bør unngås i Bash-skripting?
Eksempel på svar: Unngå hardkoding av sensitive data, valider inndata for å forhindre injeksjonsangrep, og sørg for at skript kjøres med de riktige tillatelsene og under den riktige brukeren.
Bransjer og anvendelser av Bash
Bash brukes i ulike bransjer, men det er mest vanlig der Linux- eller macOS-servere er involvert. Her er noen områder der Bash-utviklere er spesielt verdifulle:
- Systemadministrasjon: Automatisering av daglige oppgaver som sikkerhetskopiering, oppdateringer og serverovervåking.
- DevOps og skyen: Sette opp og administrere CI/CD-rørledninger, automatisere distribusjoner og administrere skyinfrastruktur (f.eks. AWS, Google Cloud).
- Cybersikkerhet: Skrive skript for skanning av sårbarheter, overvåking av logger og sikring av systemer.
- Webhotell: Automatisering av serverkonfigurasjoner og distribusjonsprosesser for nettsteder.
- Nettverksadministrasjon: Automatisering av nettverksskript og konfigurasjon på Linux-systemer.
Kunder med Linux-basert infrastruktur eller kunder som bruker skytjenester i stor grad, kan ha stor nytte av en dyktig Bash-utvikler, som kan lage skriptbaserte arbeidsflyter og forbedre effektiviteten.
Sammendrag
Oppsummert er en god Bash-utvikler en person som er komfortabel med å jobbe i Unix/Linux-miljøer, som vet hvordan man automatiserer oppgaver og forstår viktigheten av sikkerhet. De bør også være kjent med Bash-skripting, systemadministrasjon og automatiseringsverktøy.
Selv om det er fint å ha ferdigheter som erfaring med skyplattformer eller andre skriptspråk, bør hovedfokuset være deres evne til å skrive rene, effektive og sikre skript.
Bash er en kjernekompetanse i Linux-administrasjon, og de fleste Linux-ingeniører bør ha det som en kjernekompetanse.