Terminal vs. Linia poleceń vs. Powłoka vs. Konsola: Czy naprawdę się różnią?

Zrozumienie różnic między terminalem, powłoką, linijką poleceń i konsolą w systemie Linux jest kluczowe dla efektywnej interakcji z systemem operacyjnym.
Czy kiedykolwiek nazywałeś "terminal" "powłoką" lub "linijką poleceń"? Chociaż nie masz racji, istnieją wyraźne różnice między tymi terminami. Przyjrzymy się tym różnicom oraz ich pochodzeniu; ile z nich możesz zgadnąć poprawnie?
Co to jest terminal?
Termin "terminal" jest skrótem od "emulatora terminala", czyli programu, który naśladuje działanie starych, fizycznych terminali komputerowych. W początkowych czasach komputerów użytkownicy interagowali z zdalnymi komputerami za pomocą dedykowanych terminali sprzętowych przez łącze komunikacyjne. Takie terminale miały klawiaturę i ekran lub, w niektórych przypadkach, zamiast tego drukarkę. Użytkownicy korzystali z terminali, aby wysyłać polecenia i przeglądać tekstowe wyniki.
W poprzednim filmie widać terminal komputerowy DEC VT100 połączony z odnowionym komputerem mainframe.
Gdy komputery osobiste stały się powszechne, systemy operacyjne zaczęły emulować terminale sprzętowe w oprogramowaniu. Dzięki temu użytkownicy mogli interagować z systemami zdalnymi bez potrzeby posiadania fizycznego sprzętu terminalowego. Dziś dziedzictwo fizycznych terminali trwa dzięki emulatorom terminali, które używamy w bardzo podobny sposób.
Emulator terminala pozwala na wysyłanie poleceń i odbieranie wyników tekstowych z komputera; okno terminala to graficzny kontener, który go otacza. Mówiąc wprost, powszechna i współczesna definicja słowa "terminal" w Linuksie nie dotyczy samego okna, ale symulowanego urządzenia do wysyłania poleceń i odbierania tekstu.
Jeśli jesteś zainteresowany, mamy dwa artykuły na temat historii terminala. Jeden z nich omawia trzy epoki terminali Unix, a drugi postęp w drukowaniu do terminali wideo.
Co to jest powłoka?
Powłoka to najbardziej zewnętrzna warstwa systemu, która ułatwia interakcję użytkownika. W systemie operacyjnym powłoka może przybierać formę interfejsu wiersza poleceń lub graficznego interfejsu użytkownika (GUI). Zazwyczaj działa jako program w przestrzeni użytkownika, który komunikuje się z systemem poprzez standardowe kanały przestrzeni użytkownika, a nie bezpośrednio z jądrem.
Przestrzeń użytkownika to środowisko uruchomieniowe dla procesów bez uprawnień. Wszystkie typowe aplikacje (nawet aplikacje root) działają w przestrzeni użytkownika. Przestrzeń jądra przeznaczona jest dla kodu uprzywilejowanego, który ma absolutną władzę nad resztą systemu i bezpośredni dostęp do sprzętu—na przykład do sterowników czy komponentów jądra.
W codziennym języku Linuksa powłoka zazwyczaj oznacza interpreter wiersza poleceń, który przyjmuje polecenia i skrypty do wykonywania zadań w systemie operacyjnym. Jest to program, który odczytuje i rozumie polecenia oraz je wykonuje. Przykłady typowych powłok w Linuksie to Bash, Zsh i fish. Każda z tych powłok ma swój własny sposób przetwarzania poleceń i wykonywania skryptów.
Mogłeś również słyszeć o powłoce Gnome; jest to przykład powłoki graficznej, z którą użytkownicy interfejsują, aby kontrolować system - na przykład tworząc i usuwając pliki itd. Graficzna powłoka w Linuksie współdziała z systemem okienkowym i przyjmuje formę menu, okien oraz innych funkcji pulpitu.
Co to jest linijka poleceń?
Linijka poleceń (CLI lub interfejs wiersza poleceń) to po prostu miejsce do wprowadzania poleceń do systemu, zazwyczaj za pomocą powłoki poleceń. To ogólny termin, a linijka poleceń może istnieć jako część systemu operacyjnego lub nawet programu. Ludzie często mylą ten termin z innymi, blisko związanymi terminami—takimi jak terminal lub powłoka—ale ma on wyraźne znaczenie. Ta różnica nie utrudni ci snu, ale rzeczywiście istnieje.
Dwa typowe przykłady linijki poleceń to linie tekstu, które wprowadzasz do Bash lub Zsh.
Inny przykład linijki poleceń można znaleźć w Emacsie, który pozwala na wprowadzanie poleceń w locie przy użyciu Elisp.
Co to jest konsola?
Konsola Linux to podsystem wejścia/wyjścia, który dostarczany jest z jądrem Linux. Odbiera komunikaty i umożliwia interakcję z jądrem.
Różnica między konsolą Linux a emulatorem terminala polega na tym, że sterownik konsoli Linux działa w przestrzeni jądra, wyświetla komunikaty systemowe i umożliwia interakcję bezpośrednio z systemem Linux. Z drugiej strony, emulatory terminali to po prostu programy do wysyłania poleceń i odbierania odpowiedzi, które działają całkowicie w przestrzeni użytkownika. Konsola Linux ma również znacznie mniej nowoczesnych funkcji niż emulatory terminali.
Zarządza wirtualnymi terminalami zwanymi TTY (zwanymi też wirtualnymi konsolami). Możesz wchodzić w interakcję z konsolą Linuxa za pomocą tych TTY, znajdujących się w /dev/tty*, gdzie "*" to liczba. Podobnie, emulatory terminali komunikują się z pseudo terminalami zlokalizowanymi w katalogu /dev/pts/ (np. /dev/pts/0, /dev/pts/1 itd.).
TTY oznacza teletypewriter. Historycznie były to urządzenia elektromechaniczne, przypominające maszyny do pisania, które mogły wysyłać i odbierać wiadomości elektroniczne przez łączę komunikacyjne (jak telefon, telegraf czy linia szeregowa). Te urządzenia sięgają czasów telegrafu (ulepszona wersja kodu Morse'a). Nowoczesne systemy Linuxa emulują te urządzenia.
Poprzednie filmy pokazują teletypewriter podłączony do serwera Linux przez łączę szeregowe. Użytkownik wydaje polecenia i odbiera wyniki z konsoli Linuxa za pośrednictwem szeregowych węzłów urządzeń TTY (np. /dev/ttyS0).
Dzięki różnym mechanizmom zarówno wirtualne konsolę, jak i emulatory terminali uruchamiają powłokę, która zwykle jest Bash. Powłoki mogą sprawić, że będą się one wydawać podobne, ale ich konteksty operacyjne są bardzo różne.
Możesz uzyskać dostęp do TTY za pomocą Ctrl+Alt+F*, gdzie "*" to liczba (1-7). Dystrybucje Linuxa zazwyczaj konfigurują TTY1, aby uruchomić menedżera wyświetlania (ekran logowania), który z kolei uruchamia Twoją graficzną powłokę (czyli środowisko graficzne). Numery 2–7 są zazwyczaj dostępne do użycia, ale przełączając z powrotem do TTY1, wrócisz do swojego pulpitu.
Użyj następującego polecenia, aby zobaczyć, do której wirtualnej konsoli jest podłączona Twoja sesja logowania.
loginctl session-statusMoja bieżąca sesja jest podłączona do vc1 (zwanej też wirtualną konsolą 1 lub TTY1), jak pokazano na poprzednim obrazku.
Krótko mówiąc, konsola Linuxa to subsystem wejścia/wyjścia na poziomie jądra, którym można sterować za pomocą wirtualnej konsoli. Te urządzenia TTY mają historyczne korzenie i emulują urządzenia teletypewriter. Nadal możliwe jest wysyłanie i odbieranie poleceń do jądra Linuxa za pomocą urządzeń teletypewriter.
Ludzie często mylą te terminy, ale mają one wyraźne różnice techniczne. Na przykład CLI może słusznie oznaczać terminal lub konsolę. Powłoka może odnosić się do każdego z tych terminów. Często ludzie mówią "otwórz powłokę", ale to, co mają naprawdę na myśli, to otworzenie terminala. Można jednak zrealizować przypisane zadanie również za pomocą wirtualnej konsoli.
Poprawnym zwrotem dla większości użytkowników jest "okno terminala". Otwierasz graficzne okno i wykonujesz polecenia. Zwrot "CLI" jest również ważny, ponieważ może oznaczać dowolny interfejs poleceń (w tym minibufor Emacsa). Jednak jeśli ktoś prosi cię o otwarcie konsoli, to jest to bardzo konkretna prośba, dlatego powinieneś zwrócić uwagę na przyczynę.
Teraz, gdy znasz różnicę między różnymi terminami, możesz być zainteresowany nauką terminala Linux jako początkujący.
Jeśli ciekawią Cię artykuły podobne do Terminal vs. Linia poleceń vs. Powłoka vs. Konsola: Czy naprawdę się różnią?, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.
Dodaj komentarz

Możesz być zainteresowany