Unix-skal: definition, funktion och vanliga shell (bash, sh, zsh)
Lär dig vad ett Unix-skal är, hur det fungerar och skillnaderna mellan vanliga shell (bash, sh, zsh) — enkel guide för kommandorad och scripting.
Ett Unix-skal, ibland kallat terminal eller konsol, är ett program som tar emot kommandon och låter dig styra ett Unix-liknande system. Skalet tolkar kommandon som du skriver (eller som skickas via skript eller annan indata), kör program eller inbyggda kommandon och visar resultatet. Kommandon kan vara installerade program, shell-byggen (builtins), funktioner eller skript.
- ls — för att lista filer
- cp — för att kopiera filer
- man — för att få mer information om kommandon
Styrning av in- och utdata
Kommandon behöver inte bara komma från tangentbordet — de läses i allmänhet från stdin (standard input). Ett skal hanterar också stdout (standard output) och stderr (standard error). Du kan omdirigera dessa eller koppla ihop kommandon med pipes:
- Omdirigering:
command > fil(skriv utdata till fil),command 2> fel.log(skriv fel till fil). - Pipes:
command1 | command2(stdout från command1 blir stdin för command2).
Vad ett skal gör
Skalet fungerar som ett kommandoradsgränssnitt särskilt anpassat för Unix-system och erbjuder funktioner som:
- tolkning och exekvering av kommandon
- variabelhantering och miljövariabler (t.ex.
PATH) - omdirigering och rör (pipes)
- jobbhantering (
fg,bg,jobs) och signalhantering - skriptstöd för att automatisera uppgifter (shellskript)
- kommandoredigering, historik och ofta tab-completion vid interaktiv användning
Vanliga shell
Det finns flera Unix-shell med liknande men inte identisk syntax och funktionalitet. De vanligaste är:
- sh (Bourne shell) — det ursprungliga POSIX-shell: enkelt, bra för portabla skript. Skript som börjar med
#!/bin/shbrukar vara avsedda att fungera i de flesta miljöer. - bash (Bourne Again Shell) — mycket vanligt på Linux och macOS (tidigare). Har många interaktiva förbättringar och tillägg för skript (arrays, förbättrad expansion, bättre historik mm.).
- zsh — populärt bland utvecklare tack vare kraftfulla funktioner för interaktiv användning: avancerad autokomplettering, teman, plugin-ekosystem och förbättrad globbing.
- csh/tcsh — C Shell och dess förbättrade tcsh; annorlunda syntax (liknar C), används ibland men mindre populärt för skript pga inkonsekvent POSIX-kompatibilitet.
- ksh (Korn shell) — erbjuder funktioner som många skriptförfattare uppskattar; delar egenskaper med både sh och bash.
- fish — fokus på användarvänlighet och interaktiv upplevelse; inte POSIX-kompatibelt men lätt att använda.
Skillnader mellan shell
De stora skillnaderna är:
- Skriptkompatibilitet: POSIX-specifikationen gör vissa shell mer portabla (
sh, POSIX-bash). Zsh och fish kan ha egna syntaxer och beteenden som inte fungerar i andra shell utan anpassning. - Interaktiva funktioner: zsh och bash erbjuder ofta rikare autokomplettering, stavningsförslag, teman och plugin-stöd.
- Builtins och funktioner: vissa shell har fler inbyggda kommandon och bättre skriptverktyg (t.ex. arrays i bash/zsh).
Exempel: ta reda på CPU-typ
Flera olika kommandon kan användas beroende på system och vilket skal du använder. Ett enkelt, portabelt kommando är:
uname -m
På Linux kan man också använda mer detaljerade kommandon:
lscpu cat /proc/cpuinfo
Exempel på en möjlig kort interaktiv dialog (gäller i alla vanliga shell):
$ uname -m x86_64 $ lscpu | grep "Model name" Model name: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
Skript och shebang
Ett vanligt sätt att göra ett skript exekverbart är att börja filen med en så kallad shebang som anger vilket skal som ska användas, t.ex.:
#!/bin/bash echo "Hej från ett bash-skript"
Gör filen exekverbar med chmod +x skript.sh och kör med ./skript.sh. För maximal portabilitet kan man använda #!/usr/bin/env sh eller motsvarande.
Miljö, konfiguration och startfiler
Shell läser konfigurationsfiler vid start. Vanliga filer är:
- Bash:
~/.bashrc,~/.bash_profileeller~/.profile - Zsh:
~/.zshrc - Allmänna systemfiler:
/etc/profile,/etc/bash.bashrcberoende på system
Dessa filer används för att ställa in miljövariabler, alias, funktioner och autokompletteringar.
Praktiska tips och säkerhet
- Lär dig grunderna: filsystemskommandon (
ls,cp,mv,rm), filrättigheter (chmod,chown), sökning (find,grep), pakethanterare ochmaneller--help. - Var försiktig med körbara skript: Kör inte skript från okända källor utan översyn. Kontrollera innehållet och kör med lämpliga rättigheter.
- PATH-ordning: Se upp med att lägga aktuella katalogen (.) först i
PATH— det kan leda till att skadliga program körs av misstag. - Behörigheter: Ge bara exekveringsrättigheter (
chmod +x) när det är nödvändigt.
Var du kan lära dig mer
Fördjupa dig i:
- man-sidor:
man bash,man zsh,man sh - Online-guider och tutorialer för bash/zsh eller valfritt shell
- Praktiska övningar: skriv små skript för dagliga uppgifter, använd pipes och redigera din
~/.bashrceller~/.zshrcför att lägga in alias och funktioner.
Sammanfattningsvis är ett Unix-skal det verktyg som binder samman dig och operativsystemet via textbaserade kommandon. Valet av shell påverkar både interaktiv användning och skriptbeteende, så välj det som passar dina behov — och lär dig grunderna i POSIX-kompatibel shell-syntax för maximal portabilitet.

Ett Unix-skal, i det här fallet ett Linux-skal (klicka för att förstora)
Sök