Kommandorader: Varför stör folk sig fortfarande med dem?

Kommandoraden är nästan 50 år gammal, men den är inte föråldrad. Textbaserade terminaler är fortfarande det bästa sättet att utföra många uppgifter, även i en ålder av grafiska stationära datorer och pekskärmsprylar.

Faktum är att kommandoraden blir mer respekterad än någonsin när Microsoft skapar en kraftfull ny Windows Terminal-applikation. Windows 10:s PowerShell-miljö är förvånansvärt kraftfull, men Microsoft gick ändå ut ur sitt sätt att lägga till stöd för i princip hela Linux-kommandoradsmiljön till Windows 10.

Kommandoraden var en gång det enda alternativet

En gång om du ville interagera med en dator skrev du. Det var det. Det fanns inget annat. Det kanske låter restriktivt och ålderdomligt, men som ett steg upp från att behöva använda hålkort eller perforerade papperstejper var skrivning radikalt och transformerande. Och migrera från teleskrivmaskiner med sina pappersrullar till terminaler med katodstrålerör (CRT)-skärmar var ett annat markskifte i interaktioner mellan människor och datorer.

Det steget banade väg för det interaktiva skalet att verkligen komma till sin rätt. Nu kan du skicka instruktioner till datorn och mycket snabbt få svar på skärmen. Inget mer klack-klack-klack medan du väntade på att din pappersutskrift skulle slamra sig ut ur din teleskrivmaskin.

Fair nog, men det var då, det här är nu. Datorer är ett helt annat bollspel. Förutom de uppenbara inlåsta fallen som att använda en dator som inte har en grafisk skrivbordsmiljö installerad, eller att använda en fjärrdator via SSH över en anslutning med låg bandbredd, eller styra en huvudlös eller inbäddad system, varför använda kommandoraden över ett grafiskt skrivbord?

Jargong förklarad

Termer som kommandorad, terminalfönster och skal används nästan omväxlande av vissa människor. Det är en felaktig jargong. De är alla ganska olika. De är släkt, men de är inte samma sak.

Ett terminalfönster är ett fönster i en grafisk skrivbordsmiljö som kör en emulering av en teletypterminal.

Skalet är programmet som körs inuti terminalfönstret. Det tar din input och, beroende på vad du skrev, försöker tolka och utföra instruktionerna själv, skicka dem till några av de andra verktygen som utgör operativsystemet, eller hitta ett skript eller program som matchar det du har skrivit.

Kommandoraden är där du skriver. Det är uppmaningen som skalet visar när det väntar på att du ska ange några instruktioner. Termen ”kommandorad” används också för att referera till det faktiska innehållet i det du skrev. Om du till exempel pratar med någon annan datoranvändare om ett problem som du hade när du försökte få ett program att köra, kan de fråga dig, ”Vilken kommandorad använde du?” De frågar inte vilket skal du använde; de vill veta vilket kommando du skrev.

Sammantaget kombineras dessa för att bilda kommandoradsgränssnitt (CLI).

Varför använda kommandoraden 2019?

CLI kan verka retrograd och förvirrande för dem som inte är bekanta med det. Det finns väl ingen plats i ett modernt operativsystem för ett så daterat och nördigt sätt att använda en dator? Gav vi inte upp allt det för decennier sedan när fönster, ikoner och möss dök upp och grafiska skrivbordsmiljöer med grafiska användargränssnitt (GUI) blev tillgängliga?

Ja, GUI har funnits i decennier. Den första versionen av Microsoft Windows var släpptes redan 1985 och blev PC-skrivbordsnormen med lanseringen av Windows 3.0 1990.

X Window System, som används i Unix och Linux, var introducerades 1984. Detta förde grafiska skrivbordsmiljöer till Unix och dess många derivat, kloner och off-shoots.

Men lanseringen av Unix före daterar dessa händelser med en mer än ett decennium. Och eftersom det inte fanns något annat alternativ måste allt vara möjligt via kommandoraden. All mänsklig interaktion, all konfiguration, varje användning av datorn måste kunna utföras via det ödmjuka tangentbordet.

Så ipso facto kan CLI göra allt. Ett GUI kan fortfarande inte göra allt som CLI kan göra. Och även för de delar som den kan göra, är CLI vanligtvis snabbare, mer flexibel, kan skriptas och är skalbar.

Och det finns en standard.

De är standardiserade tack vare POSIX

POSIX är en standard för Unix-liknande operativsystem– i princip allt som inte är Windows. Och även Windows har Windows Subsystem for Linux (WSL.) Öppna ett terminalfönster på valfritt POSIX-kompatibelt (eller nära kompatibelt) operativsystem, och du kommer att hamna i ett skal. Även om skalet eller distributionen tillhandahåller sina egna tillägg och förbättringar, så länge de tillhandahåller POSIX-kärnfunktionaliteten kommer du att kunna använda den direkt. Och dina skript kommer att köras.

