Linuxの端末に関する世界観です。
昔のコンピュータは、コンピュータそのものが高価かつ大型であったことから、今のように個人が専有する「パソコン」ではなく、ひとつの中央コンピュータに何台もの「端末」が繋がる形のコンピュータが一般的でした。
それぞれの端末デバイスは、計算能力や記憶能力を持っておらず、端末が接続したひとつのコンピュータにだけ、計算処理装置や記憶処理装置があり、端末は主に入力と出力などの「操作と確認」を行うものでした。
UNIXのようなマルチユーザー・マルチタスクのタイムシェアリングシステムで、コマンドライン操作を行うのは、この端末を中心とした入出力デバイスで行うのが基本となっています。たくさんのユーザーが同時にログインして、複数のタスクを同時に動かすのが前提となっています。
端末には歴史があります。まず、UNIXの黎明期に使われていたのがテレタイプと呼ばれる端末で、出力はプリンター、入力は紙テープやタイプライターでした。
UNIXでは端末のことを「tty」と呼びますが、これはテレタイプ(teletype)から来ています。
その次に普及したのが、文字だけを表示できるモニタと、キーボードのキャラクタ端末・ダム端末です。モニタには文字しか表示できず、コンソール(黒画面の端末)のような画面で操作を行いました。
その後に、ビットマップの点による画像を表示できる、ビットマップディスプレイ・X端末が普及しました。この頃から、GUIのアプリケーションを操作できるようになりました。
詳しくは以下の書籍が参考になります。
古いコンピュータ(メインフレーム・ミニコン)やX11も参照のこと。
現代のパソコンでは、それぞれのパソコンに計算装置と記憶装置が備わっており、ターミナルで使うのであっても、Xで使うのであっても、端末として特別なハードウェアは必要ありません。便宜上、コンソールやコマンドライン操作画面のことを端末と呼ぶことはあります。
UNIXでは、端末を使ってコマンドラインのプログラムを操作しますが、この端末を現代のXでソフトウェアでエミュレートして再現したのが「端末エミュレータ」です。現代のLinuxでは、Xで端末エミュレータを使うか、あるいは黒画面の仮想コンソールで操作することで、コマンドライン操作を行います。
Linuxでは、GNOMEやKDEのような「Windowsを模した統合デスクトップ環境」の上で、端末エミュレータを使ってコマンドライン操作を行うのが一般的です。
このような経緯と設計があることから、UNIXは昔から、大量のタスクやリクエストを安定して壊れずにさばくのに向いています。FreeBSDなどのBSD系のUNIXは、昔からネットワークや大量のタスクをさばくのが得意で、Linuxでもこれは変わりません。UNIXではWindowsよりも早くからネットワークの機能も充実しており、そのため、LinuxやBSDなどのUNIXは今でもサーバーで標準的に使われます。逆に、WindowsのようにグラフィックスやGUI操作を前提として作られていないため、WindowsのようなGUIシステムは不得意で、現在でも、X11を使うのであっても端末エミュレータからコマンド操作をしなければ使えません。
端末は一般的に、以下の3つに分けられる。
・キーボードとモニタにじかに繋がった端末
・シリアル回線(モデム・RS-232回線)の端末
・ネットワーク上の端末
/dev/tty0が一番目、tty1が二番目の仮想コンソール。また/dev/ttyS0は一番目のシリアル回線の端末を意味するデバイスファイル。
端末のストリームを読むとキーボードからの入力が得られ、端末のストリームに書くとモニタに文字を表示できる。
詳しくは以下の書籍が参考になります。
ttyとpts(sshやtelnetでリモートログインした時に使われるデバイスファイル)について詳しくは、以下を参照のこと。
Linuxデバイスファイルも参照のこと。
仮想コンソール機能を使うことで、LinuxをDOSのような黒画面のコマンドライン環境で使っている時に、画面を複数使ってログインシェルを複数起動することが出来る。
Alt+F1~F6で切り替えられる。Xからの切り替えはCtrl+Alt+F1~F6。
また、X11のウィンドウシステムの画面はAlt+F7に設定されていることが多い。
GNU Screenはコンソールでもウィンドウシステムと同じように画面を作成・破棄できるソフトウェア。複数の端末でウィンドウシステムのように並列して作業することができる。
後日注記:また、GNU Screenは起動元のプロセスが消えても処理を継続することができる機能があり、リモートからバッチ処理を行うような時にも使える。
tmuxという新しいソフトウェアも開発されている模様。
byobuというソフトウェアもある。