補完機能
・入力途中でTabキーを押すと残り部分が自動入力される。
・該当が複数ある場合は、tabキーを2回押すと候補が表示される。
シェル
・ユーザからコマンドを受け付け必要なプログラムを実行
・代表的なシェル
| Bourne | UNIXの標準的なシェル |
| Bash | Bourneシェルを改良したもの。Linuxの標準シェル |
| Cシェル(csh) | C言語に似たスクリプトが利用できる |
| tcsh | cshを改良したもの |
| Kornシェル(ksh) | Bourneを拡張したもの |
| zsh | kshにbashやtcshの機能を取り入れたもの |
ログインシェル
・システムログイン直後に起動されるシェル
・ログイン後、シェルは「$」や「#」等のプロンプトを表示
・一般ユーザとrootではプロンプトが異なる
・シェルのプロンプト表示形式は環境変数、PS1で設定可能。
・root # 一般ユーザ $
・ログイン後、シェルは「$」や「#」等のプロンプトを表示
シェルのオプション機能
・setコマンドで有効・無効を設定、環境変数を表示する。
set [-o][+o] オプション オプションを有効にするには「-o」を指定し、解除するには「+o」を指定します。

・引数を指定しない場合は全てのシェル変数と環境変数を表示
・printenvとenvは環境変数を表示するコマンドでオプションを設定する機能はない
declare:シェル変数だけでなく環境変数も表示。declare -x 環境変数=値

