Kommandolinjer: Hvorfor plager folk fortsatt med dem?

Kommandolinjen er nesten 50 år gammel, men den er ikke utdatert. Tekstbaserte terminaler er fortsatt den beste måten å utføre mange oppgaver på, selv i en tidsalder med grafiske stasjonære datamaskiner og gadgets med berøringsskjerm.

Faktisk blir kommandolinjen mer respektert enn noensinne med Microsoft som lager et kraftig nytt Windows Terminal-program. Windows 10s PowerShell-miljø er overraskende kraftig, men Microsoft gikk fortsatt ut av veien for å legge til støtte for i utgangspunktet hele Linux-kommandolinjemiljøet til Windows 10.

Kommandolinjen var en gang det eneste alternativet

På en gang, hvis du ønsket å samhandle med en datamaskin, skrev du. Det var det. Det var ikke noe annet. Det høres kanskje begrensende og arkaisk ut, men som et steg opp fra å måtte bruke hullkort eller perforerte papirbånd, var skrivingen radikal og transformerende. Og migrere fra fjernskrivere med papirrullene sine til terminaler med katodestrålerør (CRT)-skjermer var et annet jordskifte i interaksjoner mellom mennesker og datamaskiner.

Det trinnet banet vei for at det interaktive skallet virkelig kom til sin rett. Nå kan du sende instruksjoner til datamaskinen og veldig raskt få svarene vist på skjermen. Ikke mer klak-klakk-klakk mens du ventet på at papirutskriften skulle klappe seg ut av fjernskrivemaskinen.

Greit nok, men det var da, dette er nå. Databehandling er et helt annet ballspill. Bortsett fra de åpenbare innelåste tilfellene som å bruke en datamaskin som ikke har et grafisk skrivebordsmiljø installert, eller å bruke en ekstern datamaskin via SSH over en tilkobling med lav båndbredde, eller kontrollere en hodeløs eller en del av system, hvorfor bruke kommandolinjen over et grafisk skrivebord?

Sjargong forklart

Termer som kommandolinje, terminalvindu og skall brukes nesten om hverandre av noen mennesker. Det er feil sjargong. De er alle ganske forskjellige. De er i slekt, men de er ikke det samme.

Et terminalvindu er et vindu i en grafisk skrivebordsmiljø som kjører en emulering av en teletypeterminal.

Skallet er programmet som kjører inne i terminalvinduet. Den tar innspill fra deg, og avhengig av hva du har skrevet, prøver den å tolke og utføre instruksjonene selv, sende dem til noen av de andre verktøyene som utgjør operativsystemet, eller finne et skript eller program som samsvarer med det du har skrevet.

  Hvordan sette opp en NFS-andel i Webmin på Ubuntu Server

Kommandolinjen er der du skriver. Det er spørsmålet som skallet viser når det venter på at du skal skrive inn noen instruksjoner. Begrepet «kommandolinje» brukes også for å referere til det faktiske innholdet i det du skrev. For eksempel, hvis du snakker med en annen datamaskinbruker om et problem du hadde med å prøve å få et program til å kjøre, kan de spørre deg: «Hvilken kommandolinje brukte du?» De spør ikke hvilket skall du brukte; de vil vite hvilken kommando du skrev.

Til sammen danner disse sammen kommandolinjegrensesnitt (CLI).

Hvorfor bruke kommandolinjen i 2019?

CLI kan virke retrograd og forvirrende for de som ikke er kjent med det. Det er vel ikke plass i et moderne operativsystem for en så datert og nerdete måte å bruke en datamaskin på? Ga vi ikke opp alt dette for tiår siden da vinduer, ikoner og mus dukket opp og grafiske skrivebordsmiljøer med grafiske brukergrensesnitt (GUIer) ble tilgjengelig?

Ja, GUI har eksistert i flere tiår. Den første versjonen av Microsoft Windows var utgitt helt tilbake i 1985 og ble PC-skrivebordsnormen med utgivelsen av Windows 3.0 i 1990.

X Window System, brukt i Unix og Linux, var introdusert i 1984. Dette brakte grafiske skrivebordsmiljøer til Unix og dets mange derivater, kloner og off-shoots.

Men utgivelsen av Unix daterer disse hendelsene før en mer enn et tiår. Og fordi det ikke var noe annet alternativ, måtte alt være mulig via kommandolinjen. All menneskelig interaksjon, all konfigurasjon, hver bruk av datamaskinen måtte kunne utføres via det ydmyke tastaturet.

Så ipso facto kan CLI gjøre alt. En GUI kan fortsatt ikke gjøre alt CLI kan gjøre. Og selv for de delene den kan gjøre, er CLI vanligvis raskere, mer fleksibel, kan skriptes og er skalerbar.

Og det er en standard.

De er standardiserte takket være POSIX

POSIX er en standard for Unix-lignende operativsystemer– i utgangspunktet alt som ikke er Windows. Og til og med Windows har Windows Subsystem for Linux (WSL.) Åpne et terminalvindu på et hvilket som helst POSIX-kompatibelt (eller i nærheten av kompatibelt) operativsystem, og du vil finne deg selv i et skall. Selv om skallet eller distribusjonen gir sine egne utvidelser og forbedringer, så lenge de gir POSIX-kjernefunksjonaliteten, vil du kunne bruke den umiddelbart. Og skriptene dine vil kjøre.

  Slik fjerner du Google+ fra Google-kontoen din

