tanish-kr's learning log

Learning output log

LPIC

3. GNU/UNIXコマンド

3.1 コマンドライン操作

3.1.1 シェル

  • sh(Bourneシェル) <- Unix標準
  • bash(Bourne Agen Shell) <- Linux標準
  • csh(C Shell)
  • tcsh <- Linux標準 C shell
  • ksh(Korn Shell)
  • zsh

ログインシェルは/etc/passwordで変更可能

3.1.2 シェルの基本動作と設定

shellによっては変更可能。bashのデフォルトはEmacsキーバインド割り当て

基本操作

操作 説明
<Tab> コマンドやディレクトリ名の補完
<Ctr>+a 行頭へカーソルを移動
<Ctr>+e 行末へカーソルを移動
<Ctr>+d カーソル部分を1文字削除、ログアウトする
<Ctr>+h カーソルの左1文字削除(Backspaceと同等)
<Ctr>+l 画面をクリアしてカレント行を再表示
<Ctr>+c 処理を中断
<Ctr>+s 画面への出力を停止
<Ctr>+q 画面への出力を再開
<Ctr>+z 処理を一時停止(サスペンド)

メタキャラ

メタキャラクタ 説明
~ ホームディレクトリ
. カレントディレクトリ
.. 1つ上のディレクトリ

3.1.3 シェル変数と環境変数

  • シェル変数 : 有効範囲はその変数を定義したシェル・プロセス
  • 環境変数 : 有効範囲はその変数を定義したシェル上、そのシェルで実行されるプログラム内にも引き継がれる。exportコマンドで設定する

主な環境変数

環境変数 説明
PATH コマンドやプログラムを検索するディレクトリリスト
PWD カレントディレクトリ
HOSTNAME ホスト名
USER 現在のユーザ
LANG ロケール(言語処理方式)
HOME カレントユーザのホームディレクトリ
LOGNAME ログインシェルのユーザ名
PS1 プロンプトの表示名
PS2 複数行に渡る入力時のプロンプト
HISTSIZE コマンド履歴の最大値
HISTFILE コマンド履歴を格納するファイル
HISTFILESIZE HISTFILEに保存する履歴数
TERM 端末の種類
  • 変数の定義
$ HOGE="hoge"
  • 指定した文字列や変数の出力
$ echo $HOGE
  • 変数の削除
$ unset HOGE
  • 環境変数一覧
$ printenv
$ env
  • セット済みの変数一覧
$ set
  • 環境変数の設定
$ export VAR=lpic

3.1.4 環境変数PATH

  • 内部コマンド : シェル事態に組み込まれているもの
  • 外部コマンド : 独立したプログラムとして存在するもの

PATHの設定

PATH=$PATH=:/opt/bin

PATHの先頭から順にディレクトリを検索していく。同一のプログラムがある場合は順番に気をつける。$PATHを定義し忘れると、デフォルトのPATHが引き継がれないので注意する。

3.1.5 コマンドの実行

  • ; : 正常に終了しなくても次のコマンドを実行
  • && : 正常に終了した場合のみ次のコマンドを実行
  • || : 正常に終了しなかった場合のみ次のコマンドを実行
  • ( cmd1 ; cmd2 ) : コマンド1とコマンド2をひとまとまりのコマンドグループとして実行
  • | cmd1 ; cmd2 | : 現在のシェル内でコマンド1とコマンド2を実行