Kommandoraden är den minsta gemensamma nämnaren. Lär dig hur du använder det och, oavsett Linux-distribution och grafisk skrivbordsmiljö, kommer du att kunna utföra alla uppgifter du behöver. Olika stationära datorer har sina egna sätt att göra saker på. Olika Linux-distributioner paketerar olika verktyg och program.

Men öppna ett terminalfönster så kommer du att känna dig som hemma.

Kommandon är utformade för att fungera tillsammans

Vart och ett av Linux-kommandona är designat för att göra en viss sak och göra det bra. Den underliggande designfilosofin är att lägga till mer funktionalitet genom att lägga till ytterligare ett verktyg som kan kopplas ihop med de befintliga för att uppnå önskat resultat.

Detta är så användbart att Microsoft gick ut ur sitt sätt att lägga till stöd för hela Linux-kommandoraden till Windows 10!

Sorteringskommandot används till exempel av andra kommandon för att sortera text i alfabetisk ordning. Det finns inget behov av att bygga in sorteringsförmåga i vart och ett av de andra Linux-kommandona. Generellt tillåter inte GUI-applikationer denna typ av samverkan.

Titta på följande exempel. Detta använder kommandot ls för att lista filerna i den aktuella katalogen. Resultaten skickas till sorteringskommandot och sorterade i den femte kolumnen med data (vilket är filstorleken). Den sorterade listan överförs sedan till head-kommandot som som standard listar de första tio raderna av dess input.

ls -l | sort -nk5,5 | head

Vi får en snygg lista över de minsta filerna i den aktuella katalogen.

Genom att ändra ett kommando – med tail istället för head – kan vi få en lista över de tio största filerna i den aktuella katalogen.

ls -l | sort -nk5,5 | tail

Detta ger oss vår lista över de tio största filerna, som förväntat.

Utdata från kommandon kan omdirigeras och fångas i filer. De vanliga utdata (stdin) och felmeddelanden (stderr) kan fångas separat.

Kommandon kan innehålla miljövariabler. Följande kommando kommer att lista innehållet i din hemkatalog:

ls $HOME

Detta fungerar var du än råkar vara i katalogträdet.

Om tanken på allt det där med att skriva fortfarande fascinerar dig, kan tekniker som tabbkomplettering minska mängden skrivning du måste göra.

Skript möjliggör automatisering och repeterbarhet

Människor är benägna att göra fel.

Skript låter dig standardisera på en uppsättning instruktioner som du vet kommer att köras på samma sätt varje gång skriptet körs. Detta ger konsekvens i systemunderhållet. Säkerhetskontroller kan byggas in i skripten som gör att skriptet kan avgöra om det ska fortsätta. Detta tar bort behovet av att användaren har tillräcklig kunskap för att själv kunna fatta beslutet.

Eftersom du kan automatisera uppgifter genom att använda cron på Linux och andra Unix-liknande system, kan långa, komplicerade och repetitiva uppgifter förenklas eller åtminstone räknas ut en gång och sedan automatiseras för framtiden.

PowerShell-skript erbjuder liknande kraft på Windows, och du kan schemalägga dem att köras från Task Scheduler. Varför klicka på 50 olika alternativ varje gång du installerar en dator när du kan köra ett kommando som automatiskt ändrar allt?

Det bästa av båda världar

För att få ut det bästa av Linux – eller vilket operativsystem som helst som avancerad användare – behöver du verkligen använda CLI och GUI.

GUI är oöverträffad för att använda applikationer. Även inbitna kommandoradsförespråkare måste komma ut från terminalfönstret och använda kontorsproduktivitetssviter, utvecklingsmiljöer och grafiska manipulationsprogram då och då.

Kommandoradmissbrukare hatar inte GUI. De föredrar bara fördelarna med att använda CLI – för lämpliga uppgifter. För administration vinner CLI utan tvekan. Du kan använda CLI för att göra ändringar i en fil, en katalog, ett urval av filer och kataloger eller helt globala ändringar med lika mycket ansträngning. Att försöka göra detta med GUI kräver ofta långrandiga och repetitiva tangentbords- och musåtgärder när antalet påverkade objekt ökar.

Kommandoraden ger dig högsta trohet. Varje alternativ för varje kommando är tillgängligt för dig. Och många av Linux-kommandona har många alternativ. För att bara ta ett exempel, överväg kommandot lsof. Ta en titt på den man page och fundera sedan över hur du skulle slå in det i ett GUI.

Det finns för många alternativ att presentera för användaren i ett effektivt GUI. Det skulle vara överväldigande, oattraktivt och klumpigt att använda. Och det är raka motsatsen till vad ett GUI syftar till att vara.

Det är hästar för kurser. Skygg inte för CLI-hästen. Det är ofta den snabbare och smidigare hästen. Förtjäna dina sporrar, och du kommer aldrig att ångra det.