Yanonoblog!

こつこつと

Linuxコマンド、シェル、ターミナルの概要

はじめに

多少実践的にもLinux使えるようになりたいと思い書籍「新しいLinuxの教科書」を読み進めています。

本記事では「新しいLinuxの教科書」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしていきます。

前回の記事の続きとなっております。

Linuxの概要と環境を立ち上げてみる

Linuxコマンド

ログイン、ログアウト

以下はログイン、ログアウト関連のコマンド解説です。

コマンド 解説
exit 現在のシェルからログアウトする。
logout 現在のユーザーアカウントからログアウトする。
su 別のユーザーとしてログインする。
shutdown -h now システムをシャットダウンする。-h オプションはハードウェアの電源を切ることを示し、 now は即座にシャットダウンすることを示す。
shutdown -r now システムを再起動する。-r オプションは再起動することを示し、 now は即座に再起動することを示す。

基本的にはLinuxでは使い終わったらログアウトすることが推奨されています。

セキュリティの観点と、PCのリソースを余分に消費するためです。

また、shutdownは重い操作のため、メンテナンスやシステム障害のケースでない限りは動かし続けて使用されるのが一般的です。

コマンドが実行された時のLinux内部の仕組み

image

dateコマンドを実行した例です。

  • キーボードから入力されたdateの文字列を受け取る
  • コマンドの保存場所からdateという名前のコマンドを探す
  • 見つかったコマンドを実行する
  • 実行した結果として得られた日時の文字列を画面に表示する
  • コマンドを実行する部分はLinuxの本体であるLinuxカーネルが行います。

    シェルとは

    カーネルとユーザーの間で機能するソフトウェアです。

    シェルは入力されたコマンドをLinuxカーネルが理解できる形式に変換し、カーネルに送信します。カーネルがコマンドを実行した結果をシェルに返し、シェルはそれをユーザーに表示します。

    シェルには複数の種類があり、それぞれに独自の機能や特徴があります。代表的なシェルにはBash、Zsh、Ksh、Tcshなどがあります。

    Linuxカーネルとシェルは密接に関連しており、一緒に動作することでLinuxシステムを構成しています。

    シェルの種類

    いずれもUnixシェルの種類です。

    sh (Bourne shell)

    Unixオペレーティングシステムで最も古くから存在するシェルの1つで、Bourne shellとも呼ばれます。

    POSIX規格に準拠しておりシンプルであるため、組み込みシステムや古いシステムなどリソースが限られた環境での使用に適しています。

    bash (Bourne-Again SHell)

    GNUプロジェクトによって開発された、Bourne shellの拡張版です。

    POSIX規格に準拠しているだけでなく、機能拡張が多数実装されています。

    GNU / Linuxシステムでは、標準的なシェルとして使用されることが多く、Mac OS Xなど他のUnix系システムでも利用できます。

    zsh (Z shell)

    bashに比べて機能が豊富で、高度なカスタマイズが可能なシェルです。

    コマンド補完機能が強力で、コマンドの実行を支援する多数の便利な機能が備わっています。

    Mac OS Xなど、いくつかのUnix系システムでデフォルトのシェルとして使用されています。

    本著ではbashが強くおすすめされている

    デメリットはなく、以下のメリットがあると記されていました。

  • Linuxでデフォルトのログインシェルとして採用されており、利用する機会が多い
  • 対話的に使うにも、シェルスクリプトを利用するにも十分な機能が備わっている
  • shとの広報互換性を持つため、既存のsh用のシェルスクリプトをそのまま利用出来る
  • Linux以外にもMacを含め多くのOSに移植されている
  • 利用者が多く書籍やWebで情報を集めやすい
  • ただ、zshを否定する意味ではなく、zshはさらに高機能な有用なシェルと書かれていました。

    別調べによると、zshbashはどちらも強力なシェルであり、機能面ではほぼ同じです。

    ただ、zshはbashと比べて学習コストが高いというデメリットがあるようです。

    bashはデフォルトのシェルとして多くのLinuxディストリビューションに採用されており、広く使われているため、初心者には扱いやすいかもしれません。

    プロンプトとは

    ターミナルなどで都度表示される”コレ”です

    image

    以下のCentOSではyanoがユーザー名localhostホスト名です。

    実行環境によってプロンプトの形式は変わるようです。

    image

    ログインシェルの確認

    以下のecho $SHELLコマンドで確認することができます。

    MacのターミナルはzshCentOSbashのようです。

    ~/w/goenbako ❯❯❯ echo $SHELL
    /usr/local/bin/zsh
    

    image

    一時的にシェルを切り替えることも出来る

    シェルの名前を叩くだけです。

    ~/w/goenbako ❯❯❯ bash                                                                                                                        ✘ 127 
    
    The default interactive shell is now zsh.
    To update your account to use zsh, please run `chsh -s /bin/zsh`.
    For more details, please visit https://support.apple.com/kb/HT208050.
    bash-3.2$ date
    202344日 火曜日 220255JST
    bash-3.2$ exit
    exit
    ~/w/goenbako ❯❯❯
    

    ターミナルに関するまとめ

    ターミナル

    ターミナルは、物理的なデバイスであり、ユーザーがCLIを使用してシステムとやりとりするための画面とキーボードを提供します。

    現代のOSにおいて、ターミナルエミュレータが広く使用されており、実際の物理的な端末ではなく、仮想的な端末を提供しているため、ターミナルは厳密にいうと今はターミナルエミュレータに成り代わっているため、ソフトウェアを指す場合はターミナルエミュレータと呼ぶのが適切です。

    ターミナルエミュレータ

    ターミナルをエミュレート(模倣)するソフトウェアで、コマンドラインインタフェース(CLI)を使ってLinuxシステムを操作するために必要です。

    ターミナルエミュレータは、ターミナルで使用される多くの機能を模倣し、端末の画面上に文字を表示することができます。

    シェルは、ターミナルエミュレータの上で動作するソフトウェアの一種で、コマンドを入力して操作することができます。

    続く…

    コメント

    本記事の内容は以上になります!

    書籍の続きのアウトプットも随時更新したいと思います。


    プログラミングスクールのご紹介 (卒業生より)

    お世話になったプログラミングスクールであるRUNTEQです♪

    https://runteq.jp/r/ohtFwbjW

    ご不明な点ありましたらお気軽にコメントか、TwitterのDMでお答えします♪

    https://twitter.com/outputky

    参考

    • 新しいLinuxの教科書 - Chapter02