4.UNIX/Linuxコマンド

Linuxの操作をするためのUNIX/Linuxコマンドに関する説明

4.1. シェル

4.1.1. シェルとシェルの種類

シェルとは

シェルはコマンドを解釈して実行するプログラムのこと。 利用可能なシェルは/etc/shellsで確認可能。

シェルの種類

シェル説明
shUNIX V7から標準添付されているUNIXの基本的なシェル
cshC言語スタイルの構文を持ったUNIX系OSの代表的なシェル
tcshCシェルの派生版の中で特にユーザーインターフェイス部分を中心に拡張されたシェル
kshBシェルと上位互換を保ちながら、Cシェルなどから優れた機能を取り込んだシェル
bashUNIX系のシェルの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 $変数名で行い、例は以下の通り。

echo $hoge
hoge=123

なおunset 変数名で定義した変数の削除が可能。

環境変数

環境変数は現在実行しているシェルとそのシェルで実行されたプログラムにも引き継がれる変数のこと。

利用方法はexport 変数名で行い、例は以下の通り。

hoge=123
export hoge

また主な環境変数は以下の通り。

環境変数説明
PWDカレントディレクトリ
HOSTNAMEホスト名
USER現在のユーザー
LOGNAMEログインシェルのユーザー名
HISTSIZEコマンド履歴の最大値
HISTFILEコマンド履歴を格納するファイル
HISTFILESIZEHISTFILEに保存する履歴数
LANGロケール
HOMEカレントユーザーのホームディレクトリ

またPATHは既存のパスの後ろに;区切りで追加して以下のように通す。

export PATH=$PATH:/additional/path

シェル変数/環境変数の確認

シェル変数と環境変数を確認するためにはsetコマンドを使用する。 また設定済みの環境変数を一覧表示するためには、envコマンドやprintenvコマンドを使用する。

4.1.4. コマンドの実行と引用句

コマンドの区切り文字との実行

コマンドの区切り文字でコマンドを挟むと以下のような効果がある。

<コマンド1> <区切り文字> <コマンド2>
区切り文字説明
;コマンドを同時に実行
&&最初に実行したコマンドが正常に終了できた場合のみ次コマンドを実行
||最初に正常にコマンド終了できなかった場合のみ次コマンドを実行
コマンドに引用句を使う
引用句説明
''常に文字列として扱う
""変数展開する
~~コマンド展開する
``コマンドを実行した結果を展開する

4.1.5. コマンド履歴の確認とマニュアルの確認

historyコマンド

historyコマンドはコマンド履歴を確認するコマンド

コマンド説明
history 数字数自分だけ過去の履歴を表示
!数字数字のコマンドを実行
!!直前のコマンドを実行

manコマンド

manコマンドはオンラインマニュアルページを閲覧できるコマンド。 マニュアルを構成するファイルは/usr/share/manにある。

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

4.2. ファイル操作の基本コマンド

4.2.1. 基本的なコマンド

lsコマンド

カレントディレクトリを基準にそこに存在するファイルを表示するコマンド。

ls <オプション>
オプション説明
-Aすべて表示
-l詳細表示
-dディレクトリ自身の表示
-iinode番号表示
-t日付順
-hファイルサイズ表示

cpコマンド

ファイルをコピー/上書きするコマンド。

cp <オプション> <移動元> <移動先>
オプション説明
-f強制上書き
-i対話モードで上書き確認
-pアクセス権/所有者などの保護
-r再帰的にコピーする(ディレクトリコピーには必須)

mvコマンド

ファイルを移動させるコマンド。

mv <オプション> <移動元> <移動先>

mkdirコマンド

ディレクトリを作成するコマンド。

mkdir <ディレクトリ名>
オプション説明
-m指定したアクセス権でディレクトリ作成
-p親ディレクトリも作る

rmコマンド

ファイルやディレクトリを削除するコマンド。

rm -rf <ファイル名>
オプション説明
-f強制的に削除
-r再帰的に削除
-i削除に確認をする

rmdirコマンド

空のディレクトリを削除するコマンド。

rmdir <ディレクトリ名>

touchコマンド

タイムスタンプの更新やファイルの作成を行うコマンド。

touch <ファイル名>
オプション説明
-aアクセス時間の更新
-m更新時間のみの更新
-tタイムスタンプの指定

fileコマンド

ファイルがテキストかバイナリか文字コードが何か確認するコマンド。

file <ファイル名>

typeコマンド

コマンドの実態を調査するコマンド。

type <コマンド>

whichコマンド

コマンドのフルパス(どこに存在するか)を教えるコマンド。

which <コマンド>

4.2.2. メタキャラクタ(正規表現)

メタキャラクタを用いることで絞り込みなどが行える。

メタキャラクタ説明
*0文字以上の任意の文字列
?任意の1文字
[]括弧内で列挙された文字のいずれか一文字
[!]括弧内で列挙された文字にマッチしない任意の一文字
{}フレーズ展開

4.2.3. ファイル内容の確認/操作を行うコマンド

catコマンド

ファイルの内容を表示するコマンド。 -nオプションで各行ごとに行番号を付加する。

cat <ファイル名>

headコマンド

ファイルの先頭n行を表示するコマンド。

head <オプション> <ファイル名>
オプション説明
-n先頭から表示する行数の指定
-行数先頭から表示する行数の指定
-c バイト数先頭から表示するバイト数の指定

tailコマンド

ファイルの末尾n行を表示するコマンド