3.1.6 引用符

  • '(シングルクォーテーション) : 文字列
  • "(ダブルクォーテーション) : 文字列、変数展開可能
  • \` (バッククォーテーション) : コマンド実行結果が展開される($(cmd))でも実行結果が展開される

3.1.7 コマンド履歴

  • HISTSIZEHISTFILESIZEで履歴に残す数を設定できる

  • bashの履歴機能

コマンド 内容
+ p(↑) 1つ前のコマンドを表示する
+ n(↓) 1つ次のコマンドを表示する
!n 履歴番号を指定してコマンド実行
!文字列 実行したコマンドの中で、指定した文字列から始まるコマンドを実行
!?文字列 実行したコマンドの中で、指定した文字列を含むコマンドを実行

3.1.8 マニュアルの参照

manコマンドの主なオプション

オプション 説明
-a 全てのセクションのマニュアルを表示する
-f 指定されたキーワード(完全一致)を含むドキュメントを表示する
-k 指定されたキーワード(部分一致)を含むドキュメントを表示する
-w マニュアルの置かれているディレクトリを表示する

セクション : ドキュメントの分類、章

セクション 説明
1 ユーザーコマンド
2 システムコール(カーネルの機能を使うための関数)
3 ライブラリ(C言語の関数)
4 デバイスファイル
5 設定ファイル
6 ゲーム
7 その他
8 システム管理コマンド
9 Linux独自のカーネル用ドキュメント

指定したキーワードと完全にマッチした一覧を表示

$ man -f
$ whatis

指定したキーワードがマニュアルタイトルもしくはNAME欄に含まれるマニュアルの一覧を表示

$ man -k
$ apropos

whatisデータベース

マニュアル検索用のデータベース makewhatisコマンドで作成

3.1.9 ファイル操作コマンド

lsコマンド

ディレクトリ内のファイル、ファイル属性を表示する

オプション 説明
-a 隠しファイル(.)も含めて全て表示する
-A カレントディレクトリ(.)と親ディレクトリ(..)を覗いた全てを表示する
-d ディレクトリ自身の情報も表示する
-F ファイルの種類も表示する(ディレクトリは/, 実行ファイルは*, シンボリックリンクは@がそれぞれ末尾につく
-i iノード番号を表示する
-l ファイルの詳細情報を表示する
-t 日付順に表示する
-h 単位付き(容量)で表示する

cpコマンド

ファイルやディレクトリのコピー

オプション 説明
-f コピー先に同名のファイルが有れば上書きする
-i コピー先に同名のファイルが有れば上書きするか確認する
-p コピー元のファイル属性を保持したままコピーする
-r, -R ディレクトリ内を再帰的にコピーする
-d シンボリックリンクをシンボリックリンクとしてコピーする
-a 出来る限り元のファイルの構成と属性をコピー先でも保持する(-dpRと同じ)

mvコマンド

ファイルやディレクトリを移動する。ファイル名の変更にも用いられる

オプション 説明
-f 移動先に同名のファイルが有れば上書きする
-i 移動先に同名のファイルが有れば上書きするか確認する

mkdirコマンド

空のディレクトリを作成する

オプション 説明
-m 指定したアクセス権でディレクトリを作成する
-p 必要なら親ディレクトリも同時に作成する

rmコマンド

ファイルやディレクトリを削除する

オプション 説明
-f ユーザへの確認なしに削除する
-i 削除する前にユーザに確認する
-r, -R サブディレクトリも含め、再帰的にディレクトリを削除する

rmdirコマンド

空のディレクトリを削除する

オプション 説明
-p 複数階層の空ディレクトリを削除する

touchコマンド

ファイルのタイムスタンプを、現在時刻か、指定した日時に変更する

オプション 説明
-t タイムスタンプをCCYYMMDDhhmm.SSに変更する
デフォルトは現在時刻
-a アクセス時刻だけを変更する
-m 修正時刻だけを変更する

fileコマンド

ファイルの種別を表示する

3.1.10 メタキャラクタの利用

ファイル名のパターンを表す特殊な記号

メタキャラクタ 説明
* 0文字以上の文字または文字列にマッチする
? 任意の1文字にマッチする
[] []内に列挙されている文字のいずれか1文字にマッチする
|| ,で句切られた文字列にマッチする


3.2 パイプとリダイレクト

3.2.1 標準入出力

番号 入出力名 デフォルト
0 標準入力 キーボード
1 標準出力 画面(端末)
2 標準エラー出力 画面(端末)

3.2.2 パイプ

コマンドやプログラムの出力結果を、別のコマンドやプログラムの入力に渡す事ができる。|でコマンドを組み合わせる

teeコマンド

コマンドの実行結果をファイルに保存するとともに、出力も行う

オプション 説明
-a ファイルに追記する

3.2.3 リダイレクト

コマンド結果をファイルに保存

例) lsコマンドの実行結果をファイルに保存

$ ls -la > file_list.txt

例) lsコマンドの実行結果をファイルに追記

$ ls -la >> file_list.txt

ヒアドキュメント

$ cat > sample.txt << EOF
LPI
Linux
EOF

リダイレクトとパイプ

書式 説明
コマンド > ファイル コマンドの標準出力をファイルに書き込む
コマンド < ファイル ファイルの内容をコマンドの標準入力に送る
コマンド » ファイル コマンドの標準出力をファイルに追記する
コマンド 2> ファイル ファイルに標準エラー出力を書き込む
コマンド 2» ファイル ファイルに標準エラー出力を追記する
コマンド > ファイル 2>&1 ファイルに標準出力と標準エラー出力を書き込む
コマンド » ファイルに 2>&1 ファイルに標準出力と標準エラー出力を追記する
コマンド « 終了文字 終了文字が現れるまで標準入力に送る(ヒアドキュメント)
コマンド1 | コマンド2 コマンド1の標準出力をコマンド2の標準入力へ渡す
コマンド1 2>&1 | コマンド2 コマンド1の標準出力と標準エラー出力をコマンド2の標準入力へ渡す
コマンド1 | tee ファイル | コマンド2 コマンド1の標準出力をコマンド2の標準入力に渡すと共にファイルに書き込む
コマンド &> ファイル 標準出力と標準エラー出力を同じファイルに書き込む
  • コマンドが出力するメッセージを表示しない
$ cmd > /dev/null 2>&1


3.3 テキスト処理フィルタ

catコマンド

ファイルの内容を表示する

オプション 説明
-n 行番号を表示する

nlコマンド

テキストファイルの一部または全部を行番号付きで表示する。ヘッダ、本文、フッタの部分に分けて行番号を付加する事もできる

オプション 説明
-b 指定した形式で本文に行番号を付加する
-h 指定した形式でヘッダに行番号を付加する
-f 指定した形式でフッタに行番号を付加する
形式 説明
a 全ての行
t 空白以外の行
n 行番号の付加を中止

odコマンド

バイナリファイルを8進数や16進数で表示する。デフォルトは8進数。

オプション 説明
-t 出力するフォーマットを指定する
出力タイプ 説明
c ASCII文字
o 8進数
x 16進数

headコマンド

ファイルの先頭部分を表示する。デフォルトは10行目まで

オプション 説明
-n 行数 先頭から指定した行数分だけ表示する
-c バイト数 先頭から出力するバイト数を指定する

tailコマンド

ファイルの末尾部分を表示する。デフォルトで10行。-fオプションでリアルタイムで出力し続けるので、ログ監視等でよく使う

オプション 説明
-n 行数 末尾から指定した行数分だけ表示する
-c バイト数 末尾から出力するバイト数を指定する
-f ファイルの末尾に追加された行を表示し続ける

cutコマンド

ファイルの各行から指定したフィールドを取り出す

オプション 説明
-c 文字数 取り出す文字位置を指定する
-d 区切り文字 フィールドの区切り文字を指定する(デフォルトはタブ)
-f フィールド 取り出すフィールドを指定する

joinコマンド

2つのファイルを読み込んで、共通のフィールドを持つ行を連結する

オプション 説明
-j フィールド 連結するフィールドを指定する

pasteコマンド

1つ以上のファイルを読み込んで、それぞれで一致する行を水平方向に連結する

オプション 説明
-d 区切り文字 フィールドの区切り文字を指定する(デフォルトはタブ)

trコマンド

標準入力から読み込まれた文字列を変換したり、削除する

オプション 説明
-d 文字列1でマッチした文字列を削除する
-s 連続するパターン文字列を1文字として処理する
クラス 説明
[:alpha:] 英字
[:lower:] 英小文字
[:upper:] 英大文字
[:digit:] 数字
[:alnum:] 英数字
[:space:] スペース

sortコマンド

行単位でファイルの内容をソートする

オプション 説明
-b 行頭の空白は無視する
-f 大文字小文字の区別を無視する
-r 降順にソートする
-n 数字を文字でなく数値として処理する

splitコマンド

指定されたサイズでファイルを分割する

オプション 説明
- 行数 入力ファイルを指定された行ごとに分割する

uniqコマンド

重複行を調べて、重複行を1行にまとめて表示する。入力するテキストストリームはソートしてある必要がある

オプション 説明
-d 重複している行のみ出力する
-u 重複していない行のみ出力する

prコマンド

ファイルの書式を整える。印刷する前の整形によく利用される

オプション 説明
+ 開始ページ[:終了ページ] 開始ページや終了ページを指定する
-h ヘッダ文字列 ヘッダに表示されるファイル名を指定した文字に変更する
-l ページ長 ヘッダとフッタを含めたページの長さを行数で指定する

fmtコマンド

テキストを決められた桁に整形する

オプション 説明
-w 1行の幅を設定する

expandコマンド

テキストファイルにあるタブをスペースに変更する

オプション 説明
-i 行頭のタブのみ変更する
-t タブ幅 タブ幅を設定する(デフォルトは8桁)

unexpandコマンド

行頭に有る連続した空白をタブに変換する

オプション 説明
-a 行頭以外の空白も変換する
-t タブ幅 タブ幅を指定する(デフォルトは8桁)

wcコマンド

ファイル行数、英単語、文字数を表示する

オプション 説明
-c 文字数(バイト数)を表示する
-l 行数を表示する
-w 単語数を表示する

xargsコマンド

標準入力から受け取った文字列を引数に指定して、与えられたコマンドを実行する。xargsコマンドの利点は、引数の数が多すぎた場合でも処理が出来るということである


3.4 正規表現を使ったテキスト検索

3.4.1 正規表現

記号 説明
. 任意の1文字
* 直前の文字の0回以上の繰り返し
[] []内の文字のいずれか一文字 - : 範囲を指定, ^ : 先頭にある時は~以外を表す
^ 行頭
$ 行末
\ 次に来る文字をメタキャラクタではなく通常の文字として処理する
[a-zA-Z] 英字
[0-9] 数字

3.4.2 grepコマンド

ファイルやテキストストリームを正規表現で検索する

オプション 説明
-c パターンがマッチした行の行数だけを表示する
-f 検索パターンをファイルから読み込む
-i 大文字小文字を区別しない
-n 検索結果に行番号を表示する
-v パターンがマッチしない行を表示する
-E 拡張正規表現を使用する

egrep

拡張正規表現を使用する

メタキャラクタ 説明  
+ 直前の文字の1回以上の繰り返し  
? 直前の文字の0回もしくは1回の繰り返し  
    左右いずれかの記述にマッチする

fgrep

検索パターンに正規表現を使用しない

3.4.3 sedコマンド

テキストストリームに対して編集を行う

オプション 説明
-f ファイル コマンドが書かれたスクリプトを指定する
-e コマンド 複数のコマンドを指定する

sed内で使用できる主なコマンド

コマンド 説明
d マッチした行を削除する
s パターンに基づいて置換する。gスイッチを使うと、マッチ箇所すべてを置換する
y 文字を置換する


3.5 viエディタ

3.5.1 viエディタの基本

viの入力モード

入力モードでEscキーを押すと、コマンドモードに戻る

コマンド 説明
i カーソルの前にテキストを入力する
a カーソルの後にテキストを入力する
I 行頭の最初の文字にカーソルを移動し、その直前にテキストを入力する
A 行末にカーソルを移動し、その直後にテキストを入力する
o カレント行の下に空行を挿入し、その行でテキストを入力する
O カレント行の上に空行を挿入し、その行でテキストを入力する

カーソル移動

コマンド 説明
h 1文字左に移動する(←キー)
l 1文字右に移動する(→キー)
k 1文字上に移動する(↑キー)
j 1文字下に移動する(↓キー)
0 行頭へ移動する
$ 行末へ移動する
H 画面の一番上の行頭へ移動する
L 画面の一番下の行頭へ移動する
gg ファイルの先頭行に移動する
G ファイルの最終行に移動する
nG ファイルのn行目へ移動する
:n ファイルのn行目へ移動する

viの終了、ファイル保存、シェルコマンドの実行

コマンド 説明
:q ファイルを保存せずに終了する(確認メッセージが表示される)
:q! 編集中の内容を保存せずに終了する
:wq 編集中の内容を保存して終了する
ZZ 編集中の内容を保存して終了する
:w 編集中の内容でファイルを上書き保存する
:e! 最後に保存した内容に復帰する
:r ファイル名 ファイルの内容をカレント行移行に読み込む
:! コマンド viを終了せずにシェルコマンドを実行する
:r! コマンド シェルコマンド実行結果を挿入する

viの編集コマンド

コマンド 説明
x カーソル位置の文字を削除する
X カーソル位置の手前の文字を削除する
dd カレント行を削除する
dw カーソル位置から次の単語までを削除する
yy カレント業をバッファにコピーする
p カレント行の下にバッファの内容を貼り付ける
P カレント行の上にバッファのの内容を貼り付ける
r カーソル位置の1文字を置換する

viの検索コマンド

コマンド 説明
/パターン カーソル位置から後方に向かって指定したパターンを検索する
?パターン カーソル位置から前方に向かって指定したパターンを検索する
n 次を検索する
N 次を検索する(逆方向)
:noh 候補のハイライトを解除する
:%s/A/B/ 最初の見つかった文字列を置換する
:%s/A/B/g 全ての文字列を置換する

viの設定変更

:setで設定する