コマンドラインの基本操作
| コマンド | 説明 |
|---|---|
| Ctl + A | カーソル行頭に移動する |
| Ctl + E | カーソル行末に移動する |
| Ctl + D | カーソル部分の1文字削除 |
| Ctl + H | カーソル左側の1文字削除 |
| Ctl + L | 画面をクリアしカレント行を再表示する |
| Ctl + C | 処理中断 |
| Ctl + Z | 処理を一時停止 |
ディレクトリの指定
| コマンド | 説明 |
|---|---|
| 〜 | ホームディレクトリ |
| . | カレントディレクトリ |
| .. | 一つ上のディレクトリ |
・pwd(Print Working Directory
・echo $PWD $PWD(カレントディレクトリのパスが格納される環境変数)
・ホームディレクトリに移動できるコマンド
・cd / cd ~ / cd ~(user)
シェル変数と環境変数
・有効範囲の違い
・シェル変数:変数を定義したシェルプロセス
・環境変数 :変数を定義したシェル。そのシェルで実行されるプロセス
・主な環境変数
| 変数 | 説明 |
|---|---|
| EDTIOR | デフォルトエディタのパス |
| HISTFILE | コマンド履歴格納ファイル |
| HISTFILESIZE | HISTFILEに保存する履歴数 |
| HISTSIZE | コマンド履歴の最大値 |
| HOME | カレントユーザのホームディレクトリ |
| HOSTNAME | ホスト名 |
| LANG | 言語 |
| LONGNAME | ログインシェルのユーザ名 |
| PATH | コマンドやプログラムを検索するディレクトリリスト |
| PS1 | プロンプトの表示文字列 |
| PS2 | 複数行に渡る入力時のプロンプト |
| PWD | カレントディレクトリ |
| TERM | 端末の種類 |
| USER | 現在のユーザ |
・変数の設定方法
・シェル変数 : 変数名=値
・環境変数 : exportコマンドで設定
export 環境変数=値
シェル変数設定後: VAR=lpic と設定後 export VAR
シェル変数と同時設定: export VAR=lpic
環境変数PATHに値を追加する場合は「export PATH=$PATH:値」
・変数の表示
・echo [文字列または$変数名]
VAR=lpic
ecoh $VAR ー> lpicと表示される
・変数の解除
・unset [変数名]を使う -> unset VAR
| 特徴 | シェル変数 | 環境変数 |
| 定義コマンド | 変数名=値 | export 変数名=値 |
| 影響範囲 | 現在のシェルのみ | 現在のシェル + 子プロセス |
| 確認コマンド | set | printenv または env |
| 主な用途 | ローカル処理 | システム設定、プログラム設定 |
環境変数PATH
・コマンドの種類
・内部コマンド : シェルに組み込まれているもの
・外部コマンド : 独立したプログラムが存在するもの
・環境変数PATH
外部コマンドを実行する場合、シェルはそのコマンドがどこに保存されて
いるのか環境変数PATHに指定された順番で調べて実行する。
・パスを通す
コマンドが保存されたディレクトリを環境変数PATHに追加すること
・パスの追加方法
・コマンドの種類
・内部コマンド : シェルに組み込まれているもの
・外部コマンド : 独立したプログラムが存在するもの
・環境変数PATH
外部コマンドを実行する場合、シェルはそのコマンドがどこに保存されて
いるのか環境変数PATHに指定された順番で調べて実行する。
・パスを通す
コマンドが保存されたディレクトリを環境変数PATHに追加すること
・パスの追加方法
・~/.bash_profileなどの環境設定ファイルを修正する
・PATH=$PATH:追加するディレクトリ名
例:/opt/binを末尾に追加する場合 ー> PATH=$PATH:/opt/bin
$PATHの部分が現在設定されている値
PATH=/opt/bin とすると、/opt/bin以外のpathが無くなる。
コマンドの実行
・基本書式 コマンド オプション 引数
・コマンドは1行に複数を並べて実行できる
| コマンド | 説明 |
|---|---|
| コマンド1;コマンド2 | 1に続いて2が実行される |
| コマンド1&&コマンド2 | コマンド1が正常に終了すると2が実行される |
| コマンド||コマンド2 | コマンド1が正常に終了しなかった場合にコマンド2を実行する |
| (コマンド1;コマンド2) | コマンド1とコマンド2を、ひとかたまりのグループで実行する |
| {コマンド1;コマンド2;} | 現在のシェル内でコマンド1とコマンド2を実行する |
引用符
・「’」 単一引用符
・全て文字列になる
・変数はそのまま表示される。※値は表示できない
$echo DATE
7月7日
$echo ‘$DATE’
&DATE
・「”」 二重引用符
・変数の値を表示した文字列になる
・変数はそのまま表示される。※値は表示できない
・変数をエスケープ(表示しない場合)は先頭に「\」バックスラッシュをつける。
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# echo “変数\$HOMEの内容は「$HOME」です”
変数$HOMEの内容は「/root」です
・「`」 バッククォーテーション
・バッククォーテーション内にコマンドがあれば実行結果を表示する
・変数の場合は変数に格納されているコマンド実行結果が展開される
・「\」バックスラッシュ
・次に続くメタキャラクタの意味を打ち消して通常の文字として扱う。
history
・コマンド実行履歴を参照する。コマンド実行例
$history
1 ls
2 cat .profile
3 pwd
4 cd ..
5 date
・”![履歴番号]”を入力するとそのコマンドが実行される
$ !5
date
2021年7月15日 23:22:12 JST
・「!文字列」と入力すると、指定した文字列から始まる直近のコマンドを再実行
・bash履歴機能
| コマンド | 説明 |
|---|---|
| ↑(Ctrl + P) | 1つ前のコマンドを表示する |
| ↓(Ctrl + N) | 1つ次のコマンドを表示する |
| !文字列 | 実行したコマンドで、指定した文字列から始まるコマンドを実行する |
| !?文字列 | 実行したコマンドで、指定した文字列を含むコマンドを実行する |
| !! | 直前に実行したコマンドを実行する |
| !履歴番号 | 履歴番号のコマンドを実行する |
$ !5
date
2021年7月15日 23:22:12 JST
・.bash_history: 履歴を保存するファイル
マニュアルの参照
・LINUXはオンラインマニュアルページを標準で装備ー> manコマンド
・マニュアルを構成するファイルは/usr/share/man に保存。
・検索ディレクトリは環境変数MANPATH。MANPATHに何も指定されていない場合
・ /etc/manconfig または
・ 指定されたデフォルトファイルを使用
・manコマンド
・man [オプション] [セクション] コマンド名 or キーワード
| オプション | 説明 |
|---|---|
| -a | 全セクションのマニュアルを表示 |
| -f | 指定キーワード(完全一致)でドキュメントを表示 |
| -k | 指定キーワード(部分一致)でドキュメントを表示 |
| -w | マニュアルがあるディレクトリを表示 |
・マニュアルは見出し区切られている
| 見出し | 説明 |
|---|---|
| NAME(名前) | コマンドやファイルの名前と簡易説明 |
| SYNOPSIS(書式) | 書式 |
| DESCRIPTION(説明) | 詳細説明 |
| OPTIONS(オプション) | 指定できるオプション説明 |
| FILES(ファイル) | 設定ファイルなど関連するファイル |
| ENVIRONMENT(環境変数) | 関連する環境変数 |
| NOTES(注意) | その他注意事項 |
| BUGS(バグ) | 既知の不具合 |
| SEE ALSO(関連項目) | 関連項目 |
| AUTHOR(著者) | プログラムやドキュメントの著者 |
・ページャ(lessコマンド)の説明
| キー操作 | 説明 |
|---|---|
| k、↑ | 上クロール |
| k、↓、Enter | 下スクロール |
| スペース、f | 下に1画面スクロール |
| b | 上に1画面スクロール |
| /検索文字列 | 下方向に文字列を検索する |
| ?検索文字列 | 上方向に文字列を検索する |
| h | ヘルプを表示する |
・セクション : 同一の名前で異なる内容を調べる
| セクション | 説明 |
|---|---|
| 1 | ユーザコマンド |
| 2 | システムコール |
| 3 | ライブラリ |
| 4 | デバイスファイル |
| 5 | 設定ファイル |
| 6 | ゲーム |
| 7 | その他 |
| 8 | システム管理コマンド |
| 9 | Linux独自カーネルのドキュメント |
whatisデータベース:オンラインマニュアルページ(manページ)に関する情報を蓄積するデータベース
makewhatis:whatisデータベースの作製または更新。
apropos:
ファイル操作コマンド
・ls [オプション] [ファイルまたはディレクトリ……] : ファイルを一覧表示する
| オプション | 意味 |
|---|---|
| -a | ドットファイルも表示する |
| -A | ドットファイルも表示する、ただし「.(カレント)」と「..(親)」を除く |
| -l | 詳細情報を表示 |
| -d | ディレクトリの内容ではなく、ディレクトリそのものの情報を表示する (シンボリックリンクもたどらない) |
| -H | コマンドラインで指定したファイルやディレクトリがシンボリックリンクの場合は、 リンク先の情報で表示(「-F」「-d」「-l」と一緒に使う。例えば、「/bin」が「/usr/bin」 へのシンボリックリンクの場合、「ls -l /bin」ではシンボリックリンクの情報が表示されるが、 「ls -lH /etc」では「ls -l /usr/bin」と同じ結果になる) |
| -L | ディレクトリ内のファイルも含めて、全てをシンボリックリンクのリンク先の情報で表示する |
| -R | ディレクトリを指定した場合、再帰的に表示する |
・cp [オプション] コピー元 コピー先 ファイルをコピーする
| オプション | 意味 |
| -f, –force | コピー先に同じ名前のファイルがあれば、確認なしで上書きします。 |
| -i, –interactive | 上書きされるファイルがあれば、その可否を確認します。 |
| -P, –parents | 元のファイルの属性(タイムスタンプ等)を可能な限り保持します。 |
| -R, –recursive | ディレクトリを再帰的にコピーする。ディレクトリを中身ごとコピーします。 |
| -d, | シンボリックリンクをシンボリックリンクとしてコピーする |
| -a, –archive | 元のファイルの属性とディレクトリ構成を可能な限り保持します。 |
・mv[オプション] 移動元 移動先 ファイルを移動する
| オプション | 意味 |
| -f | 移動先に同じ名前のファイルがあれば、確認なしで上書きします。 |
| -i | 上書きされるファイルがあれば、その可否を確認します。 |
・mkdir[オプション] ディレクトリ名 ディレクトリの作成
| オプション | 意味 |
| -m | 指定したアクセス権でディレクトリを作成する |
| -p | 必要なら親ディレクトリを同時に作成する |
・rm[オプション] ファイル名 ファイルの削除
| オプション | 意味 |
| -f | ユーザーへの確認無しに削除する |
| -i | 削除する前にユーザーに確認する |
| -r, -R | サブディレクトリを含め再帰的にディレクトリ全体を削除する |
・rmdir ディレクトリ名 空のディレクトリを削除
| オプション | 意味 |
| -p | 複数階層の空ディレクトリを削除する。 |
・touch[オプション] ファイル ファイルのタイムスタンプを更新する
| -a | アクセス時刻のみを変更します。 |
| -c | 指定したファイル名が存在しない場合でも、空のファイルを作成しません。 |
| -m | 最終更新時刻のみを変更します。 |
| -r ファイル | 指定した時刻の代わりに指定したファイルの時刻に変更します。 |
| -t 時刻 | 現在時刻の代わりに指定した時刻に変更します。時刻の形式 → [[CC]YY]MMDDhhmm[.ss] |
・fileファイル ファイル形式を調べる
メタキャラクタ
| * | 0文字以上の文字にマッチ。「a*」は「ab」「abc」など「a」にもマッチ。 |
| ? | 1文字にマッチ。「a?」は「ab」「aa」。「a」や「abc」にはマッチしない。 |
| [] | カッコ内のいずれかの文字にマッチ。a[bcd] は「ab」「ac」「ad」にマッチ。 [0-9] -> 0,1,2,3,4,5,6,7,8,9のどれか1文字にマッチ。[a-z] -> アルファベット小文字1文字にマッチ。 「!」を先頭に入れるとマッチしない文字を指定。a[!0-9] -> 「a0」や「a1」にはマッチしません。 |
| {} | カッコ内の「,」で区切られた文字列にマッチ。a{aa,bb}は、「aaa」と「abb」にマッチします。 |

パイプとリダイレクト
・シェルスクリプト「sample.sh」の実行方法
実行権のビットが設定有り: ./sample.sh
実行権のビットが設定無し: source sample.sh bash sample.sh . sample.sh
・標準入力、標準出力
| 番号 | デフォルト | |
|---|---|---|
| 標準入力 | 0 | キーボード |
| 標準出力 | 1 | 端末画面 |
| 標準エラー出力 | 2 | 端末画面 |
・パイプ
・コマンドやプログラムの出力結果を次のコマンドやプログラムに渡す。
・記号 ” | “ を使う
・dmesg
・「カーネル(OSの心臓部)が出力したメッセージ」を表示
・tee
・コマンドの実行結果をファイル保存しながら画面表示
・書式:tee [オプション] ファイル名
| オプション | 意味 |
| -a | ファイルに追記する。 |
・リダイレクト
・コマンドへの入力元や出力先をコントロールする。
・記号 ” > “、 ”>>” を使う。
・上書: コマンド > 出力ファイル名。または「1>」
・追記: コマンド >> 出力ファイル名。
| 項目名 | 説明 |
|---|---|
| コマンド > ファイル | ファイル書き込み |
| コマンド < ファイル | ファイル内容をコマンド入力に送る |
| コマンド >> ファイル | ファイルに追記する |
| コマンド 2> ファイル | 標準エラーを書き込む |
| コマンド 2>> ファイル | 標準エラーを追記する |
| コマンド > ファイル2 >&1 | 実行結果とエラーを書き込む |
| コマンド >> ファイル2 >&1 | 実行結果とエラーを追記する |
| コマンド << 終了文字 | 終了文字が現れるまで標準入力へ送る |

テキスト処理
・cat [ ファイル名] ファイルの内容を表示
| オプション | 意味 |
| -n | 各行の左端に行番号を付ける。 |
| -b | 空白行を飛ばして行番号を表示する |
| -s | 連続した空白行を1行にする |
・join [-j フィールド] ファイル1 ファイル2 2つのファイルを読み込み、共通するフィールドがある行を
結合して表示「-j」オプションは連結するフィールドを指定

・pr [オプション] [ファイル名] ファイルを印刷用に整形するコマンド pr -l 30 +1:2 httpd.conf

・nl[オプション][ ファイル名] テキストファイルを行番号付きで出力する
| オプション | 意味 |
|---|---|
| -b 形式 | 本文の行番号のスタイルを指定する |
| -h 形式 | ヘッダの行番号のスタイルを指定する |
| -f 形式 | フッタの行番号のスタイルを指定する |
| 形式 | 説明 |
| a | 全ての行に対して行番号を付ける |
| t | 空行以外に対して行番号を付ける |
| n | 空行に対して行番号を付ける |
| pパターン | パターン(基本正規表現)に一致する行に対して行番号を付ける |
・od[オプション][ ファイル名] バイナリファイルを8進または16進で表示
| オプション | 意味 |
| -t | 出力するフォーマットを指定する |
| 出力タイプ | 説明 |
| d | 10進数(decimal) |
| o | デフォルト:8進数(octal) |
| x | 16進数(hexadecimal) |
| c | ASCII文字 |
| n | 非表示(none) |
・head[オプション][ ファイル名] ファイルの先頭を表示10行表示。行数やバイト数は指定可
| -c バイト数 | 先頭から表示するバイト数を指定します。 |
| -n 行数 – 行数 | 先頭から表示する行数を指定します。 指定しない場合は、先頭 10行が表示されます。 |
・tail[オプション][ ファイル名] ファイルの末尾を10行表示する。行数やバイト数は指定可
| -c バイト数 | 末尾から表示するバイト数を指定します。 |
| -n 行数 – 行数 | 末尾から表示する行数を指定します。 指定しない場合は、先頭 10行が表示されます。 |
| -f | ファイルの末尾に追加された行を表示し続ける。 |
・cut[ オプション][ ファイル名] ファイルの各行から指定した一部分を切り出し標準出力に表示する
| -c 文字数 | 切り出す文字数を指定します。 |
| -d 文字 | 区切り文字を指定します。デフォルトの区切り文字はタブです。 |
| -f フィールド数 | 切り出すフィールド数を指定します。 |
・fmt [-w 文字数] [ファイル名] 「-w」オプションで一行あたりの最大文字数が指定。デフォルトは75文字
指定した文字数を超える単語(上記の例だとURL)はそのまま表示されます。また、複数行の内容が1行に収まる場合はまとめて表示

・past[オプション][ ファイル名1] [ ファイル名2] ファイルを行単位連結。
| オプション | 意味 |
|---|---|
| -d 区切り文字 | 区切り文字(デリミタ)を指定する。デフォルトはタブ。 |
・tr [オプション] [文字列1 [文字列2]] < ファイル名
文字を置き換えるためのコマンド。標準入力と標準出力を使用。
ファイルを処理したい場合は「cat」コマンドなどを使用するかリダイレクト
| オプション | 意味 |
|---|---|
| -d | [文字セット1]に含まれる文字があったら削除する |
| -s | [文字セット1]に含まれる文字が連続していたら1つにまとめる |
| [:alnum:] | アルファベットと数字 |
| [:alpha:] | アルファベット |
| [:blank:] | スペースや水平タブ |
| [:cntrl:] | コントロール文字 |
| [:digit:] | 数字 |
| [:graph:] | スペースを含まない表示可能な文字 |
| [:lower:] | 小文字アルファベット |
| [:print:] | スペースを含む表示可能な文字 |
| [:punct:] | 句読点 |
| [:space:] | スペースや水平タブ,垂直タブ |
| [:upper:] | 大文字アルファベット |
| [:xdigit:] | 16進数文字 |
・sort[オプション][+開始位置[ー終了位置] ][ファイル名] 行単位ソート。
| オプション | 説明 | 備考 |
-n | 数値として並べ替え | デフォルトは文字として扱うため、10 が 2 より前に来ることがありますが、これを使えば正しく数値順になります。 |
-r | 逆順(降順)に並べ替え | 大きい順、またはZ→Aの順になります。 |
-u | 重複行を削除 | 並べ替えた後、同じ内容の行を1行にまとめます(Unique)。 |
-k | 列を指定して並べ替え | 「2列目(空白区切り)を基準にする」といった指定が可能です。 |
-t | 区切り文字の指定 | カンマ区切り(CSV)などを扱う際、-t ',' のように指定します。 |
-o | 結果をファイルに保存 | sort file > file とすると中身が消えることがありますが、 -o なら安全に上書きできます。 |
・expand [オプション] [ファイル名] タブをスペースに変換する

・unexpand [オプション] [ファイル名] 行頭にある連続したスペースをタブに変換するコマンド

・split[オプション][入力ファイル名[出力ファイル名]] 指定されたサイズでファイルを分割。
デフォルトの1000行で分割
| オプション | 説明 |
|---|---|
| -行数 | 指定された行毎に分割。デフォルトは1000行 |
・uniqe[オプション][入力ファイル名[出力ファイル名]] 重複した行を1行にまとめて出力。
| オプション | 説明 |
|---|---|
| -d | 重複している行のみを出力 |
| -u | 重複していない行のみを出力 |
・paste [-d 区切り文字] [ファイル名…] 複数のファイルを行単位で結合「-d」オプションで区切り文字を指定

・wc[オプション][ファイル名] テキストファイルの行数や単語数、文字数を数えるコマンド。
| オプション | 意味 |
|---|---|
| -c | バイト数を表示する |
| -m | 文字数を表示する(マルチバイト文字に対応) |
| -l | 改行の数を表示する |
| -w | 単語数を表示する |
・xargs[オプション]コマンド[コマンドの引数] 前のコマンドの実行結果を標準入力から受け取って、
次のコマンドの引き数に渡して実行
・ヒアドキュメント 「<<」と表記し、「コマンド << 終了文字」の書式で使用。
終了文字が現れるまでコマンドの標準入力に入力を続けるリダイレクト演算子
・正規表現 任意の文字列パターンを表す表記方法
| 正規表現 | 説明 |
| * | 直前の文字の0回以上の繰り返し 例 : 1*3.txt は、13.txt、113.txt などを表す。 |
| . | 任意の1文字の文字列 例 : 1..4.txt は、1234.txt、1ab4.txt などを表す。 |
| [ ] | [ ] 内の任意の1文字の文字列 例 : 1[23]4.txt は、124.txt または 134.txt を表す。 |
| ^ | 行頭 例 : ^1 は、行頭にある 1 を表す。 |
| $ | 行末 例 : 1$ は、行末にある 1 を表す。 |
| \ | 次に来る文字をメタキャラクタではなく通常の文字として処理 |
・拡張正規表現
| 拡張正規表現 | 説明 |
| + | 直前の文字の1回以上の繰り返し |
| ? | 直前の文字の0回、もしくは1回の繰り返し |
| | | 前後のいずれかの文字列 |
| {n} | 直前の文字のn回の繰り返し |
| {n、m} | 直前の文字のn回からm回の繰り返し |
・メタキャラクタと正規表現の違い
| 表現方法 | 説明 |
| メタキャラクタ | シェルにおいて、特別な意味を持つ記号のこと。 |
| 正規表現 | 文字列のパターンを表す時に利用される表現方法 |
・grep[オプション]検索パターン[ファイル名] 指定した文字列を含む行を出力するコマンド。
| オプション | 説明 |
| -c | パターンがマッチした行の行数だけを表示 |
| -f | ファイルから検索パターンを読み込む |
| -i | 大文字小文字を区別せずに検索 |
| -n | 検索結果と合わせて行番号も表示 |
| -v | パターンがマッチしない行の表示 |
| -E | 拡張正規表現の使用。 egrepコマンドを使用する場合と同じ。 |
| -F | 検索文字列を正規表現ではなく固定文字列として認識。 fgrepコマンドを使用する場合と同じ。 |
・egrep[オプション]検索パターン[ファイル名] 拡張正規表現を使用する際に使用するコマンド
・fgrep[オプション]検索パターン[ファイル名] 正規表現を使用せず、固定文字列として検索
・sed[オプション] -f スクリプト [ ファイル ] テキストストリームに対して編集を行うコマンド
| オプション | 説明 |
| -f ファイル | コマンドが書かれたスクリプトファイルを指定 |
| -i | 処理した内容でファイルの上書き |
・sed[オプション] コマンド [ ファイル ] 指定したファイルに対して実行
・sed[オプション] -eコマンド1 −eコマンド2 [ ファイル ] コマンドの列挙
| オプション | 説明 |
| d | マッチした行の削除。「 “開始行,終了行d” 」 と指定することで削除を行う。 |
| s | パターンに基づいた置換。「 s/検索パターン/置換パターン 」 と指定することで置換を行う。 |
| y | 文字の変換。「 y/検索文字/置換文字 」 と指定することで置換を行う。 |

sed 's/Book/A &./gi' を実行すると、大文字小文字を区別せず、行内のすべての Book が置換対象となります。
元のファイルの内容が Book book BOOK であれば、結果は以下のようになります。
結果: A Book. A book. A BOOK.
s: 置換(Substitute)を行います。Book: 検索する文字列。A &.: 置換後の文字列。&は、「検索で見つかった文字列そのもの」を指します。- 検索条件にマッチした
Book,book,BOOKが、それぞれA Book.,A book.,A BOOK.に置き換わります。
g(global): 行内にある「すべての」マッチした箇所を置換します。(これがないと、最初の1つだけしか置換されません)i(ignore case): 大文字小文字を区別せず(Case-Insensitive)に検索します。
VIエディタ
・構文 : vi [ -R ] [ ファイル名 ] -Rを指定することで読み取り専用として開く
・操作モード
| モード | 説明 |
| 入力モード | 文字入力を行う場合のモード |
| コマンドモード | vi エディタのコマンドと解釈するモード。削除、移動、コピー、保存などの操作 |
・操作モードの切り替え
・コマンドモードから入力モードへ
| 入力キー | 説明 |
| a | カーソル位置の後に文字を入力できるように、入力モードへ切り替え |
| A | カーソル位置の行末に文字を入力できるように、入力モードへ切り替え |
| i | カーソル位置に文字を入力できるように、入力モードへ切り替え |
| I | カーソル位置の行頭に文字を入力できるように、入力モードへ切り替え |
| o | カーソル位置の行の下に空白行を挿入して、そこに入力できるように、入力モードへ切り替え |
| O | カーソル位置の行の上に空白行を挿入して、そこに入力できるように、入力モードへ切り替え |
・入力モードからコマンドモードへ
| 入力キー | 説明 |
| Esc | 入力モードからコマンドモードへ切り替え |
・コマンドモードでのカーソル移動
| 入力キー | 説明 |
| h | 左矢印(←)キーと同じ意味であり、カーソル位置を1文字、左へ移動 |
| l | 右矢印(⇒)キーと同じ意味であり、カーソル位置を1文字、右へ移動 |
| k | 上矢印(↑)キーと同じ意味であり、カーソル位置を1文字、上へ移動 |
| j | 下矢印(↓)キーと同じ意味であり、カーソル位置を1文字、下へ移動 |
| 0 | 行頭へ移動( カーソルのある行の左端へ移動 ) |
| $ | 行末へ移動( カーソルのある行の右端へ移動 ) |
| H | 画面の一番上の行頭へ移動 |
| L | 画面の一番下の行末へ移動 |
| gg | ファイルの先頭行へ移動 |
| G | ファイルの最終行へ移動 |
| nG | ファイルのn行目へ移動 ( :n でも同じ ) |
・コマンドモードでの vi 編集と vi 検索
| 入力キー | 説明 |
| x | deleteと同じ意味であり、カーソル位置の文字の削除 |
| X | Backspaceと同じ意味であり、カーソル位置の前の文字の削除 |
| dd | カーソル位置の現在の行を削除 |
| dw | カーソル位置から次の単語までを削除 |
| yy | カレント行のコピー |
| p (小文字) | カーソル位置の後(右側)にコピーしたものを貼り付け |
| P (大文字) | カーソル位置の前(左側)にコピーしたものを貼り付け |
| r | カーソル位置の1文字を置換 |
| 入力キー | 説明 |
| /文字列 | カーソル位置からファイル末尾に向かって、指定した文字列の検索 |
| ?文字列 | カーソル位置からファイル先頭に向かって、指定した文字列の検索 |
| n | 上記の検索 ( /文字列、?文字列 ) による次の文字列の検索 |
| N | 上記の検索 ( /文字列、?文字列 ) による次の文字列の検索 ( 逆方向 ) |
・コマンドモードでの viの終了
| 入力キー | 説明 |
| :q | 編集データを保存せずに終了 ( 保存するかどうかの確認がある ) |
| :q ! | 編集データを保存せずに強制終了 |
| :w | 編集データの内容でファイルを上書き保存 ( エディタは終了しない ) |
| :w! | 編集データの内容でファイルを強制的に上書き保存 ( エディタは終了しない ) |
| :wq | 編集データを保存して終了 |
| :wq ! | 編集データの内容でファイルを強制的に上書き保存 ( エディタは終了 ) |
| ZZ | 編集データを保存して終了 ( :wq と同じ ) |
| :e! | 最後に保存した内容に復帰 |
| :r ファイル名 | ファイルの内容を現在の行以降に読み込み |
| :! コマンド | vi を終了せずにシェルコマンドを実行 |
| :r! コマンド | シェルコマンドの実行結果の挿入 |
1. 変数の種類とスコープ(有効範囲)
シェルが扱う変数には、性質の異なる2つの顔があります。
| 種類 | 定義方法 | 特徴 | 子シェルへの継承 |
| シェル変数 | abc=1 | そのシェル内だけの「メモ書き」 | されない |
| 環境変数 | export abc=1 | 子プロセスへ渡す「公式な設定」 | される |
2. コマンドごとの役割(管理ツールの違い)
「どの情報を、どう扱いたいか」によって、使う道具(コマンド)が変わります。
set(内政官:自分自身のすべて)
- 役割: 今のシェルの「全記憶」の表示と「動作ルール」の変更。
- 表示内容: シェル変数、環境変数、さらに「関数」まで全て。
- 主な用途:
set -e(エラーで止める)などのシェル設定の変更。
env(外交官:子プロセスへの橋渡し)
- 役割: 環境変数の表示と、一時的な環境でのコマンド実行。
- 表示内容: 環境変数のみ。
- 主な用途:
env abc=99 bashのように、今の環境を汚さずに一瞬だけ設定を変えて別のプログラムを動かす。
unset(消しゴム)
- 役割: 変数や関数の削除。
- 特徴: シェル変数も環境変数も消せるが、消せるのは「自分の手元」だけ(親の変数は消せない)。
3. シェルの「親子関係」と継承のルール
ここが最も重要な「動き」の部分です。
- 初期化: シェル起動時に
~/.bashrcを読み込み、標準の環境変数をセットする。 - コピー: 子シェルが作られるとき、親の「環境変数」だけがコピーされて渡される。
- 独立: * 子で変数を変えても、親には一切影響しない(親子の独立性)。
- ターミナルを閉じれば、その場での変更(
exportやabc=1)は全て消え、次回起動時は再び~/.bashrcから始まる。
- ターミナルを閉じれば、その場での変更(
4. 実行パターンの比較(abc=1 を渡す方法)
| 実行コマンド | 親シェルの状態 | 子シェルでの値 | 終了後の親の状態 |
abc=1 → bash | シェル変数 | (存在しない) | abc=1 (シェル変数) |
export abc=1 → bash | 環境変数 | 1 | 1 (環境変数のまま) |
env abc=1 bash | (変化なし) | 1 | (存在しない) |
結論:シェルの鉄則
- **「今だけ・自分だけ」**なら、単なる代入(
abc=1)。 - **「この後も・子分たちにも」**なら、
export。 - **「この一回だけ・環境を汚さず」**なら、
env。 - **「ずっと(永続的)」**なら、
~/.bashrcに書き込む。
1. 環境変数とシェル変数の仕分け
リストにある変数を、一般的な Linux(Bash)の標準設定に基づいて分類します。
| 変数名 | 分類 | 役割と理由 |
| HOME | 環境変数 | ユーザーのホームディレクトリ。あらゆるアプリが参照するため。 |
| USER / LOGNAME | 環境変数 | ログインユーザー名。 |
| PATH | 環境変数 | コマンドを探す場所。全子プロセスがこれを知らないと動けないため。 |
| LANG | 環境変数 | 言語・文字コード設定。アプリの表示言語を決めるため。 |
| TERM | 環境変数 | 端末の種類(xtermなど)。画面描画アプリが参照するため。 |
| PWD | 環境変数 | 現在のディレクトリ。 |
| HOSTNAME | 環境変数 | マシンの名前。 |
| EDITOR | 環境変数 | 標準のエディタ。git commit などが起動する際に参照するため。 |
| PS1 / PS2 | シェル変数 | プロンプト(入力待ち行)の見た目。 シェル自身の表示用なので、子プロセス(lsやpythonなど)には不要。 |
| HISTSIZE | シェル変数 | メモリ上の履歴数。 現在のシェルが管理するものなので、通常は引き継がない。 |
| HISTFILESIZE | シェル変数 | ファイルに保存する履歴数。 同上。 |
| HISTFILE | シェル変数 | 履歴ファイルの保存先。 同上。 |