Kommandolinjen er den laveste fellesnevneren. Lær hvordan du bruker det, og uavhengig av Linux-distribusjon og grafisk skrivebordsmiljø, vil du kunne utføre alle oppgavene du trenger. Ulike skrivebord har sin egen måte å gjøre ting på. Ulike Linux-distribusjoner pakker forskjellige verktøy og programmer.

Men åpne et terminalvindu, og du vil føle deg hjemme.

Kommandoer er utformet for å fungere sammen

Hver av Linux-kommandoene er utformet for å gjøre noe spesielt og gjøre det bra. Den underliggende designfilosofien er å legge til mer funksjonalitet ved å legge til et annet verktøy som kan kobles sammen med de eksisterende for å oppnå ønsket resultat.

Dette er så nyttig at Microsoft gikk ut av veien for å legge til støtte for hele Linux-kommandolinjen til Windows 10!

For eksempel brukes sorteringskommandoen av andre kommandoer for å sortere tekst i alfabetisk rekkefølge. Det er ikke nødvendig å bygge sorteringsevne inn i hver av de andre Linux-kommandoene. Generelt tillater ikke GUI-applikasjoner denne typen samarbeidende samarbeid.

Se på følgende eksempel. Dette bruker ls-kommandoen til å liste filene i gjeldende katalog. Resultatene overføres til sorteringskommandoen og sortert i den femte kolonnen med data (som er filstørrelsen). Den sorterte listen overføres deretter til head-kommandoen som som standard vises de ti første linjene av innspillet.

ls -l | sort -nk5,5 | head

Vi får en ryddig liste over de minste filene i gjeldende katalog.

Ved å endre én kommando – bruke hale i stedet for head – kan vi få en liste over de ti største filene i gjeldende katalog.

ls -l | sort -nk5,5 | tail

Dette gir oss vår liste over de ti største filene, som forventet.

Utdataene fra kommandoer kan omdirigeres og fanges opp i filer. De vanlige utdataene (stdin) og feilmeldingene (stderr) kan fanges opp separat.

Kommandoer kan inkludere miljøvariabler. Følgende kommando vil vise innholdet i hjemmekatalogen din:

ls $HOME

Dette fungerer uansett hvor du er i katalogtreet.

Hvis ideen om alt det å skrive fortsatt fascinerer deg, kan teknikker som tabulatorfullføring redusere mengden skriving du må gjøre.

  Hvordan lage et bilde av USB-stasjonen

Skript aktiverer automatisering og repeterbarhet

Mennesker er utsatt for feil.

Skript lar deg standardisere på et sett med instruksjoner som du vet kommer til å bli utført på samme måte hver gang skriptet kjøres. Dette gir konsistens i systemvedlikeholdet. Sikkerhetssjekker kan bygges inn i skriptene som lar skriptet avgjøre om det skal fortsette. Dette fjerner behovet for at brukeren har tilstrekkelig kunnskap til å ta avgjørelsen selv.

Fordi du kan automatisere oppgaver ved å bruke cron på Linux og andre Unix-lignende systemer, kan lange, kompliserte og repeterende oppgaver forenkles eller i det minste finne ut en gang og deretter automatiseres for fremtiden.

PowerShell-skript tilbyr lignende kraft på Windows, og du kan planlegge at de skal kjøres fra oppgaveplanleggeren. Hvorfor klikke på 50 forskjellige alternativer hver gang du setter opp en datamaskin når du kan kjøre en kommando som automatisk endrer alt?

Det beste fra begge verdenene

For å få det beste ut av Linux – eller et hvilket som helst operativsystem som superbruker – må du virkelig bruke CLI og GUI.

GUI er uovertruffen for bruk av applikasjoner. Selv hardhendte kommandolinjeforkjempere må komme ut av terminalvinduet og bruke kontorproduktivitetspakker, utviklingsmiljøer og grafiske manipulasjonsprogrammer nå og igjen.

Kommandolinjeavhengige hater ikke GUI. De favoriserer bare fordelene ved å bruke CLI – for de riktige oppgavene. For administrasjon vinner CLI uten tvil. Du kan bruke CLI til å gjøre endringer i én fil, én katalog, et utvalg filer og kataloger eller helt globale endringer med like mye innsats. Å prøve å gjøre dette med GUI krever ofte langvarige og repeterende tastatur- og mushandlinger ettersom antallet berørte objekter øker.

Kommandolinjen gir deg den høyeste troskapen. Hvert alternativ for hver kommando er tilgjengelig for deg. Og mange av Linux-kommandoene har mange alternativer. For å ta bare ett eksempel, vurder lsof-kommandoen. Ta en titt på den mannside og deretter vurdere hvordan du vil pakke det inn i en GUI.

Det er for mange alternativer å presentere for brukeren i en effektiv GUI. Det ville være overveldende, lite attraktivt og klønete å bruke. Og det er det motsatte av hva en GUI har som mål å være.

Det er hester for kurs. Ikke viker unna CLI-hesten. Det er ofte den raskere og smidigere hesten. Tjen sporene dine, og du vil aldri angre på det.