tail <オプション> <ファイル名>
オプション説明
-n末尾から表示する行数の指定
-行数末尾から表示する行数の指定
-c バイト数末尾から表示するバイト数の指定
-fファイルの末尾に追加された行をリアルタイムで表示

cutコマンド

テキストファイルの各行から指定した部分の文字列を取り出して表示するコマンド。

cut <オプション> <ファイル名>
オプション説明
-c 文字数指定したテキストファイルから切り出す文字位置を指定
-d 区切り文字フィールドの区切り文字を指定
-f フィールド取り出すフィールドの指定

nlコマンド

文字列の行だけでなくヘッダ、本文、フッタの部分に分けて行番号を付けるコマンド。

nl -b a data.txt
オプション説明
-b パラメータ本文に行番号を付加
-h パラメータヘッダに行番号を付加
-f パラメータフッタに行番号を付加
パラメータ説明
a全ての行に番号をつける
t空白行には番号をつけない
n行番号の付加をつけない

odコマンド

バイナリファイルの内容をASCII文字、8進数、16進数のいずれかで表示するコマンド。

od -t x data.txt
オプション説明
-jバイナリファイルの bytes の場所から表示を開始
-t表示タイプの指定(以下のようなタイプを指定可能)
タイプ指定文字説明
a文字の名前
cASCII文字かバックスラッシュつきのエスケープ文字
d符号付きの10進数
f浮動小数点数
o8 進数
u符号なしの10進数
x16 進数

joinコマンド

2つのファイルを読み込み、共通のフィールドを持つ行の連結を行うコマンド。 -j 数字オプションで連結フィールを指定できる。

join -j 1 data1.txt data2.txt

pasteコマンド

1つ以上のファイルを読み込み、一致する行を区切り文字を使用して連結するコマンド。 -d 区切り文字オプションで区切り文字の指定が可能。

 paste -d"," date1.txt date2.txt

trコマンド

文字列の変換、削除を行うコマンド。

tr <オプション> <文字列1> <文字列2>
オプション説明
-d「文字列1」で合致した文字列の削除
-s連続するパターン文字列を1文字として処理
文字列の指定方法説明
[ :alpha:]英字
[ :lower:]英小文字
[ :upper:]英大文字
[ :digit:]数字
[ :alnum:]英数字
[ :space:]スペース

sortコマンド

行単位でファイルの内容をソートするコマンド。

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

uniqコマンド

並び替え済みのデータから重複行を削除して、1行にまとめて表示するコマンド。 重複行を削除するために、ファイルの内容をsortコマンドなどにより並び替えてから実行することが多い。

sort data.txt | uniq
オプション説明
-d重複している行のみ出力
-u前後の行と異なる行を表示

splitコマンド

指定サイズでファイルを分割するコマンド。

split -l 10 data.txt
オプション説明
-l 行数指定した行数でのファイル分割。-l を省力することも可能。
-b バイト指定したバイト数でのファイル分割。

prコマンド

印刷前に使用されるファイルの書式を整えるコマンド。

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

fmtコマンド

テキストファイルを決められた桁に整形するコマンド。 -w 文字幅オプションで位置行幅を指定可能。

fmt <オプション> <ファイル名>

expand/unexpandコマンド

expandコマンドはテキストファイルの中にあるタブをスペースに変換するコマンド。 unexpandコマンドはスペースをタブに変換するコマンド

expand/unexpand <オプション> <ファイル名>
expandのオプション説明
-i行頭のタブのみスペースへ変換。
-t 数値置き換える桁数の指定。タブ幅のデフォルトでは8桁
unexpandのオプション説明
-a行頭以外のスペースも変換。
-t 数値置き換える桁数の指定。デフォルトでは8桁。

wcコマンド

指定したファイルの行数、単語数、文字数を表示するコマンド。

wc data.txt
オプション説明
-c文字数だけの表示
-l行数だけの表示
-w単語数だけの表示

4.3. パイプとリダイレクト

4.3.1. 標準入出力

Linuxのコマンドは、標準入力、標準出力、標準エラー出力を処理するように作成されてる。 ストリームはデータの入出力に伴うデータの流れを指し、ディスプレイ出力、キーボード入力等すべてがこれに抽象化されている。

ストリームとしての基本的なインタフェースは以下の通り。

番号(ファイルディスクリプタ)入出力名デフォルト
0標準入力キーボード
1標準出力画面(端末)
2標準エラー出力画面(端末)

4.3.2. パイプ

パイプ\|標準出力を標準入力につなぐやつもののこと。 使用例は以下の通り。

ls | wc -l 
書式説明
コマンド1コマンド2
コマンド1 2>&1コマンド2
コマンド1tee ファイル

teeコマンド

teeコマンドは標準入力から読み込んでファイルに書き込み、次のコマンドへ実行結果を引き渡せられるもの。 使用例は以下の通り。

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

ls -l | tea data.txt

4.3.3. リダイレクト

リダイレクトを使用することでコマンドの実行結果を画面上ではなくファイルに保存することが可能。

リダイレクト説明
>出力のリダイレクト
»出力をファイルに追記
<入力のリダイレクト
«入力終端文字の指定
2>エラー出力をファイルに設定し、コマンドを実行
2>&1標準出力とエラー出力をファイルに設定し、コマンドを実行

4.3.4. ヒアドキュメント

ヒアドキュメントは<<EOFで始まる特定の文字列(この例ではEOF)が現れるまで標準入力から入力を受け付けるもの。

最終更新 2025.01.19: Added ss command (683d062)