Bash-scripting er afgørende for mange tekniske roller, især inden for Linux-systemadministration, DevOps og software engineering.
Hvis du ansætter nogen til en Linux-orienteret rolle, vil du gerne have, at dine teammedlemmer har en solid forståelse af Bash-scripting og er i stand til at løse almindelige problemer med scriptopgaver.
Om Bash
Bash er et shell-scripting-sprog, der giver dig mulighed for at interagere med et Unix-lignende operativsystem via kommandoer. Det er et kommandolinjeværktøj, der hjælper med at automatisere opgaver, administrere servere og strømline processer på Unix-baserede systemer som Linux og macOS. Uanset om det drejer sig om at køre et hurtigt script for at rydde op i filer eller styre komplekse serverinstallationer, er Bash super nyttigt og bør være en kernefærdighed inden for disse områder.
Bash-scripts kan gøre alt fra at manipulere filer til at køre programmer automatisk, hvilket sparer tid og kræfter.
For tekniske teams er Bash en favorit, fordi den er let, fungerer på mange systemer og er fantastisk til at automatisere opgaver som filhåndtering, serverovervågning og sikkerhedskopiering af systemer. Det bruges i forskellige miljøer, fra webhosting til cloud-tjenester, og er især vigtigt i DevOps og systemadministrationsroller.
Must-have tekniske færdigheder for Bash-udviklere
Her er de vigtigste færdigheder, som en god Bash-udvikler bør have:
- Bash-scripting: De skal have det godt med at skrive, redigere og køre Bash-scripts, kende grundlæggende syntaks som loops, conditionals og funktioner og have erfaring med at debugge og opdatere scripts. Bash indeholder kommandolinjeværktøjer som parameterudvidelse, piping, omdirigering og signalhåndtering.
- Fil- og processtyring: De skal vide, hvordan man arbejder med filer (f.eks. kopiering, flytning, omdøbning) og håndterer kørende processer på systemet.
- Unix/Linux-kommandoer: En god Bash-udvikler bør være flydende i almindelige Unix-kommandoer som grep, sed, awk og find.
- Regelmæssige udtryk: Disse er nyttige til at finde tekstmønstre og automatisere opgaver, der involverer dataudtræk eller søgeoperationer.
- Git og versionsstyring: De bør vide, hvordan man administrerer kode ved hjælp af Git, især hvis de samarbejder med et team.
- Automatiseringsværktøjer: Erfaring med at bruge cron-jobs til planlægning af opgaver eller opsætning af automatiserede sikkerhedskopier er afgørende.
Nice-to-have tekniske færdigheder
Selvom det ikke er afgørende, kan disse ekstra færdigheder hjælpe en Bash-udvikler med at skille sig ud:
- Kendskab til andre scriptsprog: De skal have erfaring med Python, eller Perl kan være praktisk til mere komplekse automatiseringsopgaver. Windows-miljøer har tendens til at bruge PowerShell til at udføre lignende funktioner.
- CI/CD-pipeline-værktøjer: De bør være fortrolige med værktøjer som Jenkins eller GitLab CI til automatisering af builds og deployments.
- Infrastruktur som kode (Iaac): Infra- og konfigurationsstyringsværktøjer som Ansible og Terraform bruges ofte til automatisering af infrastruktur.
- Containerisering (Docker/Kubernetes): En solid forståelse af automatisering af container- og skytjenesteopgaver er en bonus.
- Cloud-automatisering: Erfaring med AWS CLI, Google Cloud CLI eller lignende værktøjer til styring af cloud-miljøer vil også være nyttigt.
Interviewspørgsmål til Bash-udviklere
For at hjælpe dig med at vurdere en kandidats Bash-færdigheder er her nogle interviewspørgsmål, du kan stille sammen med den type svar, du kan forvente:
1. Hvad betyder #!/bin/bash i et script?
Eksempel på svar: Det kaldes et "she-bang" (kombination af "sharp" (#) og "bang" (!) og fortæller systemet, at det skal køre scriptet ved hjælp af Bash-shellen i toppen af scriptet.
2. Hvordan tjekker man, om en fil findes i Bash?
Eksempel på svar: Brug af en if-sætning med -f. Eksemplet nedenfor tjekker, om der findes en fil. Du kan også bruge -d til at tjekke for en mappe eller -e til at tjekke for enhver filtype (inklusive symbolske links)
if [ -f "proxify.txt" ]; then
echo "Filen findes."
ellers
echo "Filen findes ikke."
fi
3. Hvordan håndterer du fejl i Bash-scripts?
Eksempel på svar: Du kan bruge set -e
til at få scriptet til at stoppe, hvis en kommando fejler, eller tjekke hver kommandos exit-status ved hjælp af $?
.
4. Hvad er forskellen mellem $ og $@?
Eksempel på svar: Begge repræsenterer alle scriptargumenter, men $*
behandler dem som en enkelt streng, mens $@
beholder dem som separate argumenter.
5. Hvordan finder og sletter man filer, der er ældre end 7 dage i en mappe?
Eksempel på svar: Brug af find-kommandoen i bash. Dette bruges ofte til filarkivering og oprydning. Du kan vise denne kommando til kandidaten og spørge dem, hvornår den vil blive brugt.
find /sti/til/dir -type f -mtime +7 -exec rm {} \;
6. Hvad er pipes i Bash, og hvordan fungerer de?
Eksempel på svar: Pipes (|) tager output fra en kommando og bruger det som input til en anden. For eksempel viser ls | grep ".txt"
alle .txt
-filer.
7. Hvordan læser man en fil linje for linje i Bash?
Eksempel på svar: Du kan bruge en while
-løkke
while IFS= read -r line; do
echo "$line"
færdig < fil.txt
8. Hvad betyder exit 0
i et script?
Eksempel på svar: Det betyder, at scriptet blev afsluttet med succes. Tal, der ikke er nul, indikerer normalt en fejl. Hvis du har til hensigt at returnere en fejl fra scriptet, vil du normalt afslutte 1; (ikke 0 returværdi).
9. Hvordan kører man en kommando i baggrunden i Bash?
Eksempel på svar: Ved at tilføje &
i slutningen af kommandoen, som my_command &
.
10. Hvad er nogle almindelige sikkerhedsfejl, der skal undgås i Bash-scripting?
Eksempel på svar: Undgå hardcoding af følsomme data, valider input for at forhindre injektionsangreb, og sørg for, at scripts køres med de rigtige tilladelser og under den rigtige bruger.
Brancher og anvendelser af Bash
Bash bruges på tværs af forskellige brancher, men det er mest almindeligt, når Linux- eller macOS-servere er involveret. Her er nogle områder, hvor Bash-udviklere er særligt værdifulde:
- Systemadministration: Automatisering af daglige opgaver som sikkerhedskopier, opdateringer og serverovervågning.
- DevOps og Cloud: Opsætning og styring af CI/CD-pipelines, automatisering af implementeringer og styring af cloud-infrastruktur (f.eks. AWS, Google Cloud).
- Cybersikkerhed: Skrivning af scripts til scanning af sårbarheder, overvågning af logfiler og sikring af systemer.
- Webhosting: Automatisering af serverkonfigurationer og implementeringsprocesser for hjemmesider.
- Netværksadministration: Automatisering af netværksscripts og konfiguration på Linux-systemer.
Kunder med Linux-baseret infrastruktur eller kunder, der bruger cloud-tjenester i stort omfang, kan virkelig få gavn af en dygtig Bash-udvikler, som kan skabe scriptede arbejdsgange og forbedre effektiviteten.
Resumé
Kort sagt er en god Bash-udvikler en person, der har det godt med at arbejde i Unix/Linux-miljøer, ved, hvordan man automatiserer opgaver, og forstår vigtigheden af sikkerhed. De bør også være fortrolige med Bash-scripting, systemadministration og automatiseringsværktøjer.
Mens nice-to-have-færdigheder som erfaring med cloud-platforme eller andre scripting-sprog er gode, bør kernefokus være deres evne til at skrive rene, effektive og sikre scripts.
Bash er en kernekompetence i Linux-administration, og de fleste Linux-ingeniører bør have det som en kernekompetence.