Terminal vs. Kommandolinje vs. Shell vs. Konsoll: Er de virkelig forskjellige?

Bli kjent med forskjellene mellom terminal, shell, kommandolinje og konsoll. Forstå deres unike roller i datamaskininteraksjon og forbedre din tekniske kompetanse.
Har du noen gang kalt "terminalen" for en "shell" eller "kommandolinje"? Selv om du ikke tar feil i å gjøre det, er det klare forskjeller mellom disse begrepene. Jeg vil dykke inn i disse forskjellene og hvor begrepene stammer fra; hvor mange kan du få rett?
Hva Er En Terminal?
Ordet "terminal" er en forkortelse for "terminalemulator", et program som etterlikner oppførselen til gamle fysiske dataterminaler. I de tidlige datadager interagerte brukerne med eksterne datamaskiner gjennom dedikerte hardware terminaler over en kommunikasjonslinje. Slike terminaler hadde et tastatur og skjerm, eller i noen tilfeller, en skriver i stedet. Brukerne brukte terminaler til å sende kommandoer og se tekstutdata.
Den forrige videoen viser en DEC VT100 dataterminal koblet til en restaurert hoveddatamaskin.
Når personlige datamaskiner ble mer utbredt, begynte operativsystemene å etterligne hardware terminaler i programvaren. Dette gjorde det mulig for brukerne å interagere med eksterne systemer uten å måtte bruke fysisk terminalutstyr. I dag fortsetter arven etter fysiske terminaler gjennom terminalemulatorer, som vi bruker på en veldig lik måte.
En terminalemulator lar deg sende kommandoer og motta tekstutdata til og fra en datamaskin; terminalvinduet er den grafiske beholderen som omslutter det. Så teknisk sett, refererer den vanlige og moderne definisjonen av ordet "terminal" på Linux ikke til vinduet selv, men til en simulert enhet for å sende kommandoer og motta tekst.
Hvis du er interessert, har vi to artikler om historien til terminalen. Den ene dekker de tre epokene av Unix-terminaler, og den andre dekker utviklingen av utskrift til videoterminaler.
Hva Er En Shell?
En shell er det ytterste laget av et system som tilrettelegger for brukersamhandling. I et operativsystem kan shell ta formen av et kommandolinjegrensesnitt eller et grafisk brukergrensesnitt (GUI). Det fungerer vanligvis som et brukerromprogram som kommuniserer med systemet gjennom standard brukerromkanaler, i stedet for å interagere direkte med kjernen.
Brukerrommet er kjøremiljøet for uprivilegerte prosesser. Alle dine typiske applikasjoner (inkludert rotprogrammer) kjører i brukerrommet. Kjernrommet er for privilegert kode, og det har absolutt makt over resten av systemet og direkte tilgang til maskinvaren—for eksempel drivere eller kjernekomponenter.
I hverdagslig Linux-språk betyr shell vanligvis en kommandolinjeinterpreter som aksepterer kommandoer og skript for å utføre oppgaver i operativsystemet. Det er et program som leser og forstår kommandoene og utfører dem. Eksempler på typiske shell på Linux er Bash, Zsh og fish. Hver av disse shellene har sin egen måte å prosessere kommandoer og utføre skript på.
Du har kanskje også hørt om Gnome-shell; dette er et eksempel på en grafisk shell, og brukerne interagerer med den for å kontrollere systemet—for eksempel for å opprette og slette filer, osv. En grafisk shell på Linux vil kommunisere med vindussystemet og ta form av menyer, vinduer og andre skrivebordsfunksjoner.
Hva Er En Kommandolinje?
En kommandolinje (CLI eller kommandolinjegrensesnitt) er rett og slett et sted å skrive inn kommandoer til et system, vanligvis via en kommando-skjell. Det er et universelt begrep, og en kommandolinje kan eksistere som del av et operativsystem eller til og med et program. Folk forveksler ofte begrepet med andre, nært beslektede termer—som terminal eller shell—men det har en distinkt betydning. Den distinksjonen vil ikke holde deg våken om natten med bekymringer, men den eksisterer.
To vanlige eksempler på en kommandolinje er tekstlinjene som du skriver inn i Bash eller Zsh.
Et annet eksempel på en kommandolinje finnes i Emacs, som lar deg skrive inn kommandoer på farten ved hjelp av Elisp.
Hva Er En Konsoll?
Linux-konsollen er et inndata-/utdata-system som følger med Linux-kjernen. Den mottar meldinger og muliggjør interaksjon med kjernen.
Forskjellen mellom Linux-konsollen og en terminalemulator er at Linux-konsolldriveren kjører i kjernrommet, viser systemmeldinger og muliggjør direkte interaksjon med Linux-systemet. På den annen side er terminalemulatorer bare programmer for å sende kommandoer og motta svar, og de kjører helt i brukerrommet. Linux-konsollen har også langt færre moderne funksjoner enn terminalemulatorer.
Håndterer virtuelle terminaler som kalles TTY-er (også kjent som virtuelle konsoller). Du kan interagere med Linux-konsollen via disse TTY-ene, som finnes på /dev/tty*, der "*" er et tall. På samme måte kommuniserer terminalemulatorer med pseudoterminaler plassert i katalogen /dev/pts/ (for eksempel /dev/pts/0, /dev/pts/1, osv.).
TTY står for teletypewriter. Historisk sett var dette elektromeekaniske enheter, lik skrivemaskiner, som kunne sende og motta elektroniske meldinger over en kommunikasjonslinje (som telefon, telegraf eller seriell linje). Disse enhetene stammer fra telegrafens tid (et oppgradert system for Morse-kode). Moderne Linux-systemer emulerer disse.
De tidligere videoene viser en teletypewriter koblet til en Linux-server over en seriell linje. Brukeren utfører kommandoer til og mottar output fra Linux-konsollen via serielle TTY-enhetsnoder (for eksempel /dev/ttyS0).
Gjennom en eller annen mekanisme kjører både virtuelle konsoller og terminalemulatorer et skall, som typisk er Bash. Skallene kan få dem til å føles like, men deres driftskontekster er veldig forskjellige.
Du kan få tilgang til en TTY via Ctrl+Alt+F*, der "*" er et tall (1-7). Linux-distribusjoner konfigurerer vanligvis TTY1 til å starte opp visningsbehandleren (innloggingsskjerm), som igjen vil starte ditt grafiske skall (dvs. et skrivebordsmiljø). Tallene 2–7 er typisk tilgjengelige for bruk, men ved å bytte tilbake til TTY1 vil du komme tilbake til skrivebordet ditt.
Bruk følgende kommando for å se hvilken virtuell konsoll din innloggingsøkt er knyttet til.
loginctl session-status
Min nåværende økt er knyttet til vc1 (også kjent som virtuell konsoll 1 eller TTY1), som vist i det forrige bildet.
Kort sagt, Linux-konsollen er et kjerne-nivå input/output subsystem som kan styres via en virtuell konsoll. Disse TTY-enhetene har historiske røtter og emulerer teletypewriter-enheter. Det er fortsatt mulig å sende og motta kommandoer til Linux-kjernen via teletypewriter-enheter.
Folk forveksler ofte disse begrepene, men de har klare tekniske distinksjoner. For eksempel kan CLI med rette bety terminal eller konsoll. Skallet kan bety noe av disse begrepene. Ofte vil folk si "åpne et skall", men det de egentlig mener er å åpne en terminal. Du kan imidlertid også oppnå den tiltenkte oppgaven via en virtuell konsoll.
Den korrekte frasen å bruke er "terminalvindu" for de fleste brukere. Du åpner et grafisk vindu og utfører kommandoer. Frasen "CLI" er også gyldig fordi den kan bety hvilken som helst kommandogrensesnitt (inkludert en Emacs minibuffer). Hvis noen ber deg om å åpne en konsoll, er det derimot en veldig spesifikk forespørsel, så du bør være oppmerksom på årsaken.
Nå som du kjenner forskjellen mellom de ulike begrepene, kan det være interessant å lære Linux-terminalen som nybegynner.
Hvis du vil lese flere artikler som Terminal vs. Kommandolinje vs. Shell vs. Konsoll: Er de virkelig forskjellige?, kan du besøke kategorien Linux.

Legg igjen en kommentar