GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi konzolí, terminálem a shellem?

Vidím mnoho otázek, které jsou blízko, ale samotné otázky ukazují na základní nepochopení některých důležitých pojmů.

  • Proč bych měl používat Windows Terminal přes PowerShell?
  • Pro bash nepotřebuji WSL, používám Cygwin.
  • Mohu použít conemu s PowerShell Core nebo musím použít Windows Terminal?

Začněme slovníčkem a nejprve si ujasněme některá slova.

Terminál

Slovo Terminál pochází z terminu, což značí, že se jedná o ukončující konec nebo „terminál“ konec komunikačního procesu. Často uslyšíte „hloupý terminál“, když odkazujete na textové prostředí, kde počítač, vedle kterého sedíte, pouze přijímá vstup a zobrazuje text, zatímco skutečná práce probíhá na druhém konci v sálovém počítači nebo velkém počítači.

TTY neboli „dálnopis“ byl prvním typem terminálu. Spíše než obrazovku byste před sebou měli doslova psací stroj. Když na něm píšete, vidíte text na kusu papíru A zadáváte jej do počítače. Když počítač odpoví, uvidíte, že psací stroj automaticky píše na stejný papír.

Když odkazujeme na Terminál v softwarovém smyslu, máme na mysli doslovnou softwarovou verzi TTY nebo Terminálu. To je Windows Terminal. Je to opravdu dobré při zobrazování textového výstupu. Může přijmout vstup a předat jej. Ale terminál není chytrý. Ve skutečnosti nezpracovává váš vstup, nedívá se na vaše soubory ani nemyslí .

Konzole

Lidé v polovině 20. století měli ve svém obývacím pokoji kus nábytku nazývaný konzole nebo konzolová skříň. Konzole v kontextu počítačů je konzole nebo skříň s obrazovkou a klávesnicí, která je v ní kombinována. Ale ve skutečnosti je to terminál. Technicky je konzola zařízení a terminál je nyní softwarový program uvnitř konzoly.

Ve světě softwaru jsou terminál a konzola synonyma.

Skořápka

Shell je program, do kterého terminál posílá uživatelský vstup. Shell generuje výstup a předává jej zpět do terminálu k zobrazení. Zde je několik příkladů Shellů:

  • bash, fish, zsh, ksh, sh, tsch
  • PowerShell, pwsh
  • cmd, yori, 4dos, command.com

Zde je důležitý bod, který by měl dávat větší smysl nyní, když máte tyto terminály – Vaše volba prostředí neurčuje a neměla by určovat vaši volbu terminálové aplikace.

Strana: WSL a WSL2 (Windows Subsystem for Linux) jsou kompletní lokální Linux (nebo mnoho Linuxů), které běží na Windows 10. Jsou plné a skutečné. WSL2 dodává skutečné linuxové jádro a běží na Windows. Cygwin NENÍ Linux. Cygwin je velká sbírka nástrojů GNU a Open Source, které poskytují funkce podobné Linuxu ve Windows – ale není to Linux. Je to simulakrum. Jsou to GNU utils kompilované proti Win32. Je to skvělé, ale je důležité, abyste věděli, jaký je v tom rozdíl. Cygwin vám může umožnit spouštět skripty bash shellu, ale NEBUDE spouštět Apache, Docker ani jiné skutečné binární soubory ELF a linuxové aplikace.

Vaše volba konzolí Windows?

Existuje řada shellů, které se dodávají s Windows. Tady je několik, na kterých teď běžím. Všimněte si "chromu" nebo ohraničení a nadpisu kolem nich? Všechny tyto shelly jsou hostovány starší konzolou Windows, o které jste nikdy neslyšeli, s názvem conhost.exe. Můžete přejít na příkazový řádek, napsat powershell, cmd nebo ubuntu a spustí se libovolný počet shellů. Conhost dělá práci na vstupu a výstupu.

Nyní zapomeňte, že conhost existuje, protože je na hovno – je super starý.

Pseudokonzole, Pseudoterminál, PTY, PseudoTTY (ConPTY)

Pseudo terminály jsou terminálové emulátory nebo softwarová rozhraní, která emulují terminály. Předstírají, že jsou terminály jako ty výše. *Systémy Nix mají již dlouho infrastrukturu pseudoterminálu (PTY) a nyní také Windows jako pseudokonzole (ConPTY).

Nové rozhraní ConPTY Windows je budoucností konzolí a terminálů ve Windows. Pokud si vyberete konzolovou aplikaci třetí strany (nezabudovanou) pro Windows, ujistěte se, že podporuje ConPTY a bude to lepší zážitek než některé starší konzole, které používají screen scraping nebo jiné hacky.

Zpět na váš výběr konzolí Windows

Pamatujte, že ve Windows můžete použít mnoho shellů, existuje mnoho konzolí třetích stran, které můžete použít, pokud se vám nelíbí conhost.exe (a neměli byste).

  • Hyper
  • ConEmu
  • cmder
  • Konzole2
  • ConsoleZ
    • Konec
    • FluentTerminal
    • ZOC
    • MobaXterm
    • Babun (mrtvý)
    • 4NT/jpSoftware (není zdarma)
    • Tmel
    • MinTTY
    • Terminál Windows (zdarma v obchodě Microsoft Store)
    • XTermjs – komponenta Typescript, která vám umožní integrovat terminály do vašich aplikací
    • VSCode obsahuje terminál
    • Ukázka Visual Studio 2019 obsahuje terminál

    Všechny tyto terminály podporují VŠECHNY granáty výše a všechny granáty, které jsem minul. Protože shell není terminál. Vyberte si ten, který vám udělá radost. Používám PowerShell Core a Ubuntu ve WSL2 v terminálu Windows.

    Doufám, že to pomůže věci vyjasnit.

    Sponzor: Trápí vás nejasnost ohledně softwarových chyb? Poskytněte svým zákazníkům zážitek, který si zaslouží a očekávají, pomocí sledování chyb od Raygun.com. Instalace během několika minut, vyzkoušejte to ještě dnes!


    Linux
    1. Rozdíl mezi vestavěným příkazem a příkazem, který není?

    2. Rozdíl mezi uvozovkami „…“, „…“, $“…“ a $“…“ ve skořápce?

    3. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

    1. Jaký je rozdíl mezi nohoup a ampersand

    2. Jaký je rozdíl mezi &> a >&v bash?

    3. Rozdíl mezi '{}' a {} v příkazu find?

    1. Jaký je rozdíl mezi InnoDB a MyISAM?

    2. Přesný rozdíl mezi ‚terminálem‘, ‚shell‘, ‚tty‘ a ‚konzolí‘?

    3. Jaký je rozdíl mezi unlink a rm?