4. UNIX/Linuxコマンド
4.1. シェル
4.1.1. シェルとシェルの種類
シェルとは
シェルはコマンドを解釈して実行するプログラムのこと。
利用可能なシェルは/etc/shells
で確認可能。
シェルの種類
シェル | 説明 |
---|---|
sh | UNIX V7から標準添付されているUNIXの基本的なシェル |
csh | C言語スタイルの構文を持ったUNIX系OSの代表的なシェル |
tcsh | Cシェルの派生版の中で特にユーザーインターフェイス部分を中心に拡張されたシェル |
ksh | Bシェルと上位互換を保ちながら、Cシェルなどから優れた機能を取り込んだシェル |
bash | UNIX系のシェルの1つでLinuxで用いられる標準のシェル |
ログインシェル
ログインシェルはシステムへのログイン直後に起動するシェルのことで、これはユーザごとに定義が可能。
ユーザごとのログインシェルは/etc/passwd
ファイルに記述される。
なお現在ログインしている自身が使用しているシェルはps $$
コマンドで確認できる。
4.1.2. シェルの基本操作と設定
シェルのキーボード操作
入力キー | 説明 |
---|---|
Tabキー | コマンドやディレクトリ名などを補完する |
Ctrl + C | 実行処理を中断する |
Ctrl + Z | 実行処理を一時停止する |
Ctrl + A | 行の先頭へカーソルを移動する |
Ctrl + D | カーソル上にある文字列を1文字削除する |
Ctrl + E | 行の最後へカーソルを移動する |
Ctrl + H | カーソルの左側の文字列を1文字削除する |
Ctrl + L | 画面をクリアして、現在の行だけを再表示する |
Ctrl + Q | 画面への出力を再開する |
Ctrl + S | 画面への出力を停止する |
ディレクトリの指定
メタキャラクタ | 説明 |
---|---|
~ | ホーム |
. | カレントディレクトリ |
.. | 1つ上のディレクトリ |
4.1.3. シェル変数と環境変数
Linuxが扱う変数にはシェル変数と環境変数の2種類がある。
シェル変数
シェル変数は現在実行しているシェルの中だけで有効な変数のこと。 特徴は以下の通り。
- シェルを終了すると失われる
- 別のシェルから参照することはできない
利用方法はecho $変数名
で行い、例は以下の通り。
なおunset 変数名
で定義した変数の削除が可能。
環境変数
環境変数は現在実行しているシェルとそのシェルで実行されたプログラムにも引き継がれる変数のこと。
利用方法はexport 変数名
で行い、例は以下の通り。
また主な環境変数は以下の通り。
環境変数 | 説明 |
---|---|
PWD | カレントディレクトリ |
HOSTNAME | ホスト名 |
USER | 現在のユーザー |
LOGNAME | ログインシェルのユーザー名 |
HISTSIZE | コマンド履歴の最大値 |
HISTFILE | コマンド履歴を格納するファイル |
HISTFILESIZE | HISTFILEに保存する履歴数 |
LANG | ロケール |
HOME | カレントユーザーのホームディレクトリ |
またPATHは既存のパスの後ろに;区切りで追加して以下のように通す。
シェル変数/環境変数の確認
シェル変数と環境変数を確認するためにはset
コマンドを使用する。
また設定済みの環境変数を一覧表示するためには、env
コマンドやprintenv
コマンドを使用する。
4.1.4. コマンドの実行と引用句
コマンドの区切り文字との実行
コマンドの区切り文字でコマンドを挟むと以下のような効果がある。
区切り文字 | 説明 |
---|---|
; | コマンドを同時に実行 |
&& | 最初に実行したコマンドが正常に終了できた場合のみ次コマンドを実行 |
|| | 最初に正常にコマンド終了できなかった場合のみ次コマンドを実行 |
コマンドに引用句を使う
引用句 | 説明 |
---|---|
'' | 常に文字列として扱う |
"" | 変数展開する |
~~ | コマンド展開する |
`` | コマンドを実行した結果を展開する |
4.1.5. コマンド履歴の確認とマニュアルの確認
historyコマンド
history
コマンドはコマンド履歴を確認するコマンド。
コマンド | 説明 |
---|---|
history 数字 | 数自分だけ過去の履歴を表示 |
!数字 | 数字のコマンドを実行 |
!! | 直前のコマンドを実行 |
manコマンド
man
コマンドはオンラインマニュアルページを閲覧できるコマンド。
マニュアルを構成するファイルは/usr/share/man
にある。
オプション | 説明 |
---|---|
-a | 全てのセクションのマニュアルを表示 |
-f | 指定された完全一致のキーワードを含むドキュメントを表示 |
-k | 指定された部分一致のキーワードを含むドキュメントを表示 |
-w | マニュアルの置かれているディレクトリの表示 |
4.2. ファイル操作の基本コマンド
4.2.1. 基本的なコマンド
lsコマンド
カレントディレクトリを基準にそこに存在するファイルを表示するコマンド。
オプション | 説明 |
---|---|
-A | すべて表示 |
-l | 詳細表示 |
-d | ディレクトリ自身の表示 |
-i | inode番号表示 |
-t | 日付順 |
-h | ファイルサイズ表示 |
cpコマンド
ファイルをコピー/上書きするコマンド。
オプション | 説明 |
---|---|
-f | 強制上書き |
-i | 対話モードで上書き確認 |
-p | アクセス権/所有者などの保護 |
-r | 再帰的にコピーする(ディレクトリコピーには必須) |
mvコマンド
ファイルを移動させるコマンド。
mkdirコマンド
ディレクトリを作成するコマンド。
オプション | 説明 |
---|---|
-m | 指定したアクセス権でディレクトリ作成 |
-p | 親ディレクトリも作る |
rmコマンド
ファイルやディレクトリを削除するコマンド。
オプション | 説明 |
---|---|
-f | 強制的に削除 |
-r | 再帰的に削除 |
-i | 削除に確認をする |
rmdirコマンド
空のディレクトリを削除するコマンド。
touchコマンド
タイムスタンプの更新やファイルの作成を行うコマンド。
オプション | 説明 |
---|---|
-a | アクセス時間の更新 |
-m | 更新時間のみの更新 |
-t | タイムスタンプの指定 |
fileコマンド
ファイルがテキストかバイナリか文字コードが何か確認するコマンド。
typeコマンド
コマンドの実態を調査するコマンド。
whichコマンド
コマンドのフルパス(どこに存在するか)を教えるコマンド。
4.2.2. メタキャラクタ(正規表現)
メタキャラクタを用いることで絞り込みなどが行える。
メタキャラクタ | 説明 |
---|---|
* | 0文字以上の任意の文字列 |
? | 任意の1文字 |
[] | 括弧内で列挙された文字のいずれか一文字 |
[!] | 括弧内で列挙された文字にマッチしない任意の一文字 |
{} | フレーズ展開 |
4.2.3. ファイル内容の確認/操作を行うコマンド
catコマンド
ファイルの内容を表示するコマンド。
-n
オプションで各行ごとに行番号を付加する。
headコマンド
ファイルの先頭n行を表示するコマンド。
オプション | 説明 |
---|---|
-n | 先頭から表示する行数の指定 |
-行数 | 先頭から表示する行数の指定 |
-c バイト数 | 先頭から表示するバイト数の指定 |
tailコマンド
ファイルの末尾n行を表示するコマンド
オプション | 説明 |
---|---|
-n | 末尾から表示する行数の指定 |
-行数 | 末尾から表示する行数の指定 |
-c バイト数 | 末尾から表示するバイト数の指定 |
-f | ファイルの末尾に追加された行をリアルタイムで表示 |
cutコマンド
テキストファイルの各行から指定した部分の文字列を取り出して表示するコマンド。
オプション | 説明 |
---|---|
-c 文字数 | 指定したテキストファイルから切り出す文字位置を指定 |
-d 区切り文字 | フィールドの区切り文字を指定 |
-f フィールド | 取り出すフィールドの指定 |
nlコマンド
文字列の行だけでなくヘッダ、本文、フッタの部分に分けて行番号を付けるコマンド。
オプション | 説明 |
---|---|
-b パラメータ | 本文に行番号を付加 |
-h パラメータ | ヘッダに行番号を付加 |
-f パラメータ | フッタに行番号を付加 |
パラメータ | 説明 |
---|---|
a | 全ての行に番号をつける |
t | 空白行には番号をつけない |
n | 行番号の付加をつけない |
odコマンド
バイナリファイルの内容をASCII文字、8進数、16進数のいずれかで表示するコマンド。
オプション | 説明 |
---|---|
-j | バイナリファイルの bytes の場所から表示を開始 |
-t | 表示タイプの指定(以下のようなタイプを指定可能) |
タイプ指定文字 | 説明 |
---|---|
a | 文字の名前 |
c | ASCII文字かバックスラッシュつきのエスケープ文字 |
d | 符号付きの10進数 |
f | 浮動小数点数 |
o | 8 進数 |
u | 符号なしの10進数 |
x | 16 進数 |
joinコマンド
2つのファイルを読み込み、共通のフィールドを持つ行の連結を行うコマンド。
-j 数字
オプションで連結フィールを指定できる。
pasteコマンド
1つ以上のファイルを読み込み、一致する行を区切り文字を使用して連結するコマンド。
-d 区切り文字
オプションで区切り文字の指定が可能。
trコマンド
文字列の変換、削除を行うコマンド。
オプション | 説明 |
---|---|
-d | 「文字列1」で合致した文字列の削除 |
-s | 連続するパターン文字列を1文字として処理 |
文字列の指定方法 | 説明 |
---|---|
[ :alpha:] | 英字 |
[ :lower:] | 英小文字 |
[ :upper:] | 英大文字 |
[ :digit:] | 数字 |
[ :alnum:] | 英数字 |
[ :space:] | スペース |
sortコマンド
行単位でファイルの内容をソートするコマンド。
オプション | 説明 |
---|---|
-b | 行頭の空白を無視 |
-f | 大文字小文字の区別を無視 |
-r | 降順にソート |
-n | 数字を文字ではなく数字として処理 |
uniqコマンド
並び替え済みのデータから重複行を削除して、1行にまとめて表示するコマンド。 重複行を削除するために、ファイルの内容をsortコマンドなどにより並び替えてから実行することが多い。
オプション | 説明 |
---|---|
-d | 重複している行のみ出力 |
-u | 前後の行と異なる行を表示 |
splitコマンド
指定サイズでファイルを分割するコマンド。
オプション | 説明 |
---|---|
-l 行数 | 指定した行数でのファイル分割。-l を省力することも可能。 |
-b バイト | 指定したバイト数でのファイル分割。 |
prコマンド
印刷前に使用されるファイルの書式を整えるコマンド。
オプション | 説明 |
---|---|
+開始ページ [:終了ページ] | 開始ページや終了ページの指定 |
-h ヘッダ文字列 | ヘッダに表示されるファイル名を、指定した文字に変更 |
-l ページ長 | ヘッダとフッタを含めたページの長さを行数で指定 |
fmtコマンド
テキストファイルを決められた桁に整形するコマンド。
-w 文字幅
オプションで位置行幅を指定可能。
expand/unexpandコマンド
expandコマンドはテキストファイルの中にあるタブをスペースに変換するコマンド。 unexpandコマンドはスペースをタブに変換するコマンド
expandのオプション | 説明 |
---|---|
-i | 行頭のタブのみスペースへ変換。 |
-t 数値 | 置き換える桁数の指定。タブ幅のデフォルトでは8桁 |
unexpandのオプション | 説明 |
---|---|
-a | 行頭以外のスペースも変換。 |
-t 数値 | 置き換える桁数の指定。デフォルトでは8桁。 |
wcコマンド
指定したファイルの行数、単語数、文字数を表示するコマンド。
オプション | 説明 |
---|---|
-c | 文字数だけの表示 |
-l | 行数だけの表示 |
-w | 単語数だけの表示 |
4.3. パイプとリダイレクト
4.3.1. 標準入出力
Linuxのコマンドは、標準入力、標準出力、標準エラー出力を処理するように作成されてる。 ストリームはデータの入出力に伴うデータの流れを指し、ディスプレイ出力、キーボード入力等すべてがこれに抽象化されている。
ストリームとしての基本的なインタフェースは以下の通り。
番号(ファイルディスクリプタ) | 入出力名 | デフォルト |
---|---|---|
0 | 標準入力 | キーボード |
1 | 標準出力 | 画面(端末) |
2 | 標準エラー出力 | 画面(端末) |
4.3.2. パイプ
パイプ\|
は標準出力を標準入力につなぐやつもののこと。
使用例は以下の通り。
書式 | 説明 |
---|---|
コマンド1 | コマンド2 |
コマンド1 2>&1 | コマンド2 |
コマンド1 | tee ファイル |
teeコマンド
teeコマンドは標準入力から読み込んでファイルに書き込み、次のコマンドへ実行結果を引き渡せられるもの。 使用例は以下の通り。
オプション-a
でファイルに追記する。
4.3.3. リダイレクト
リダイレクトを使用することでコマンドの実行結果を画面上ではなくファイルに保存することが可能。
リダイレクト | 説明 |
---|---|
> | 出力のリダイレクト |
>> | 出力をファイルに追記 |
< | 入力のリダイレクト |
<< | 入力終端文字の指定 |
2> | エラー出力をファイルに設定し、コマンドを実行 |
2>&1 | 標準出力とエラー出力をファイルに設定し、コマンドを実行 |
4.3.4. ヒアドキュメント
ヒアドキュメントは<<EOF
で始まる特定の文字列(この例ではEOF)が現れるまで標準入力から入力を受け付けるもの。