Kommandolinjens vedvarende relevans i en moderne verden
Selv om kommandolinjen har eksistert i nesten et halvt århundre, er den langt fra utdatert. Tekstbaserte terminaler er fortsatt et effektivt verktøy for mange oppgaver, selv i en tid med avanserte grafiske datamaskiner og berøringsskjermenheter.
Faktisk har kommandolinjen fått en ny bølge av respekt. Microsoft har utviklet et imponerende nytt Windows Terminal-program. Selv om Windows 10s PowerShell-miljø er robust, har Microsoft lagt stor vekt på å integrere nesten hele Linux-kommandolinjemiljøet i Windows 10.
En gang det eneste alternativet
I databehandlingens tidlige dager var det å skrive den eneste måten å samhandle med en datamaskin på. Selv om det kan virke begrensende, var dette en betydelig forbedring i forhold til hullkort og papirbånd. Overgangen fra fjernskrivere til terminaler med katodestrålerør markerte også et viktig vendepunkt i samspillet mellom mennesker og datamaskiner.
Denne utviklingen banet vei for interaktive skall. Nå kunne man sende instruksjoner til datamaskinen og motta svar umiddelbart på skjermen, uten å måtte vente på utskrifter fra en fjernskriver.
Men tider har endret seg. Databehandling er i dag en helt annen opplevelse. Bortsett fra spesifikke situasjoner som å bruke en datamaskin uten grafisk brukergrensesnitt, fjernstyre en datamaskin via SSH, eller kontrollere en hodeløs eller innebygd datamaskin, hvorfor skal man bruke kommandolinjen fremfor et grafisk skrivebord?
Terminologi forklart
Begrepene kommandolinje, terminalvindu og skall blir ofte brukt om hverandre, men dette er unøyaktig. De er beslektet, men likevel distinkte.
Et terminalvindu er et vindu i et grafisk skrivebordsmiljø som simulerer en teletype-terminal.
Skallet er programmet som kjører inne i terminalvinduet. Det mottar brukerens inndata og forsøker å tolke og utføre instruksjonene, enten det er ved å utføre kommandoer selv, sende dem til andre verktøy, eller finne et tilsvarende skript eller program.
Kommandolinjen er der brukeren skriver inn instruksjonene. Det er indikatoren som skallet viser når det venter på inndata. Begrepet «kommandolinje» refererer også til selve innholdet i det som skrives inn. Hvis man for eksempel diskuterer et problem med å kjøre et program med en annen bruker, kan de spørre: «Hvilken kommandolinje brukte du?». De er ikke interessert i hvilket skall som ble brukt, men selve kommandoen som ble skrevet.
Sammen danner disse elementene et kommandolinjegrensesnitt (CLI).
Hvorfor bruke kommandolinjen i dag?
CLI kan virke gammeldags for de som ikke er vant til det. Kan en slik datert metode ha plass i et moderne operativsystem? Var det ikke dette vi forlot da vinduer, ikoner, mus og grafiske brukergrensesnitt (GUI) kom på markedet?
GUI har eksistert i flere tiår. Den første versjonen av Microsoft Windows kom allerede i 1985, og det ble en standard med Windows 3.0 i 1990.
X Window System, som brukes i Unix og Linux, ble introdusert i 1984, og brakte grafiske grensesnitt til Unix og dens avarter.
Men Unix» opprinnelse er mer enn tiår før dette. Siden det ikke var andre alternativer, måtte alt være mulig via kommandolinjen. Alle interaksjoner, konfigurasjoner og alle oppgaver måtte kunne utføres via tastaturet.
Derfor kan CLI utføre alt. En GUI kan fortsatt ikke gjøre alt en CLI kan. Og selv for oppgaver som kan utføres av begge, er CLI vanligvis raskere, mer fleksibel, kan skriptes og er mer skalerbar.
Dessuten er det en standard.
Standardisering gjennom POSIX
POSIX er en standard for Unix-lignende operativsystemer, som i utgangspunktet omfatter alt som ikke er Windows. Selv Windows har Windows Subsystem for Linux (WSL). I et hvilket som helst POSIX-kompatibelt operativsystem, vil man finne et skall i et terminalvindu. Selv om skallet kan ha egne utvidelser, vil grunnleggende POSIX-funksjonalitet være tilgjengelig og skriptene vil fungere.
Kommandolinjen er den laveste fellesnevneren. Ved å lære å bruke den, kan man utføre alle nødvendige oppgaver uavhengig av Linux-distribusjon eller grafisk brukergrensesnitt. Forskjellige skrivebordsmiljøer har sine egne metoder, og forskjellige Linux-distribusjoner leveres med forskjellige verktøy. Men åpner man et terminalvindu, vil man kjenne seg igjen.
Kommandoer designet for samarbeid
Hver Linux-kommando er designet for å utføre en spesifikk oppgave effektivt. Filosofien bak designet er å legge til ny funksjonalitet ved å kombinere eksisterende verktøy. Dette er så nyttig at Microsoft integrerte hele Linux-kommandolinjen i Windows 10.
For eksempel brukes sorteringskommandoen til å ordne tekst alfabetisk. Det er ikke nødvendig å inkludere sorteringsfunksjon i hver enkelt kommando. Generelt er ikke slikt samarbeid vanlig i GUI-applikasjoner.
Ta for eksempel følgende kommando. Den bruker «ls» for å liste filer i gjeldende mappe. Resultatet overføres til «sort»-kommandoen for å sortere innholdet etter størrelse (den femte kolonnen). Den sorterte listen overføres deretter til «head»-kommandoen som viser de første ti linjene i utdataen.
ls -l | sort -nk5,5 | head
Dette gir en oversiktlig liste over de minste filene i mappen.
Ved å endre én kommando, fra «head» til «tail», kan man få en liste over de ti største filene i mappen.
ls -l | sort -nk5,5 | tail
Dette gir en liste over de ti største filene, som forventet.
Utdataen fra kommandoer kan videresendes til filer, og både standard utdata (stdin) og feilmeldinger (stderr) kan lagres separat.
Kommandoer kan også inneholde miljøvariabler. For eksempel vil følgende kommando vise innholdet i hjemmekatalogen din:
ls $HOME
Denne kommandoen fungerer uansett hvor man befinner seg i katalogstrukturen.
Hvis man fremdeles er fascinert av skriving, kan teknikker som tabulatorfullføring redusere mengden tekst man må skrive.
Skript for automatisering og gjentakbarhet
Mennesker gjør feil.
Med skript kan man standardisere et sett med instruksjoner som utføres på samme måte hver gang. Dette gir konsistens i systemvedlikehold. Skript kan inneholde sikkerhetssjekker som avgjør om utførelsen skal fortsette, slik at brukeren slipper å ta avgjørelsen selv.
Oppgaver kan automatiseres ved hjelp av cron i Linux og andre Unix-lignende systemer. Lange, kompliserte og repeterende oppgaver kan forenkles eller automatiseres for fremtidig bruk.
PowerShell-skript i Windows gir lignende funksjonalitet, og de kan planlegges i Oppgaveplanleggeren. Hvorfor klikke på 50 ulike alternativer hver gang man setter opp en datamaskin, når man kan kjøre én kommando som automatisk endrer alt?
Det beste fra begge verdener
For å utnytte Linux eller andre operativsystemer optimalt, bør man bruke både CLI og GUI.
GUI er uovertruffent for bruk av applikasjoner. Selv kommandolinjeentusiaster må bruke kontorprogramvare, utviklingsmiljøer og grafiske redigeringsprogram fra tid til annen.
Kommandolinjebrukere hater ikke GUI, de ser bare fordelene med CLI for visse oppgaver. For administrasjon er CLI overlegen. Man kan bruke CLI til å endre én fil, én mappe, et utvalg filer og mapper, eller gjøre globale endringer med like stor innsats. Å gjøre det samme i et GUI krever ofte langvarige og repeterende tastatur- og musebevegelser.
Kommandolinjen gir deg full kontroll. Hvert alternativ for hver kommando er tilgjengelig. Mange Linux-kommandoer har mange alternativer. For eksempel kan vi se på «lsof»-kommandoen. Ta en titt på manualsiden og vurder hvordan man kan integrere alt dette i et GUI.
Det er for mange alternativer å presentere på en effektiv måte i et GUI. Det ville bli overveldende, lite attraktivt og tungvint å bruke, og det ville være det motsatte av hensikten med et GUI.
Forskjellige oppgaver krever forskjellige verktøy. Man bør ikke vike unna CLI. Det er ofte det raskeste og mest effektive verktøyet, og man vil aldri angre på å ha mestret det.