GNU/Linux >> Linux の 問題 >  >> Linux

ターミナル、シェル、コンソール、およびコマンドライン

LinuxまたはUnixを探索している場合、ターミナル、コマンドライン、シェル、およびコンソールという用語が聞こえるかもしれません。また、どちらが同じかどうかについて混乱することもあります。それらは間違いなくすべて関連していますが、それぞれに重要な意味を持つニュアンスがあります。この記事では、Linuxのテキストベースのインターフェイスの用語について説明します。

コンピューターのしくみ

コンピュータが起動すると、カーネルはそれ自体の物理ハードウェアを認識し、各コンポーネントが相互に通信できるようにします。そこには多くの異なるカーネルがあります。昔はUnixカーネル、Sunカーネル、BSDカーネルがあり、後にLinuxカーネル、Hurdカーネル、Machカーネル、NTカーネルが登場しました。

そして、それだけではありません。あらゆる種類の計算装置に特化したカーネルがあります。実行しているデバイスのニーズに応じて、非常に単純なものもあれば、非常に複雑なものもあります。

コンピューターの最も基本的な一連の指示により、コンピューターの電源がオンになります。カーネルによって調整されたハードウェアドライバーは、過熱を防ぐためにファンをアクティブに保ち、ディスクスペースを監視し、RAMの状態を管理し、新しいデバイスを検出します。非常に初期のコンピューターは、アイドル状態ではこれよりもさらに少なく、初期のコンピューターが実行した各プログラムは、少なくともそのプログラム(パンチカードの形式)が実行されている間は、本質的に存在する唯一の目的でした。バックグラウンドジョブ、または2つのアプリケーションを同時に実行するという概念は想像を絶するものでした。 2つのジョブを同時に処理したい場合は、2台目のコンピューターを入手します。

インタラクティブシェル

しかし、コンピューターが進歩すると、一部の科学者は、コンピューターを起動するたびに1つの目的でコンピューターをプログラミングすることは非効率的であり、テクノロジーの進歩に伴い、電力が不足していることを認識しました。そこで、彼らはシェルと呼ばれるものを開発しました。

「シェル」という用語が選ばれた理由についてはさまざまな説明がありますが、信じられないほど満足のいく説明は、シェルインターフェイスがカーネルを囲んでいるのと同じようにカーネルを囲んでいるということです。シェルはユーザーが操作する部分であり、計算能力の要求はカーネルによって管理されます。

シェルについて理解する重要なことは、それがコンピューティングの新時代をマークしたということです。シェルは、コンピューターをアプライアンスから、オンデマンドでその機能を変更できる動力工具に変換しました。コンピューターはインタラクティブになりました。最新のコンピューティングでも、シェルはコンピューターとの対話の最低レベルです。これにより、次に何をしたいかをコンピューターに指示する最も直接的な方法になります。したがって、シェルを学習することは、パワーユーザーにとって非常に貴重な戦術です。

シェルは多くの人にとって抽象的な概念です。シェルについて考えるときは、特定のシェルについて考えると役に立ちます。選択できるものはたくさんあります。最も人気のあるのは(GNU)Bashですが、ZshとFishは人気のあるBashの代替手段です。 TcshとKshは、POSIXに厳密に準拠した、初期のUNIXの信頼できる古いお気に入りです。 AshとDashは軽量で高速であることを目指しており、組み込みシステムや最小限の環境に最適です。 MicrosoftのPowershellは、オープンソースの.NETベースのシェルです。

コマンドライン

シェルにアクセスすると、プロンプトが表示されます。シェルプロンプトをコマンドラインと呼ぶ人もいますが、これは確かに説明的です。プロンプトは、コマンドを入力できる行を示します。

