初めに
LPIC試験の勉強をしていて、勉強したものをまとめています。
ご指摘等ございましたらご教授下さい。
シェル
シェルの役割と基本を知ろう
コマンドを入力してEnterを押すと、コマンドが実行されて実行結果が表示されます。
コマンドの入力を受け、処理をして、結果を表示しているのがシェルです。
ユーザーが入力したコマンドをカーネルに実行させる翻訳者の役割です。
また、プロンプトを表示しているのもシェルです。
Linuxのシェルはbashです。psコマンドでシェルを確認できます。
システムで利用可能なシェルは/etc/shellsファイルで確認できます。
標準入出力
Linuxで実行されるプログラムにはデフォルトで3つの出入り口があります。
まず、プログラムは標準入力からの入力を受けます。
そして、標準出力はプログラムの実行結果が、標準エラー出力はプログラムのエラー結果が
出力されます。しかし、シェルは入力元、出力先を切り替えることができます。
catコマンドを例に取ると、catコマンドは何も引数を指定しないと、
標準入力から受け取ったデータを標準出力に出力するという動作です。
Ctrl+Dで停止します。
リダイレクト
リダイレクトはコマンドの標準出力を端末画面ではなく、
任意のファイルに切り替えることができます。
コマンド > ファイル名
例:date > today
これはdateコマンドの出力をtodayファイルで出力するという意味です。
todayファイルがないときは作成されます。
もう一度実行すると上書きされます。
末尾に追記するときは>の代わりに>>を使います。
標準エラー出力をリダイレクトするときは2>もしくは2>>を使います。
パイプ
パイプ「|」を使うとあるコマンドの実行結果を別のコマンドで処理できます。
コマンド | コマンド
メタキャラクタ
シェルにとって特別な意味を持つ文字をメタキャラクタと言います。
*は0文字以上の任意の文字列
?は任意の1文字
[]は[]内の任意の1文字
/はメタキャラクタの打ち消しです。
シェルの便利な機能
コマンド履歴
コマンドの履歴を活用するには↑を活用しましょう。
なお、historyコマンドを使うとコマンドの履歴の一覧を表示できます。
!履歴番号を実行すると履歴番号のコマンドが再度実行されます。
ファイル名の補完
コマンドやファイル名のミスを防ぐためにTabキーを使いましょう。
補完する候補が複数ある時は、もう一度Tabキーを押すと候補一覧が表示されます。
エイリアス
コマンドには別名を付けることができます。
別名をエイリアスと言います。エイリアスを付けると次のようにできます。
・よく使うコマンドに短縮名を付ける。
・コマンドとオプションをまとめて1つのコマンドのように使う。
・連続したコマンド処理を簡単に実行する。
aliasコマンドを付けます。
alias [別名[=コマンド]]
引数無しでaliasコマンドを実行すると、設定済みのエイリアスが表示されます。
引用符
Linuxではスペースなどの文字はコマンドや引数の区切りで使われ、
特別な意味を持ちます。
例えば、alias la='ls -la'ですが、
これをalias la=ls -laにすると la=lsと-laに分かれてしまい
認識されなくなります。
なので、スペースの直前に/を置く方法もあります。
また、シングルクォーテーションは変数展開ができないが、
ダブルクォーテーションは変数展開ができます。
シェル変数と環境変数
変数の設定と確認
シェルが動作する上で必要となる様々な情報は変数に保存されます。
変数名=値
ただし、=の前後にスペースを入れないようにして下さい。
変数の内容はechoコマンドを使って確認できます。
変数名には$を付けます。
1つのシェルの中だけで使える変数をシェル変数と言います。
他のシェルでも使える変数を環境変数と言います。
export [変数名[=値]]
設定されている環境変数を表示するには、printenvコマンドを実行します。
また、setコマンドを実行すると設定されているシェル変数と環境変数を表示します。
コマンドとパス
コマンドには組み込みコマンドと外部コマンドがあります。
外部コマンドは、シェルの外部に同じ名前の実行プログラムとして保存されます。
whichコマンドを使うと、コマンドの実行ファイルがどこか確認できます。
例えば、dateコマンドは/usr/bin/dateにあると分かりました。
でも、毎回これを入力するのは手間です。なので、組み込みコマンドでなければ
シェルは変数PATHに格納されているディレクトリを検索し、コマンド名に一致するファイルを
実行します。これをコマンドサーチパスと言います。単にパスとも言います。
ディストリビューションの設定によって、一般ユーザーとrootユーザーとで
パスの内容を変更している場合があります。
コマンドが見つからなくても絶対パスなら実行できます。
シェルスクリプト
シェルスクリプトの基本
シェルスクリプトとは?
シェルスクリプトを使えば、一連のコマンド操作を自動化し、効率的にLinuxを操作できます。
しかし、複数のコマンドを実行するのは手間です。
なので、シェルスクリプトを使います。拡張子は.shになります。
シェルスクリプトの決まりごと
「#」があると、コメントになりますが、1行目は特別です。
1行目の#!はシェバンと言い、どのシェルでコマンドを実行するか指定する役割になります。
シェルスクリプトの実行方法
1つ目の実行方法はbashコマンドです。
bash シェルスクリプトファイル名
2つ目はsourceコマンドの引数としてシェルスクリプトファイルを指定します。
source シェルスクリプトファイル名
sourceの時はシェル変数をシェルスクリプト内で参照できる点です。
しかし、bashはシェルスクリプトはシェルスクリプトのものと判断しています。
3つ目はシェルスクリプトに実行権を移し、パスを指定します。
相対パスではエラーになってしまうので、必ず絶対パスにしましょう。
相対パスで表すときは、./のようにカレントディレクトリを指定しましょう。
引数と終了ステータス
引数の利用
コマンドと同じようにシェルスクリプトを実行するときにも引数を指定できます。
指定した引数は、シェルスクリプト内で利用できます。
これは「$1」という変数を使います。2つ目は「$2」です。
終了ステータス
$?を使うと、終了ステータスを表します。これは実行が成功なら0,
失敗なら0以外の数値が出ます。