はじめに
LPIC102(シェルとシェルスクリプト分野)で問われやすいコマンドや要点などをまとめた記事です。
寝る前の10分でざっと読んで各単元の復習に活かすも良し、試験直前に読んで最後の詰め込みに使うも良しです。
このシートがLPIC102を受けられる方の支えになれば幸いです。
チートシート(シェルとシェルスクリプト分野)
コマンドとオプション
| コマンド | 説明 |
|---|---|
| set | シェルや環境変数の表示 -o:オプションの設定状態を表示 -o オプション:オプションを有効化 +o オプション:オプションを無効化 |
| declear | 変数を宣言 -f:定義済みの関数を表示 |
| function | 関数を定義 |
| export | シェル変数を環境変数として登録 |
| alias | エイリアスを設定 書式:alias エイリアス='コマンド' (オプションなし:登録されているエイリアスの表示) |
| unalias | 指定したエイリアスを削除 -a:エイリアスを全削除 |
| env | 現在の環境を表示/変更後の環境で指定したコマンドを実行 -i:環境変数が設定されていない状態にする -u:環境変数を一時的に削除 |
| unset | 指定した環境変数を削除 |
| read | シェルスクリプト内で標準入力からの入力を受け付ける際に利用 |
| source | 現在のシェルでスクリプトを実行(.で置き換えることも可能) |
| seq | 連続した数値を自動的に生成 x y z:xからzまでyずつ増加 x y:xからyまで1ずつ増加 x:1からxまで |
| exec | 指定したコマンドを既存のジョブに置き換えて実行 |
setコマンドの主なオプション
| オプション | 説明 |
|---|---|
| allexport | 作成/変更した変数を自動的にエクスポート |
| emacs | emacs風のキーバインドにする |
| ignoreof | Ctrl + D でログアウトしないようにする |
| noclobber | 出力リダイレクトによる上書きを禁止 |
| noglob | メタキャラクタを使ったファイル名展開を無効 |
| vi | vi風のキーバインドにする |
| noexec | 実際には実行せず確認のみ行う |
testコマンドの主な条件式
| 条件式 | 説明 |
|---|---|
| -f | ファイルが存在すれば真 |
| -d | ディレクトリが存在すれば真 |
| -r | ファイルが存在かつ読み取り可能であれば真 |
| -w | ファイルが存在かつ書き込み可能であれば真 |
| -x | ファイルが存在かつ実行可能であれば真 |
| -L | シンボリックリンクが存在すれば真 Lは大文字であることに注意 |
| -e | パスが存在すれば真 |
| ファイル1 -nt ファイル2 | ファイル1の修正時刻がファイル2より新しければ真 |
| ファイル1 -ot ファイル2 | ファイル1の修正時刻がファイル2より古ければ真 |
| 数値1 -eq 数値2 | 数値1と数値2が等しければ真 |
| 数値1 -ge 数値2 | 数値1が数値2以上であれば真 |
| 数値1 -gt 数値2 | 数値1が数値2より大きければ真 |
| 数値1 -le 数値2 | 数値1が数値2以下であれば真 |
| 数値1 -lt 数値2 | 数値1が数値2未満であれば真 |
| 数値1 -nt 数値2 | 数値1が数値2と等しくなければ真 |
| 文字列1 = 文字列2 | 2つの文字列が等しければ真 |
| 文字列1 != 文字列2 | 2つの文字列が等しくなければ真 |
| 条件1 -a 条件2 | 両方の条件式が真であれば真 &&ではないことに注意 |
| 条件1 -o 条件2 | いずれかの条件式が真であれば真 |
英語に直して考えれば全て暗記する必要はない。(例. ge = greater equal)
bashログイン時に読み込む環境設定ファイルの順序
| 順序 | ファイル | 説明 | 備考 |
|---|---|---|---|
| 1 | /etc/profile | ログイン時に実行され、全ユーザから参照される 環境変数などを設定 |
- |
| 2 | /etc/bash.bashrc | bash起動時に実行され、全ユーザから参照される | Debian系のみ |
| 3 | ~/.bash_profile | ログイン時に実行される ユーザ独自の環境変数などを設定 |
- |
| 〃 | ~/.bash_login | ログイン時に実行される | ~/.bash_profileが存在しない場合に読み込まれる |
| 〃 | ~/.profile | ログイン時に実行される | ~/.bash_loginも存在しない場合に読み込まれる |
| 4 | ~/.bashrc | bash起動時に実行される ユーザ独自のエイリアスなどを設定 |
- |
| 5 | /etc/bashrc | ~/.bashrcから参照される | - |
| ログアウト時 | ~/.bash_logout | ログアウト時に実行される |
対話型シェルを起動した際に読み込まれるファイル
| 順序 | ファイル | 説明 |
|---|---|---|
| 1 | ~/.bashrc | ユーザ個別ファイル |
| 2 | /etc/bashrc | 全体設定用(RedHat系) |
| 〃 | /etc/bash.bashrc | 全体設定用(Debian系) |
制御構文
if 条件式
then
実行文1
else
実行文2
fi
for 変数名 in 値のリスト
do
実行文
done
while 条件文
do
実行文
done
case 式 in
値1)
実行文1) ;;
値2)
実行文2) ;;
esac
基本的な制御構文の書式は暗記しておく。case文の;;などは忘れがちなので注意
スクリプトに渡す引数
| 変数名 | 説明 |
|---|---|
| $0 | シェルスクリプト名 |
| $n (n=9以下の数値) | n番目の引数 |
| ${N} (N=10以上の数値) | N番目の引数 |
| $# | 引数の数 |
| $@ | すべての引数 (スペース区切り) |
| $* | すべての引数 (環境変数IFS区切り) |
| $? | 直前に実行されたコマンドの終了ステータス |
| $$ | 現在のシェルのプロセス番号 |
LPIC102対策用チートシート リンク集
[ユーザーインターフェースとデスクトップ] (https://qiita.com/kjstudy_englife/items/44cc9d5585e1aff73e4d)
[管理タスク] (https://qiita.com/kjstudy_englife/items/dd01a5ad684ea1cc9194)
[必須システムサービス] (https://qiita.com/kjstudy_englife/items/e7c587744b486f0f90f7)