#import "@preview/colorful-boxes:1.2.0": *

== コンソール

コンソールとは、OSを搭載したコンピュータに接続されたディスプレイおよびキーボードである。
コンピュータとの対話を可能にするための物理ハードウェア、入出力システムともいえる。

「文字だけの黒い画面」というキーワードで一般に想起される画面は、仮想コンソールである。
これは入出力を仮想的な空間に提供するものであり、この環境はCUI（Character-based User Interface）ともいう。
CUIは、我々が日々利用するGUI（Graphical User Interface）と対をなす存在であり、文字に基づいたユーザーインターフェースを提供する。

#colorbox(
  title: "インターフェース",
  color: "blue",
  radius: 2pt,
  width: auto
)[
  "Interface"という語はハードウェアでもソフトウェアでも登場する。主に情報産業では、異なる二つのモノ（人間や機器）を接触させるための境界面として用いられる語である。
]

== ターミナルとシェル

仮想コンソール（CUI）を提供するアプリケーションは一般に*ターミナル*と呼ばれる。
Windowsにおけるコマンドプロンプトや、MacOSにおけるiTerm2やWarpなどがターミナルにあたる。
これらはGUI上でCUIを操作するための窓口になる。

本題となるコンピュータへの命令は*コマンド*という。
コマンドを解釈し、実行する仕組みをシェルという。
シェルの役割はコンピュータとの対話を実際に担うアプリケーションであり、Bashやzsh、fishなど種類が存在する。

#colorbox(
  title: "シェル",
  color: "blue",
  radius: 2pt,
  width: auto
)[
  エンジニアでない一般ユーザがOSと対話するためのシェルに、Windowsのエクスプローラーなどがある。CUIのシェルとGUIのシェル、操作しやすいユーザ層は当然異なる。
]

要するに、エンジニアがコンピュータへ命令するためには基本的に「ターミナルを起動し（シェルを介して）コマンドを入力」する。
また、コマンドを入力する行のことをコマンドラインという。
単語が重要なのではなく、このCUI構成を理解することは今後役に立つ。
