Jaka jest różnica między terminalem, konsolą, powłoką i wierszem poleceń?

211

Jaka jest różnica między terminalem, konsolą, powłoką i wierszem poleceń?

Akiva
źródło
1
(1/2) Agent Cool jest w większości poprawny, ale podana przez niego definicja konsoli jest nieaktualna. Jego link zawiera poprawne informacje, jeśli będziesz go przestrzegać. Przeczytaj całą definicję pod jego linkiem. Konsola jest używana luźno w znaczeniu wielu podobnych rzeczy, ale co najważniejsze, zwykle odnosi się do LOCAL ATTACHED ludzkich urządzeń wejściowych i wyjściowych, np. Klawiatury, wyświetlacza i może myszy.
0x Owczarek
1
(2/2) To może wydawać się pedantyczne, ale jako wytrawny administrator systemu powiem ci, że tak nie jest . Kiedy system ma problem i wydaje się, że jest całkowicie uszkodzony / wyłączony / offline, powinieneś sprawdzić fizyczną konsolę systemu, aby sprawdzić, czy nadal działa, ale po prostu utracił łączność z siecią. Ten mały szczegół może zaoszczędzić lub kosztować dane, przetwarzanie informacji itp. Pedantyczny, tak. Ale ważne.
0x Owczarek
6
@ 0xSheepdog Być może zechcesz rozszerzyć te komentarze na pełną odpowiedź (w tym również definicje lub objaśnienia innych terminów), zamieszczoną jako taka. Nie jest źle, że pytanie ma wiele odpowiedzi (może z wyjątkiem sytuacji, gdy przekazują dokładnie te same informacje i w ten sam sposób). Nie jestem pewien, dlaczego tak ważna praktyka lokalnego sprawdzania maszyny faktycznie polega na znajomości / nazywaniu jej fizycznego interfejsu człowieka konsolą, ale być może istnieje argument, że jest ona ważna dla efektywnej komunikacji z kolegami lub korzystania z dokumentacji. (Możesz to wyjaśnić w swojej odpowiedzi.)
Eliah Kagan
4
Ze względu na ich bliski związek (zobacz wszystkie dobre odpowiedzi) terminy te są czasami używane synonimicznie, co prawdopodobnie skłoniło Cię do tego.
Mark

Odpowiedzi:

143

Krótka odpowiedź:

  • terminal = środowisko wprowadzania / wyprowadzania tekstu
  • konsola = terminal fizyczny
  • shell = interpreter wiersza poleceń

Długa odpowiedź:

Konsola i terminal są ściśle powiązane. Początkowo oznaczały one element wyposażenia, za pomocą którego można było wchodzić w interakcje z komputerem: we wczesnych czasach uniksowych oznaczało to urządzenie w stylu teleprintera przypominające maszynę do pisania, czasami nazywane teletypewriter lub skrótem „tty”. Nazwa „terminal” pochodzi z elektronicznego punktu widzenia, a nazwa „konsola” z meblowego punktu widzenia. Bardzo wcześnie w historii Uniksa elektroniczne klawiatury i wyświetlacze stały się normą dla terminali.

Terminal

W terminologii unixowej terminal jest szczególnym rodzajem pliku urządzenia, który implementuje szereg dodatkowych poleceń ( ioctls ) poza odczytem i zapisem. Niektóre terminale są dostarczane przez jądro w imieniu urządzenia sprzętowego, na przykład z wejściem pochodzącym z klawiatury i wyjściem do ekranu trybu tekstowego lub z wejściem i wyjściem przesyłanym przez linię szeregową. Inne terminale, czasami nazywane pseudo-terminalami lub pseudo-terminalami, są dostarczane (przez cienką warstwę jądra) przez programy nazywane emulatorami terminali . Niektóre typy emulatorów terminali obejmują:

  • Aplikacje GUI działające w systemie X Window : Xterm , Gnome Terminal, Konsole, Terminator itp.
  • Screen i tmux , który zapewnia warstwę izolacji między programem a innym terminalem
  • Ssh , który łączy terminal na jednym komputerze z programami na innym komputerze
  • Oczekuj , że w przypadku skryptowych interakcji terminalowych

Słowo „ terminal” może również mieć bardziej tradycyjne znaczenie dla urządzenia, poprzez które wchodzi się w interakcję z komputerem, zwykle z klawiaturą i wyświetlaczem. Na przykład terminal X jest rodzajem cienkiego klienta , komputerem specjalnego przeznaczenia, którego jedynym celem jest sterowanie klawiaturą, wyświetlaczem, myszą i czasami innymi urządzeniami peryferyjnymi służącymi do interakcji człowieka, przy czym rzeczywiste aplikacje działają na innym, mocniejszym komputerze.

Konsola

