Linux(Linux Essentials)2‐1.コマンドラインの基本

今回紹介するのは以下
・シェルについて
・シェル変数と環境変数について
・メタキャラクターについて






■シェルについて
・シェル(shell)の役割とは。
Linux(OS)を動かすための言語およびソフトウェア
→ユーザーの入力をカーネルへ伝える窓口。
※ユーザーが入力したコマンドを解釈してカーネルに伝え、カーネルからの応答をユーザーに伝える。


Linuxのデフォルトシェル。
bash(Bourne-Again Shell)


・過去に実行したコマンドの履歴を表示するコマンド。
history


・コマンドの履歴を呼び出す機能。
→!


・コマンド「history」実行後に表示された履歴番号「2」のコマンドを再実行する。
!2


LinuxのデフォルトシェルBashにおいて、入力したコマンドの履歴を保存するファイル。
→.bash_history


・コマンド「bash」の実行ファイルの場所を取得するためのコマンド。
type bash


・「$ type -a ls」の実行結果が以下の場合、何を意味するか。

ls は `ls --color=auto' のエイリアスです
ls は /usr/bin/ls です

lsコマンドの実体は「/usr/bin」ディレクトリにある。
→「ls」を入力すると実際は「/usr/bin/ls --color=auto」が実行されている。


・root権限でログインした場合、プロンプトの末尾に表示される文字。
#


・一般ユーザーでログインした場合、プロンプトの末尾に表示される文字。
$


■シェル変数と環境変数について
・変数の有効範囲。
→シェル変数:変数を設定したシェル。
環境変数:変数を設定したシェルおよび以降起動するシェルやコマンドやアプリケーションなど


・設定方法。
→シェル変数:「変数名=値」(※値の前に記号は一切付けない)。
環境変数:「export 変数名=値」または「export シェル変数」。


例:環境変数「TEST」に値「ping-t」を設定するコマンド。
→export TEST=ping-t


例:「cmd_test」を「/home/guest/cmd」ディレクトリ配下に配置した場合のPATH環境変数への設定。
→export PATH=/home/guest/cmd:$PATH
→export PATH=$PATH:/home/guest/cmd


例:シェル変数TESTに値「Linux Essentials」が設定されている場合に、このシェル変数TESTを環境変数として設定する方法。
→export TEST(※最も効率的な方法
→export TEST="Linux Essentials"


・削除方法。
→シェル変数/環境変数:「unset 変数名」。


・確認方法。
→シェル変数/環境変数:「echo $変数名」(※変数の前に$を付ける)。


例:環境変数「TEST」に設定された値を表示するコマンド。
→echo $TEST(※表示する際は「$」を付ける)


環境変数PATHについて。
プログラムの実体がある場所を指し示す役割。
→実行ファイルの場所を意識することなくコマンドを実行できる。


・予めシステムによって決められた環境変数(「echo $<環境変数>」の形式で値を参照できる)。
→echo USER:ユーザー名。
→echo HOME:ホームディレクトリ(ユーザーがログインしたときの作業ディレクトリ)。
→echo PATH:実行可能なファイル(コマンド)が配置されているディレクトリ。


環境変数TESTを削除するコマンド
→unset TEST


・変数「TESTA」に値「ping-t」が設定されている場合、「echo \$TESTA」の出力はどのようになるか。
→$TESTA(※「\」は次のメタキャラクタを無視して通常の文字として扱う


例:シェル変数を「TEST=ping-t」設定して、別のターミナルから「echo $TEST」を実行した場合、どのような結果になるか。
→何も表示されない(※シェル変数を設定したターミナル=シェルとは別のシェルから参照しようとしているため)
※同じシェルであれば「ping-t」が表示される。





■メタキャラクターについて
・「'」(シングルクォーテーション)
→囲まれた部分を文字列とみなす。


例:「cat 'my file'」の実行結果。
→ファイル「my file」の内容が表示される。


例:変数「TESTA」に値「ping-t」が設定されている場合「echo '$TESTA'」の出力。
→$TESTA(※「$TESTA」を一つの文字列として扱うため


・「"」(ダブルクォーテーション)
→囲まれた部分を文字列とみなす(※ただし「$」「`」「\」「"」は除く)。


例:変数「TESTA」に値「ping-t」が設定されている場合「echo "$TESTA"」の出力結果。
ping-t(※「$」が指定されているため文字列ではなく変数内の値が表示


例:シェル変数TESTへ値"Linux Essentials"を設定するコマンドライン
→TEST="Linux Essentials"
※半角スペースを含んでいるため、一つながりの文字列であることを示すために「"」で囲む。


・「`」(バッククォーテーション)
→囲まれた文字列(※変数の場合は格納されている値)をコマンドとみなし実行結果を表示。


例:変数COMMANDには、文字列「ls」という値が設定されている場合、設定された文字列をコマンドとして実行する。
→echo `$COMMAND`(※バッククォーテーションで囲む)


・「\」
→次の文字(メタキャラクター)を無視する。


例:「cat 'my file'」と同じ意味のコマンド。
→cat "my file"(※囲んだ部分を文字列とする)
→cat my\ file(※スペースを無視する)


・「$」
→変数


・コマンド \ (改行)コマンド
→コマンドを複数行で記載する。


例:コマンド「ls /home/guest」を二行に分けて入力する場合。
→ls \(改行) /home/guest


・コマンド1 ; コマンド2
→コマンド1とコマンド2を続けて実行する


例:「/tmp」ディレクトリへ移動してから「/tmp」ディレクトリにあるファイル一覧を表示する。
→cd /tmp ; ls