プロンプトは、シェルが指示を待っていることを通知するための記号です。一般的な記号はドル記号($ )、ただしパーセント記号(%)の場合もあります )、山かっこ(> )、オクトソープ(# )、または完全に何か他のもの。つまり、シェルを使用している場合、デフォルトのビューは次のようになります。


$

シェル間の顕著な違いは構文です。たとえば、BashとZshおよびAshとKshでは、「等しい」宣言を使用して変数を設定します。

$ foo=bar
$ echo $foo
bar

ただし、Tcshでは、キーワードsetを使用します 変数の場合:

$ set foo=bar
$ echo $foo
bar

ヘルプ

表面的には、シェルインターフェイスは必ずしもユーザーフレンドリーではありません。それどころか、あなたはシェルをどうするかを知っていることが期待されているようです。グラフィカルアプリケーションは、アプリケーションの機能を正確に知らなくても、少なくともユーザーに探索用のボタンとメニューを提供するため、これはほとんどの現代のコンピューター専門家が慣れているものではありません。

シェルが入力、一般的な単語、英語などを待っていることをユーザーが理解している場合でも、エラーまたは役に立たない出力をレンダリングします。

たとえば、「help」と入力すると、 Bashプロンプトで、組み込みコマンドのリストが表示されます。そのうちのいくつかは、有用な結果を生成したり、さらに対話を可能にしたりします。

その意味で、シェルは典型的なアプリケーションではありません。それは本当にほとんどがコマンドラインです:あなたがコマンドをタイプするためのラインです。使用可能なコマンドを知るのはユーザーの責任であり、シェルを開くユーザーは、システムについて詳しく知ることができるように、少なくとも最も基本的なコマンドに精通していると想定されています。

常にそうであるとは限らないため、パブリックシステムでは、ほとんど役に立たないコマンドhelpをグローバルにエイリアス化すると便利です。 シェルプなどの有益な情報に。

コンソール

LinuxまたはBSDのシェルにアクセスするには、GUIをまったく実行しないか(シェルが残っている)、またはAlt + Shiftとファンクションキー2〜6を押します。各ファンクションキーを使用すると、提供された画面に移動します。 getty(またはagetty、またはディストリビューションが使用するものに応じて同様のもの)によって。この画面はシェルへのログインプロンプトを提供し、この画面はしばしばコンソールと呼ばれます。より正確には、それはgettyセッションまたはエミュレートされたttyデバイスです。

Macでは、実行中のシステムでGUIの実行をオプトアウトする方法はありませんが、起動時にスナッグキーを使用してシングルユーザーモードで起動できます。 Mac OSのシングルユーザーモードでは、ユーザー管理を含む多くの機能が無効になるため、通常はお勧めできません。

最近のコンピューターでシェルにアクセスする最も一般的な方法は、内部でシェルを実行するターミナルエミュレーターを開くことです。

ターミナル

パーソナルコンピュータ(PC)の概念が存在する前は、端末は歴史的に物理的なデバイスでした。端末はコンピューターのようなオブジェクトでしたが、実際には、キーボードが接続された単なる画面(または場合によってはプリンター!)でした。最新のコンピューターのターミナルウィンドウは、その履歴オブジェクトのエミュレーションであり、通常、ターミナルエミュレーター内で任意のシェルを実行できます。

たとえば、Linuxデスクトップでは、GNOMEターミナルの1つのインスタンスを実行してBashシェルへのウィンドウとして機能させ、GNOMEターミナルの別のインスタンスを実行してTcshシェルへのウィンドウとして機能させることができます。

ターミナル自体は、実行中のシェルを収容するためだけにあります。ターミナルエミュレータは、データを処理したりコマンドを実行したりしませんが、特別なキーボードショートカット、ファイルをシェルにドラッグアンドドロップする機能、カラーテーマなどのユーザーインターフェイス機能を追加する場合があります。

すべてのプラットフォームで利用できる多くのターミナルエミュレータがあります。 LinuxおよびBSDデスクトップには、xtermが付属しています。 フォールバックとして、通常は日常的に使用する最新のエミュレーター(GNOMEターミナル、Konsoleなど)が含まれています。 Mac OSには独自のターミナルエミュレータが付属していますが、iTerm2ははるかに優れた代替品です(ライセンスはGPLv2です)。

Windowsの場合、PowerShellがデフォルトですが、ConEmuやCmderなどの他の多くのオープンソースオプションがあります。

詳細

シェル内を移動する方法、シェル内のファイルを管理する方法、シェルをカスタマイズする方法を読むことで、端末と端末が実行するシェルについて詳しく知ることができます。 行うことでよりよく学ぶ場合 次に、RedHatTrainingの入門コースを受講することを検討してください。

[何を理解するのに助けが必要 ターミナルで入力するには? Linuxコマンドのチートシートをダウンロードします。 ]


Linux
  1. シェルのコマンド出力から最初/最後の「n」行を削除するにはどうすればよいですか?

  2. Linuxwcコマンド

  3. バックグラウンドで UNIX / Linux コマンド (およびシェル スクリプト) を実行する 5 つの方法

  1. 組み込みコマンドとそうでないコマンドの違いは?

  2. ドル括弧の拡張をサポートせず、バックティックを要求するシェルはどれですか?

  3. 異なるシェルでコマンド エイリアスを作成する例

  1. コマンドラインログインシェルで起動するようにYabootとDebianを設定しますか?

  2. Linux でファイルの行数を数える方法 (wc および nl コマンドの例)

  3. bashの&>と>&の違いは何ですか?