Konsola jest zwykle terminal w sensie fizycznym, który jest przez niektórych definicji głównym terminala bezpośrednio podłączony do komputera. Konsola pojawia się w systemie operacyjnym jako (zaimplementowane w jądrze) terminale. W niektórych systemach, takich jak Linux i FreeBSD, konsola pojawia się jako kilka terminali (ttys) (specjalne kombinacje klawiszy przełączają się między tymi terminalami); żeby pomylić sprawy, nazwą nadaną każdemu terminalowi może być „konsola”, „konsola wirtualna”, „terminal wirtualny” i inne odmiany.

Zobacz także Dlaczego wirtualny terminal jest „wirtualny” i co / dlaczego / gdzie jest „prawdziwy” terminal? .

Interfejs linii komend]

Linia komend jest interfejsem użytkownika, w którym typy polecenie (wyrażona jako ciągu znaków - zazwyczaj nazwą polecenia, po kilku parametrów) i naciska Returnprzycisk na wykonanie tego polecenia.

Muszla

Powłoka jest głównym interfejsem, który użytkownicy widzą podczas logowania, którego głównym celem jest, aby uruchomić inne programy. (Nie wiem, czy oryginalną metaforą jest to, że powłoka jest środowiskiem domowym dla użytkownika, czy też powłoka jest tym, w czym działają inne programy.)

W kręgach uniksowych powłoka specjalizuje się w znaczeniu powłoki wiersza poleceń , koncentrując się na wpisaniu nazwy aplikacji, którą chcesz uruchomić, a następnie nazw plików lub innych obiektów, na które aplikacja powinna działać, i naciśnięciu klawisza Enter. Inne typy środowisk (z godnym uwagi ostatnim wyjątkiem Gnome Shell) zwykle nie używają słowa „shell”; na przykład systemy okien obejmują „ menedżerów okien ” i „ środowiska pulpitu ”, a nie „powłokę”.

Istnieje wiele różnych powłok uniksowych. Domyślną powłoką Ubuntu jest Bash (podobnie jak większość innych dystrybucji Linuksa). Popularne alternatywy to zsh (która podkreśla moc i możliwości dostosowania) i ryby (która podkreśla prostotę).

Powłoki wiersza poleceń zawierają konstrukcje kontroli przepływu do łączenia poleceń. Oprócz wpisywania poleceń w interaktywnym monitie użytkownicy mogą pisać skrypty. Najpopularniejsze powłoki mają wspólną składnię opartą na Bourne_shell . Omawiając „ programowanie powłoki ”, prawie zawsze sugeruje się, że jest ona powłoką typu Bourne'a. Niektóre powłoki, które są często używane do pisania skryptów, ale nie mają zaawansowanych funkcji interaktywnych, obejmują powłokę Korna (ksh) i wiele wariantów jesionu . Prawie każdy system podobny do Uniksa ma zainstalowaną powłokę w stylu Bourne'a /bin/sh, zwykle ash, ksh lub bash. Na Ubuntu /bin/shjest Dash , wariant popiołu (wybrany, ponieważ jest szybszy i zużywa mniej pamięci niż bash).

W administracji systemem unix powłoka użytkownika to program, który jest wywoływany podczas logowania. Normalne konta użytkowników mają powłokę wiersza polecenia, ale użytkownicy z ograniczonym dostępem mogą mieć ograniczoną powłokę lub inną określoną komendę (np. Do przesyłania plików - tylko konta).


