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.

Författare: Leandro Alegsa

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)
  • jobbhante­ring (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/sh brukar 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_profile eller ~/.profile
  • Zsh: ~/.zshrc
  • Allmänna systemfiler: /etc/profile, /etc/bash.bashrc beroende 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 och man eller --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 ~/.bashrc eller ~/.zshrc fö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)Zoom
Ett Unix-skal, i det här fallet ett Linux-skal (klicka för att förstora)



Sök
AlegsaOnline.com - 2020 / 2025 - License CC3