Podział pracy między terminalem a powłoką nie jest całkowicie oczywisty. Oto ich główne zadania.

  • Wejście: terminal przekształca klucze w sekwencje kontrolne (np. Left\e[D). Powłoka konwertuje sekwencje kontrolne na polecenia (np. \e[Dbackward-char).
  • Edycja linii, historia wprowadzania i uzupełnianie są dostarczane przez powłokę.
    • Terminal może zamiast tego udostępnić własną edycję linii, historię i zakończenie oraz wysyłać linię do powłoki tylko wtedy, gdy jest ona gotowa do wykonania. Jedynym wspólnym terminalem, który działa w ten sposób, jest M-x shellEmacs.
  • Dane wyjściowe: powłoka emituje instrukcje takie jak „display foo”, „zmień kolor pierwszego planu na zielony”, „przesuń kursor do następnej linii” itp. Terminal działa zgodnie z tymi instrukcjami.
  • Podpowiedź jest wyłącznie koncepcją powłoki.
  • Powłoka nigdy nie widzi danych wyjściowych poleceń, które uruchamia (chyba że nastąpi przekierowanie). Historia danych wyjściowych (przewijanie wstecz) jest wyłącznie pojęciem terminala.
  • Terminal kopiuj-wklej jest dostarczany przez terminal (zwykle za pomocą myszy lub sekwencji klawiszy, takich jak Ctrl+ Shift+ Vlub Shift+ Insert). Powłoka może mieć również swój wewnętrzny mechanizm kopiuj-wklej (np. Meta+ WI Ctrl+ Y).
  • Kontrola zadań (uruchamianie programów w tle i zarządzanie nimi) odbywa się głównie przez powłokę. Jednak to terminal obsługuje kombinacje klawiszy, takie jak Ctrl+, Caby zabić zadanie na pierwszym planie i Ctrl+, Zaby je zawiesić.

Recyklingowane z systemów Unix i Linux

Gilles
źródło
1
Nie zgadzam się z tym, że terminal jest właściwym terminem dla pliku urządzenia terminalowego i / lub kodu obsługi terminalu w jądrze (tty ioctls, raw / gotowane, podstawowa edycja linii). terminal = rzeczy, które obsługują kody ucieczki, zamieniają naciśnięcia klawiszy w znaki i rysują na ekranie (lub drukują na papierze / taśmie). Zobacz moją odpowiedź, aby uzyskać więcej informacji.
Peter Cordes,
2
@PeterCordes Na tym poziomie szczegółowości nie ma rozróżnienia. POSIX definiuje terminal jako synonim urządzenia terminalowego w sensie pliku urządzenia. Takie jest znaczenie Uniksa. Tak się składa, że ​​nie obsługuje kodów ucieczki, zmienia naciśnięcia klawiszy w znaki i rysuje na ekranie (lub przesyła przez sieć lub loguje się do pliku itp.).
Gilles
2
hrm, tak, terminal też się przyzwyczaja. Zakładając, że na jednym końcu urządzenia końcowego obsługiwanego przez jądro znajduje się emulator terminala lub port szeregowy z podłączonym do niego urządzeniem końcowym. Obsługa tty jądra (w trybie gotowym) obsługuje tylko kilka kodów kontrolnych (sygnały na ^ c, edycja linii na ^ u / ^? (Usuń). Próbuję narysować linię między kodem tty a częścią Linuksa który implementuje terminal podobny do VT100 na karcie graficznej i klawiaturze USB / ps2 / AT. Możesz kompilować Linuksa bez tego, ale nie bez tty.
Peter Cordes
3
@PeterCordes W konfiguracji jądra można pominąć obsługę terminali (jest to przydatne w niektórych rzadkich systemach osadzonych, w których pamięć jest wyjątkowo napięta); jest kontrolowany przez CONFIG_TTY. Obsługa emulatorów terminali (bardziej właściwie nazywanych pseudo terminalami - „emulator terminala” nie zawsze obejmuje telnetd, screen, expect,…) jest kontrolowana przez CONFIG_UNIX98_PTYS. Obsługa wyświetlania w trybie tekstowym na PC oraz klawiatury i tym podobnych jest kontrolowana przez CONFIG_VT. Zobacz drivers/tty/Kconfigw źródle jądra.
Gilles
2
Ups, nie miałem ostatnio źródła jądra. CONFIG_TTY został dodany dopiero w 2012 roku. W każdym razie, mam nadzieję, że to pomoże każdemu, kto spróbuje owinąć głowę wokół tego, jakie są różne elementy układanki i jak pasują do siebie.
Peter Cordes,
60

Wizualna reprezentacja.

Terminal

Coś, na czym możesz usiąść i pracować jak szef.

Terminal

Konsola

Trochę sprzętu, który robi wiele rzeczy.

Konsola

Innym przykładem konsoli może być konsola do gier wideo, na przykład Super Nintendo [w której można grać w Actraiser]

Muszla

Zasadniczo aplikacja do uruchamiania poleceń.

MuszlaMuszla

Interfejs linii komend]

Zasadniczo wszystko, do czego wprowadzasz polecenia.

CLICLI

Akiva
źródło
8
Ukradłeś mój pomysł - zamierzałem dać w zasadzie tę samą odpowiedź. Możesz więc mieć głos pozytywny. Chodzi oczywiście o to, że chociaż obecnie te terminy są w większości synonimami, takie jak „terminal” i „konsola” mają swoje początki w starszych koncepcjach komputerowych.
thomasrutter
2
Dobry wysiłek. Proste i łatwe
Umar Mukthar
19

Z projektu informacyjnego Linux :

Terminal : Technicznie, okno terminalu, zwane również emulatorem terminala, jest oknem tekstowym w graficznym interfejsie użytkownika (GUI), który emuluje konsolę.

W naszych słowach Aplikacja GUI, z której możemy uzyskać dostęp do konsoli użytkownika.

Konsola : zestaw wskaźników zawierający elementy sterujące komputera

Powłoka : Powłoka to program, który zapewnia tradycyjny, tekstowy interfejs użytkownika dla systemu Linux i innych systemów operacyjnych typu Unix

Wiersz polecenia: wiersz polecenia to spacja po prawej stronie wiersza polecenia w trybie wyświetlania pełnotekstowego na monitorze komputera (zwykle na panelu CRT lub LCD), w którym użytkownik wprowadza polecenia i dane

rɑːdʒɑ
źródło
5
„Terminal” oznacza fizyczny ekran tekstowy. To, co mówisz, to tak naprawdę „emulator terminala”.
Zarejestrowany użytkownik
2
@RegisteredUser Emulator terminala jest rodzajem terminala. Słowo terminal nie ogranicza się do fizycznych terminali (zwykle używa się go jako konsoli ).
Gilles
2
Ta definicja wiersza poleceń jest nieprawidłowa. Wiersz poleceń nie ogranicza się do trybu wyświetlania wszystkich tekstów.
Gilles
1
@Gilles Wziąłem go z One web-Link. Dobrze wspomniałeś właściwą odpowiedź.
rɑːdʒɑ
5
@AgentCool Nie kwestionuję twojej umiejętności kopiowania-wklejania. Kwestionuję twój wybór źródła. Odpowiedzialność za to, czy piszesz, czy nie.
Gilles,
15

Odpowiedzi tutaj wydają się bardzo dobre. Są jednak zbyt suche i techniczne jak na mój gust, więc spróbuję.

Terminal to koniec czegoś - gdzie się kończy. Na przykład, jeśli wsiądziesz do metra w jakimś mieście, stacja, na której zejdziesz, to twój terminal. Lub na lotnisku miejsce, w którym ludzie wychodzą po dotarciu do kraju docelowego, jest uważane za terminal. Powodem, dla którego terminal na lotnisku jest obecnie zarówno miejscem, w którym zabierasz ludzi na pokład, jak i miejscem, w którym wysiadasz z samolotu, są oczywiste powody ekonomiczne.

Celem komputera jest uzyskanie danych, zrobienie z nimi czegoś i wyplucie wyniku. Zatem terminalem jest dowolne urządzenie, z którego można uzyskać wynik obliczeń (na przykład ekran). Zdarzyło się, że na pierwszych komputerach zwykle wejście (klawiatura) i wyjście (ekran) były pojedynczym urządzeniem. Z tego powodu terminale są obecnie uważane za dowolne urządzenia wejścia / wyjścia. Mysz, klawiatura, ekran, kamera - wszystkie są terminalami.

Shell to kwestia systemu operacyjnego. Na komputerze masz jądro, które na przykład na Ubuntu jest częścią Linux. Ponieważ jądro jest naprawdę na niskim poziomie, dostępna jest powłoka - program, który pozwala użytkownikowi na interakcję z jądrem w łatwy sposób. Taki jest na przykład BASH.

Konsola jest (ze słownika)

płaska powierzchnia, która zawiera elementy sterujące maszyny, urządzenia elektrycznego itp.

Dlatego w branży muzycznej tablica ze wszystkimi pokrętłami lub w promieniu kosmicznym stołu poleceń, wszystkie są uważane za konsole. Super Nintendo i PS2 są również nazywane historycznie konsolami, ponieważ pierwsze takie urządzenia rozrywkowe wyglądały jak pudełka z wieloma przyciskami.

Wiersz poleceń to tylko interfejs - przeciwieństwo GUI. Mianowicie istnieją dwa rodzaje interfejsów na komputerze; CLI (interfejs wiersza poleceń) i GUI (graficzny interfejs użytkownika). Główną różnicą jest to, że pierwsza pobierana jest z klawiatury, a druga z myszy.

Pithikos
źródło
1
Co masz na myśli „przeciwieństwo GUI”?
Koray Tugay,
2
Przeciwnie, mam na myśli, że masz CLI lub GUI. Wyjaśniłem teraz nieco więcej w odpowiedzi.
Pithikos,
12

Podsumowując moją odpowiedź:

Shell to program, który wykonuje processespolecenia i returnswypisuje, jak bash w Linuksie.

Terminal to program, który runbył powłoką , w przeszłości był urządzeniem fizycznym (wcześniej terminalami były monitory z klawiaturami, były to typy teletechniczne ), a następnie jego koncepcja została przeniesiona do oprogramowania , takiego jak Gnome-Terminal .

Więc otwieram Gnome-Terminal , pojawiają się czarne okna z powłoką, więc mogę uruchamiać polecenia.

Konsola jest specjalnym rodzajem terminala , była także urządzeniem fizycznym. przykład w systemie Linux mamy, do virtual consolektórego mogę uzyskać dostęp za pomocą kombinacji Ctrl+ Alt+ F1 to F7.

Konsola czasami oznacza, że ​​klawiatura i monitor są fizycznie podłączone do tego komputera.

nux
źródło
11

Warunki te często pasują do siebie, dlatego ludzie używają jednego z terminów w odniesieniu do kolekcji. (tzn. zazwyczaj z kontekstu wynika, że ​​mają na myśli okno terminala zapewniające interfejs do powłoki wiersza poleceń).

Aby nie dopuścić do tego, by nie był zbyt rozwlekły, powiem xterm jako stand-in dla XTerm / Gnome Terminal / Konsole / mrxvt / etc / itd. To samo dla bash.

Konsola ma wiele innych konkretnych znaczeń, więc na razie o tym pomiń.

Terminal : Coś, co zapewnia interakcję człowieka z programami poprzez dwukierunkowy strumień ASCII / UTF8 / innych znaków, zwykle z VT100 lub podobnym przetwarzaniem kodu ucieczki. (Np. Cofanie, usuwanie, klawisze strzałek itp. Generują kody specjalne. Programy mogą drukować kody specjalne, aby przesuwać kursor po ekranie terminala, przełączać na pogrubiony tekst i / lub kolor, wyczyścić lub przewinąć ekran itp.) dawniej było to często dedykowane urządzenie z ekranem i klawiaturą oraz portem szeregowym. Teraz jest to zwykle program taki jak xterm.

Istnieją pliki urządzeń dla programów do odczytu / zapisu z / do terminali, a terminale wirtualne mają również drugą stronę dostępną jako plik urządzenia. Tutaj Xterm zapisuje twoje dane wejściowe, aby bash mógł je odczytać.

Każdy terminal, w tym wirtualny, zapewnia podstawową edycję linii, gdy jest w trybie gotowym (w przeciwieństwie do surowego). Jest to obsługiwane przez kod jądra. To bash zapewnia edycję linii, którą można wykonać za pomocą klawiszy strzałek. (Spróbuj uruchomić cati pisać, jeśli chcesz zobaczyć, jak wygląda podstawowa edycja linii dostarczana przez jądro. Backspace działa i kilka innych rzeczy zgodnie z ustawieniami stty).

Mimo że za urządzeniami terminalowymi znajduje się dużo kodu jądra, będzie on nazywany kodem obsługi terminala, a nie samym terminalem.

Edycja: Gilles przekonał mnie, że używanie tty jako terminala jest właściwym zastosowaniem. Emulatory terminali i programy interaktywne, które działają podłączone do terminala, zależą od semantyki terminala zaimplementowanej przez jądro. (Większość tego zachowania jest znormalizowana przez POSIX i jest taka sama w systemach Linux / * BSD / innych Uniksach.) Pełnoekranowy edytor tekstowy zależy od zachowania uniksowych elementów tty, a także od obsługi kodu ucieczki ruchu kursora, i wiele innych funkcji emulatora terminala.

Jednak fizyczny VT100 z ekranem, klawiaturą i portem szeregowym jest instancją terminala. Nie wymaga jądra uniksowego na drugim końcu swojego portu szeregowego. Coś zupełnie innego może polegać na wysyłaniu kodów ucieczki i tekstu ASCII i otrzymywaniu tego samego od niego. Byłby to jednak po prostu VT100, a nie terminal Uniksa. Emulator terminala i semantyka uniksowego tty tworzą pełny pakiet terminala uniksowego, na którym normalnie działa program taki jak bash.

Wiersz poleceń to styl interfejsu użytkownika, w którym coś wpisujesz, a następnie naciśnij klawisz Return, aby coś się stało. Jest również używany jako skrót dla powłoki wiersza poleceń, takiego jak bash lub MS-DOS, ale można również powiedzieć „to narzędzie wiersza poleceń” o czymś takim jak fdisk. Biorąc pod uwagę tylko programy, które używają terminala do interfejsu użytkownika, dwie główne rodziny to wiersz poleceń i tekst pełnoekranowy (np. Edytor taki jak vi lub emacs -nw).

Programy wiersza poleceń, które zwykle działają na terminalach, prawie zawsze działają z przekierowaniem danych wejściowych i wyjściowych do plików, ale programy pełnoekranowe oparte na terminalach, takie jak edytory lub klienci poczty e-mail, działają tylko interaktywnie i nie działają.

Shell to program do uruchamiania innych programów. W kontekście uniksowym zwykle oznacza powłokę wiersza poleceń (tj. Powłokę Bourne'a lub równoważną powłokę C). Powłoki uniksowe mogą również odczytywać dane wejściowe z plików, tj. Skryptów powłoki. Są to pełne języki programowania ze zmiennymi, pętlami i warunkami, a wiele programów jest napisanych bash (lub tylko z /bin/shfunkcjami powłoki POSIX, dla większej przenośności). Łatwo jest również napisać szybko for i in *.something; do some_program "$i";done w interaktywnej powłoce.

Podsumowując, powłoka taka jak bash (lub jakikolwiek program, który uruchomiłeś uruchamiając polecenie powłoki) otrzyma znaki z /dev/pts/Nurządzenia końcowego po zapisaniu przez xterm danych wejściowych po jego stronie pseudo-terminala. Jeśli uruchomisz cat, a następnie ^cwciśniesz, kod tty jądra zadziała na ^ci wyśle SIGINTproces na pierwszy plan na tym terminalu. (Zwróć uwagę na użycie terminalaw tym kontekście oznacza uniksowy tty, a nie emulator terminala lub coś podłączonego do portu szeregowego.) Dzieje się tak, ponieważ powłoka przełącza terminal w tryb „gotowany” przed uruchomieniem jakiegokolwiek programu, co oznacza, że ​​jądro działa na niektóre elementy sterujące sekwencje. (Kod tty nadal nie ma nic wspólnego z obsługą kodów ucieczki VT100, tylko kilka kodów sterujących o niskim ASCII). Jeśli zamiast xtermu używasz terminalu tekstowego konsoli Linux, jądro JEST emuluje VT100, i radzenie sobie z tymi wszystkimi rzeczami. Linux można skompilować bez obsługi terminalu tekstowego konsoli wirtualnej, ale nie bez obsługi tty.

Konsola jest czasem używana jako synonim terminala (KDE ma nawet emulator terminala o nazwie Konsole).

Jak wskazuje 0xSheepdog, ma ono również inne znaczenie: lokalnie podłączony sprzęt do interakcji międzyludzkich.

W kontekście jądra konsola ma inne specyficzne znaczenie: jest terminalem, w którym zapisywane są komunikaty rozruchowe. Może to być port szeregowy. Zwykle jest to konsola tekstowa zaimplementowana przez jądro na sterownikach sprzętu graficznego i klawiatur USB / ps2 / AT. Jeśli uruchomisz Linuksa z console=tty0 console=ttyS0,115200n8wiersza poleceń, otrzymasz komunikaty jądra na ekranie ORAZ na porcie szeregowym.

Linux implementuje konsole wirtualne ( /dev/tty1do N ). Możesz zamienić, który kontroluje twój fizyczny ekran / klawiatura za pomocą Ctrl+ Alt+ . Typowe dystrybucje Linuksa tworzą 6 i zaczynają się od nich wszystkich, więc nawet jeśli nie możesz lub nie chcesz uruchomić X11, możesz zalogować się 6 razy i przełączać się między poleceniem, stroną podręcznika i czymkolwiek innym, bez uruchamianie programu takiego jak screen. Linux (jądro) zawiera emulator terminala w stylu VT100, który zapewnia interfejs terminala za pośrednictwem ekranu i klawiatury wirtualnych konsol.FNgetty

Standardowe 6 wirtualnych terminali z monitami logowania powoduje, że Ctrl+ Alt+ F7wraca do sesji X11: serwer X pobiera następną dostępną wirtualną konsolę. (Serwer X otwiera się jednak /dev/input/...bezpośrednio, zamiast uzyskiwać naciśnięcia klawiszy /dev/tty7.)

Zatem „zamień na konsolę tekstową” oznacza naciśnięcie Ctrl+ Alt+ F1i użycie tego terminala. Kiedy komputery działały powoli i nie miały dużo pamięci RAM, niektórzy ludzie spędzali dużo czasu na konsolach tekstowych, ponieważ byli szybcy, można ustawić ładną czcionkę, a nawet zmienić rozmiar terminala, aby mieć mniejsze znaki, ale mają więcej na ekranie na raz. Alt+ Lefti Alt+ Rightzamień na poprzednią / następną konsolę. (X11 wyłącza to oczywiście dla swojej konsoli, pozostawiając tylko kombinację Ctrl+ Alt+ ).FN

Zatem konsola jest jedynym z tych terminów, które nie mają ani jednego ściśle określonego znaczenia technicznego. Ma kilka różnych. (W zależności od tego, co myślisz o terminalu właściwym a terminalu plus obsługa tty, możesz powiedzieć, że terminal ma również wiele znaczeń.)

Peter Cordes
źródło
2
Konsola oznaczająca „główny” fizyczny terminal nie jest tylko w kontekście jądra. Ma to samo znaczenie w /dev/console. Konsola nie jest szczególnie dwuznaczne - choć to czasami stosowane w bardziej ogólnym sensie terminalu , to dość rzadko (rzadziej niż terminalu wykorzystywane do specjalnie oznaczać konsolę).
Gilles
1
tak, echo foo | sudo tee / dev / console> / dev / null wydrukuje na ekranie, jeśli twój obecny VT jest w trybie tekstowym (włączając konsolę bufora ramki, nie tylko dosłownie tryb tekstowy VGA). Jeśli uruchomiłeś konsolę na porcie szeregowym, myślę, że tam by poszedł. Można powiedzieć, że / dev / console to plik urządzenia dla tego, co jądro traktuje jak konsolę systemową. Nic innego w systemie nie musi mieć pojęcia, że ​​istnieje konsola tty w ogóle (z wyjątkiem rzeczy służących do odzyskiwania systemu, które uruchamiają powłokę na konsoli TTY, jeśli system nie uruchomi się w trybie wielu użytkowników. Zwykle od initrd)
Peter Cordes,
1
Serwer xorg X (strings / usr / bin / Xorg) nie używa / dev / console, aby uzyskać dostęp do sprzętu. Używa / dev / tty0 i / dev / tty% d oraz / dev / vc /% d, aby ustawić się na swoim własnym VT. Jestem prawie pewien, że Xorg nadal działałby dobrze na komputerze, który uruchomił się z konsolą jądra na porcie szeregowym. I że terminale wirtualne w trybie tekstowym nadal będą działać. Im bardziej to rozważam, tym bardziej skłaniam się do oglądania konsoli w kontekście jądra jako specjalnego terminalu wybranego podczas uruchamiania. (Linux może faktycznie wyjście jego komunikaty konsoli na wielu terminali jednocześnie, jeśli zapytać go.)
Peter Cordes
6

Myślę, że na początku komputerów dzielących czas każdy użytkownik miał terminal (kiedy mógł go zdobyć!), Ale tylko operatorzy systemu mieli konsolę. Konsoli można używać do zadań takich jak ponowne uruchamianie komputera lub uzyskiwanie diagnostyki systemu, która nie była możliwa z poziomu terminali użytkownika. Konsola znajdowała się w maszynowni, nieodłącznej części komputera, a terminale mogły być zdalne. Konsola zawierałaby także sprzętowe światła i przełączniki, a nie tylko wprowadzanie i wysyłanie tekstu.

Powiedziałbym, że wiersz poleceń to obszar, w którym użytkownik może wpisać polecenie, podczas gdy powłoka jest programem, który interpretuje / wykonuje to polecenie. Termin „powłoka” jest bardzo szczególny dla pochodnych systemów uniksowych; „wiersz poleceń” bardziej przypomina tradycję Windows / DOS. Odpowiednik na komputerach mainframe jest zwykle nazywany „językiem kontroli zadań”.

Najwyraźniej te oryginalne rozróżnienia z czasem uległy zatarciu wraz ze zmianami technologii.

Michael Kay
źródło
3

Próbując zorientowanej na użytkownika krótkiej odpowiedzi:

linia poleceń - linia, w której wpisujesz polecenia. Zwykle mówi się, że musisz uruchomić coś w oknie tekstowym (interfejs wiersza poleceń) dostarczonym przez twój system operacyjny.

shell - rzeczywisty program uruchamiany przez system operacyjny w celu przetworzenia rzeczy, w które wchodzisz command line. Stąd nazwa - przyjazna dla użytkownika powłoka dla nieprzyjaznego rdzenia systemu operacyjnego. Zapewnia wiersz polecenia, taki jak $lub >, uruchamia własne polecenia i aplikacje. Zawsze pracujesz przez shellprogram i nigdy nie operujesz bezpośrednio konsolą lub terminalem.

konsola - to okno, w którym działają programy działające w trybie tekstowym. To okno przetwarza naciśnięcia klawiszy, wie, że jest to szerokość i wysokość. Może być na pełnym ekranie.

terminal - to urządzenie z wyświetlaczem dla ludzi, które akceptuje strumień wejściowy znaków i pokazuje je. Użytkownik nie ma żadnych informacji zwrotnych na temat wysokości lub szerokości (tylko włamania) ani naciśnięć klawiszy na klawiaturze - przechodzą do niego tylko znaki. Terminal przetwarza specjalne sekwencje w tym strumieniu, aby nadać kolorom różne kolory, oczyścić ekran i zrobić inne nieprzyjemne rzeczy. Terminale są niestabilne, ponieważ łatwo jest popsuć rzeczy, jeśli plik, który wysyłasz do wyjścia, zawiera te specjalne sekwencje. Są popularne w interfejsach sieciowych i debugowania urządzeń, ponieważ potrzebujesz tylko jednego strumienia do wysyłania danych wyjściowych i sterowania urządzeniem wyjściowym i możesz po prostu taprozpocząć rozmowę bez potrzeby inicjowania lub tworzenia okna.

konsola szeregowa - to konsola, która przetwarza strumień wejściowy jak terminal.

anatoly techtonik
źródło
3

To jest niejasny temat, ponieważ warunki są bardzo niejednoznaczne. Zdecydowanie polecam przeczytanie linków, które podałem w tej odpowiedzi, które są również moim źródłem tej odpowiedzi.

Powłoka jest warstwą powyżej miękiszu

  • Interpretuje polecenia wprowadzone przez użytkownika i przetwarza je. Powłoka ma dostęp do jądra, w przeciwieństwie do użytkowników. Użytkownicy mogą uzyskiwać dostęp do jądra tylko poprzez wprowadzanie poleceń za pomocą powłoki i za pomocą procesów (tj. Uruchomionych programów). Programy używają wywołań systemowych, aby uzyskać dostęp do funkcji jądra. Wszystkie wywołania systemowe razem tworzą systemowy interfejs API.
  • Przykłady powłok podano w drugiej definicji terminala.

Terminal ma wiele znaczeń:

  • (1) Terminal tekstowy . Jest to połączenie monitora z klawiaturą. Kabel podłączał terminal do komputera (często pośrednio). Nazywano go terminalem, ponieważ znajdował się na końcu tego kabla. Te terminale były zwykle fizycznie oddzielone od komputera, ponieważ w przeszłości wiele terminali było podłączonych do jednego komputera mainframe / komputera, dzięki czemu wielu użytkowników mogło mieć dostęp do komputera w tym samym czasie.
  • (2) Okno terminala aka emulator terminala . W systemie Linux okno terminala jest emulacją konsoli zawartej w oknie GUI. To jest CLI, w którym wpisujesz tekst, a dane wejściowe są odczytywane przez powłokę, której używasz. Istnieje wiele rodzajów powłok (np. Bash, dash, ksh88) i terminali (np. Konsola, gnome).
  • (3) Aby uzyskać wyjaśnienie dotyczące pseudo terminali , zobacz to . Jest to para dwóch „plików urządzeń” używanych do komunikacji między procesem a emulatorem terminala.

Konsola ma wiele znaczeń:

  • (1) tablica przyrządów zawierająca elementy sterujące komputera.
  • (2) Konsola systemowa, czyli konsola komputerowa . Jest to połączenie monitora wyświetlacza i klawiatury podłączonej do komputera. Jest to synonim tego, co nazywamy „terminalem tekstowym”. Czasami również inne urządzenia peryferyjne wprowadzane przez użytkownika, takie jak mysz, są częścią konsoli.
  • (3) Interfejs wiersza poleceń obejmujący pełny ekran. Jest to w przeciwieństwie do okna terminala, które jest GUI z X w prawym górnym rogu, aby je zamknąć. Są to dwa tryby wyświetlania dla interfejsu wiersza polecenia (CLI) w systemach uniksopodobnych. Podobnie jak okno terminala, konsola może również uruchamiać wiele powłok.

Często systemy operacyjne umożliwiają uruchamianie wielu konsol na konsoli fizycznej (definicja konsoli 2). Są to tak zwane wirtualne konsole, zwane także terminalami wirtualnymi , i można uzyskać do nich dostęp za pomocą kombinacji ctrl+ alt+ Fx. Na przykład, jeśli chcesz otworzyć trzecią konsolę wirtualną, użyj kombinacji ctrl+ alt+ F3.

Konsole (definicja 3) mogą wydawać się anachronizmem, ale eksperci powinni swobodnie z nich korzystać, ponieważ istnieje wiele systemów operacyjnych, które nie obsługują GUI. Ponadto, jeśli GUI przestanie odpowiadać, konsola może nadal działać.

użytkownik1534664
źródło
2

Obecnie większość terminali to ściśle emulatory terminali . Jest to rodzaj roli w działaniu systemu typu UNIX, a jednocześnie podstawowy interfejs oferowany przez systemy. W rzeczywistości wszystko, w tym GUI, buduje się na nim.
Potocznie „terminal” może także odnosić się do punktów końcowych w sieci komputerowej o topografii gwiazdy.

Konsola odnosi się do interfejsów (sprzętowych) dla terminali. Tzn. Istnieją konsole szeregowe, a obecnie głównie wirtualne .
Okno zwane potocznie „konsolą” - okno to powłoka, połączona z terminalem systemu za pośrednictwem wirtualnej konsoli.

W czasach, gdy komputery były drogie, obiekt mógł mieć jeden rzeczywisty komputer i kilka terminali podłączonych do niego za pomocą kabli szeregowych („konsoli szeregowej”). System operacyjny, operacje itp. Zostały przeprowadzone na komputerze fizycznym, wejście i wyjście nastąpiło na konsoli (konsolach).
Możesz przełączać się między wirtualnymi terminalami, naciskając CTRL+ ALT+ F1(do F6): pozostały czas.
Dzisiaj koncepcja „cienkich klientów” powraca w tym kierunku, aby scentralizować ogromne ilości zasobów i zapewnić tylko tyle sprzętu, aby zapewnić najnowocześniejszy interfejs w rzeczywistym miejscu pracy.

shell to „silnik” widoczny w terminalu. Zapewnia interakcję z samym systemem i dodaje ładne funkcje, takie jak autouzupełnianie, zmienne itp.
Przekłada się tam iz powrotem między rzeczywistym systemem operacyjnym / jądrem, które korzysta z wywołań systemowych a tobą. Wywołania systemowe bez powłoki są trochę jak kodowanie, assemblera powłoka przynajmniej to daje C.

wiersz poleceń odnosi się do metody wymiany danych wejściowych i wyjściowych za pomocą okna tekstowego. Ściśle mówiąc wiersz, w którym wpisywany jest (prądu) z linii poleceń. Metoda jest ogólnie bardziej poprawnie nazywana interfejsem wiersza poleceń lub CLI.

  1. jądro
  2. oferuje terminal
  3. terminal jest podłączony za pomocą konsoli
  4. konsola uruchamia powłokę
  5. polecenia i dane wyjściowe są wymieniane za pomocą wiersza polecenia (interfejsu)
znak
źródło
1
Instrukcje wiersza poleceń nie są rozumiane przez jądro, ale przez powłokę. „Podstawowym szkieletem instrukcji zrozumiałym dla jądra” byłyby wywołania systemowe. „Podstawowy interfejs wiersza poleceń UNIX” jest powłoką, nie ma oddzielenia między tym a „ładnymi funkcjami”. „Okno emulatora terminala” nie jest konsolą.
Gilles
1
@Gilles dostosowany. Oczywiście myliłem tam niektóre rzeczy.
Mark