シェルスクリプトは、Linuxサーバー管理や自動化で欠かせない技術です。
その中でも頻出コマンドを 目的別 に整理しながら紹介します。
シェルスクリプトでよく使う主要コマンド一覧
| 分類 | 代表コマンド |
|---|---|
| ファイル操作 | ls cp rsync mv rm touch mkdir |
| テキスト加工 | cat echo printf grep sed awk |
| 文字列/整形 | cut tr sort uniq |
| プロセス・ジョブ | ps kill jobs wait |
| システム情報 | df du free top uname |
| ネットワーク | curl wget ping ss netstat |
| アーカイブ | tar zip/unzip gzip/gunzip |
| その他 | date xargs find test [ ] trap set |
ファイル操作
ls
lsコマンドとは?
ls コマンドは、Linuxでディレクトリ(フォルダ)内のファイルやディレクトリ一覧を表示する最も基本的なコマンドです。
ls [オプション] [パス]
| オプション | 意味 | 用途の例 |
|---|---|---|
-l | 詳細表示(パーミッション・所有者・サイズなど) | ファイル情報を確認 |
-a | 隠しファイル(ドットから始まる)も表示 | .env .git などを見たいとき |
-h | サイズを人間向け表示(KB, MB) | -l とセットで使うこと多い |
-R | 再帰的にサブディレクトリまで表示 | ディレクトリツリーを確認 |
-t | 更新日時で並び替え(新しい順) | 最近更新されたファイルを見たい |
-r | 表示順を逆順にする | 並び替えと組み合わせる |
-1 | 1行につき1ファイルで表示 | パイプ処理と相性が良い |
よく使う組み合わせ
| コマンド例 | 説明 |
|---|---|
ls -l | 詳細表示 |
ls -la または ls -al | 詳細 & 隠しファイル表示 |
ls -lh | サイズをKB/MB/GBで見やすく |
ls -alh | 最も頻出:詳細+隠し+見やすいサイズ |
ls -ltr | 古い順で並べ替え(履歴確認に便利) |
ls -lt | 新しいファイル順で確認(ログ調査に◎) |
ls -R | 階層を再帰的に表示 |
ls -l の表示内容の読み方
$ ls -l
-rw-r–r– 1 user staff 5432 Nov 10 12:40 report.txt
| 項目 | 意味 |
|---|---|
-rw-r--r-- | パーミッション(種類 + 権限) |
1 | ハードリンク数 |
user | 所有ユーザー |
staff | 所属グループ |
5432 | ファイルサイズ(バイト) |
Nov 10 12:40 | 更新日時 |
report.txt | ファイル名 |
cp
cpコマンドとは?
ファイルやディレクトリを コピー するための基本コマンド。
- コピー元 → コピー先
- 上書き、属性保持、確認表示など幅広いオプションが実務で多用される
基本構文
cp [オプション] コピー元 コピー先
よく使うオプション
| オプション | 内容 | よく使う用途 |
|---|---|---|
-i | 上書き時に確認(interactive) | 誤上書き防止 |
-f | 強制コピー(force) | 自動処理・スクリプト |
-r | ディレクトリを再帰的コピー | フォルダ丸ごとコピー |
-a | アーカイブ(-rpPなどのセット) | バックアップ・属性保持 |
-p | パーミッション・所有者・タイムスタンプ保持 | 正確なファイル複製 |
-u | 新しいファイルのみコピー | 差分コピー |
-v | 詳細を表示(verbose) | 実行結果をログに残す |
rsync
rsyncとは
rsync は 差分転送ベースのファイル同期ツール。
ローカル間/リモート間どちらでも使え、ネットワーク越しの大量データ転送・バックアップに強く、再開・帯域制限・除外ルール・ハードリンクベースの増分バックアップ等をサポートします。
基本の使い方(構文)
rsync [OPTIONS] SOURCE… DEST
リモート例(SSH経由)
rsync -avz /src/ user@host:/dest/
取得(pull)
rsync -avz user@host:/src/ /dest/
※末尾のスラッシュ / の有無が重要(/src/ は中身、/src はディレクトリ自体をコピー)。
よく使うオプション
| オプション | 要点 / 用途 |
|---|---|
-a | archive モード(-rlptgoD 等の集合)。実務で基本。 |
-v | verbose(詳しい出力) |
-z | 圧縮転送(帯域節約) |
-P | --partial --progress の短縮。進捗表示と中断ファイル保持(再開用)。 |
--delete | 宛先で存在しないファイルを削除(ミラーに使う) |
--delete-after | 転送後に削除(安全) |
--exclude / --include | 除外/包含ルール(ワイルドカード可能) |
--bwlimit=KBPS | 帯域制限(KB/s) |
-e ssh | ssh 経由で転送(デフォルトでは ssh 使用) |
--link-dest=DIR | ハードリンクを使う増分バックアップ(スナップショット) |
-c | checksum ベースで差分判定(遅いが正確) |
--partial-dir=DIR | 中断ファイルを置くディレクトリ指定 |
--chmod=... | 転送後のパーミッション調整 |
--rsync-path='sudo rsync' | リモートで sudo 実行する場合 |
--numeric-ids | ユーザー/グループを名前ではなくIDで扱う |
--times (-t) | タイムスタンプを保持(-a に含まれる) |
--perms (-p) | パーミッションを保持(-a に含まれる) |
--owner / --group | 所有者・グループを保持(rootでのみ有効なことが多い) |
rsync と他ツールの使い分け
cp:単純なローカルコピー(小規模)scp/sftp:単発でリモートへコピー(rsyncの差分・再開・高速機能は無し)rsync:差分・再開・除外ルール・増分バックアップ(最も汎用的)tar+転送:大量小ファイルやメタデータ問題がある場合は tar 化して転送→展開の方が速いことがある
mv
mv は ファイル・ディレクトリの移動 / 名前変更 を行うコマンドです。
mv の基本構文
mv [オプション] <移動元> <移動先>
・移動元:動かしたいファイル・ディレクトリ
・移動先:保存先 or 新しい名前
よく使うオプション
| オプション | 意味 | 実務での用途 |
|---|---|---|
-i | 上書き前に確認 | 誤上書き防止 |
-f | 強制上書き | スクリプトで確認を求められないように |
-n | 既存ファイルがあると上書きしない | 安全重視 |
-v | 処理内容を表示 | 大量処理の確認に便利 |
-u | 移動先より新しい場合のみ上書き | 差分だけ更新 |
rm
rm は ファイル・ディレクトリを削除するコマンドです。
ただし、一度削除すると 元に戻せない(復元ほぼ不可) ため、Linuxコマンドの中でも最も慎重に扱うべきコマンドです。
基本構文
rm [オプション] <削除したいファイル・ディレクトリ>
よく使うオプション
| オプション | 内容 | 使う場面 |
|---|---|---|
-i | 削除前に確認する | 安全に削除したい |
-f | 強制削除(確認なし) | 非対話スクリプトで使う |
-r | ディレクトリを再帰的に削除 | ディレクトリ削除時 |
-v | 実行内容を表示 | 大量削除時の確認 |
-I | 大量削除時のみ確認 | 安全かつ便利なオプション |
touch
touch は ファイルのタイムスタンプを変更する コマンドで、
同時に 空ファイルを新規作成する コマンドとしてもよく使われます。
基本構文
touch [オプション] <ファイル名>
よく使うオプション
| オプション | 説明 | 使用例 |
|---|---|---|
-c | ファイルがなければ作らない | 存在時のみ時刻更新 |
-a | atime のみ更新 | 読み取り時間だけ更新 |
-m | mtime のみ更新 | 更新時間だけ変えたい |
-t | 時刻を手動で指定(形式:YYYYMMDDhhmm) 例) touch -t 202501011200 file.txt | バッチテスト |
-r | 別ファイルの時刻をコピー | 同期処理 |
-d | 日時を自然言語で指定 | "yesterday" など |
mkdir
mkdir はディレクトリ(フォルダ)を作るための超基本コマンド。
基本構文
mkdir [オプション] ディレクトリ名…
よく使うオプション
| オプション | 説明 | 実務での用途 |
|---|---|---|
-p, --parents | 親ディレクトリがなければ作る(存在してもエラーにならない) | パス一括作成 / スクリプトで常用 |
-m MODE, --mode=MODE | 作成時のパーミッションを指定(例 -m 0755) | umask に左右されず権限を固定したいとき |
-v, --verbose | 作成したディレクトリを表示 | ログ出力やデバッグ時 |
テキスト加工
cat
cat(concatenate) は、ファイルの中身を表示したり、複数ファイルを結合したり、新規ファイルを作成するときに使うコマンドです。
「とりあえず中身を確認したい」「小さなファイルをサッと作りたい」など、実務では非常に出番が多いコマンドです。
基本構文
cat [オプション] [ファイル名…]
よく使うオプション
| オプション | 説明 | 例 |
|---|---|---|
-n | 全行に番号を付ける | cat -n file.txt |
-b | 空行以外に番号を付ける | cat -b file.txt |
-s | 連続する空行をまとめる | cat -s file.txt |
-E | 行末に「$」を表示(改行可視化) | cat -E file.txt |
-T | タブを「^I」で表示 | cat -T file.txt |
echo
echo
は、文字列や変数の値を画面に表示したり、ファイルに出力するときに使う基本コマンドです。シェルスクリプトでもほぼ必ず登場するほど変化します。
基本構文
echo [オプション] [文字列]
よく使うオプション
| オプション | 説明 | 使用例 |
|---|---|---|
-n | 最後の改行を出さない | echo -n "Hello" |
-e | エスケープを有効にする | echo -e "A\tB\nC" |
-E | エスケープ無効(デフォルト) | echo -E "\t" |
| 記号 | 意味 |
|---|---|
\n | 改行 |
\t | タブ |
\\ | 逆スラッシュ |
\" | ダブルクォート |
\a | 警告音(ベル) |
printf
printfは「フォーマット付きの文字列出力」を行うコマンドです。
基本構文
printf “フォーマット” [引数 …]
フォーマット指定子
| 指定子 | 説明 | 例 |
|---|---|---|
%s | 文字列 | "abc" |
%d | 整数 | 10 |
%f | 小数 | 3.14 |
%x | 16進数 | ff |
%o | 8進数 | 77 |
%% | % 文字 | % |
書式制御まとめ
| 書式 | 説明 |
|---|---|
%10s | 文字列を10桁で右詰め |
%-10s | 左詰め |
%03d | 3桁ゼロ埋め |
%8.2f | 幅8、小数2 |
%.f | 小数以下を表示しない |
printf がよく使われる理由(echo との違い)
| 機能 | echo | printf |
|---|---|---|
| 改行自動付与 | ○(付く) | ×(付かない) ※改行が付かないため、自分で \n書く |
| エスケープの一貫性 | △(環境で挙動が異なる) | ◎(常に安定) |
| フォーマット制御 | × | ◎(桁揃え・小数点制御など) |
| スクリプト向け | △ | ◎ |
使用例
表形式出力(ログ整形に使える)
printf “%-10s %-5s %-5s\n” “NAME” “AGE” “ID”
printf “%-10s %-5d %-5d\n” “Taro” 20 100
printf “%-10s %-5d %-5d\n” “Hanako” 25 200
表のように出る:
NAME AGE ID
Taro 20 100
Hanako 25 200
grep
grep は「指定した文字列・正規表現にマッチする行」を検索して表示するコマンドです。
大規模ログの解析、設定ファイルの検索、文字列抽出に欠かせません。
基本構文
grep [オプション] “検索文字列” ファイル
よく使うオプション
| オプション | 説明 | 用途 |
|---|---|---|
-i | 大文字小文字を無視 | ERROR / Error / error など |
-n | 行番号を表示 | ログの位置特定 |
-v | マッチしない行を表示(除外) | ノイズ除去 |
-r | 再帰的に検索 | ディレクトリ全体検索 |
-l | マッチがあるファイル名のみ表示 | 設定ファイルの検索 |
-H | ファイル名を表示 | 複数ファイル検索時 |
-o | マッチ部分のみ表示 | 部分抽出 |
-E | 拡張正規表現(+、?、 | OK) |
-w | 単語単位で一致 | “cat” と “category” の区別 |
-c | マッチ数を数える | ログ集計 |
sed
sed はテキストストリームを行単位で処理・変換する強力なツールです。
ログ整形、設定ファイルの一括置換、ワンライナーでのテキスト加工に頻出します。awk が「列と集計」向けなら、sed は「行の置換・挿入・削除・整形」です。
sed はデフォルトで出力先は標準出力(ファイルは上書きしない)。実際にファイルを変えたいときは -i(in-place)を使います(後述)。
基本構文
sed [オプション] ‘コマンド’ ファイル
一番よく使う:置換
sed ‘s/検索/置換/’ file # その行で最初に見つかった1つだけ置換
sed ‘s/検索/置換/g’ file # 行中の全てを置換
in-place 編集(ファイルを直接変更する)
sed -i.bak ‘s/old/new/g’ file # 元ファイルは file.bak に残る
sed -i ‘s/old/new/g’ file # 元ファイルを上書き(バックアップなし)
まず sed 's/.../.../g' file > file.new で結果を確認してから mv するのが安全。
アドレス指定(どの行にコマンドを適用するか)
行番号:2、範囲:2,5
パターン:/ERROR/、範囲:/start/,/end/
#2行目だけ置換
sed ‘2s/foo/bar/’ file
#”BEGIN”~”END” の範囲で置換
sed ‘/BEGIN/,/END/s/old/new/g’ file
行の削除
行削除:d
#”DEBUG” を含む行を削除
sed ‘/DEBUG/d’ file
#5行目だけ削除
sed ‘5d’ file
行の挿入・追加・置換(i, a, c)
i\ : その行の前に挿入a\ : その行の後に追加c\ : その行を置き換え
#”HEADER” をファイルの最初に挿入
sed ‘1i\HEADER’ file
#”FOOTER” を “END” 行の後に追加
sed ‘/END/a\FOOTER’ file
#3行目を丸ごと置換
sed ‘3c\this is new line’ file
sed と正規表現の注意点
- デフォルトは BRE(基本正規表現)。
()や+は\(\+のようにエスケープが必要。-Eを使うと(拡張)()+が直感的に使えます。 - パターンにスラッシュ
/を含むと面倒 → 区切り文字を#や|に替える - 大きなファイルで複雑な正規表現を使うと遅くなる(必要なら perl を検討)。
perl:もっと複雑なテキスト処理や Unicode/複雑な正規表現が必要な場合。
awk
テキストを行単位 + 列(フィールド)単位で処理するためのツール
ログ解析、CSV、設定ファイル処理、集計に最適。
基本構文
awk ‘パターン { アクション }’ ファイル
例:1列目と3列目を表示
awk ‘{ print $1, $3 }’ file.txt
基本の考え方
- 1行が1レコード
- 行を区切る文字(フィールド区切り)は $1, $2, … で参照
- $0 は「行全体」
- 区切り文字は
-Fで変更できる
よく使う組み込み変数
| 変数 | 意味 |
|---|---|
$0 | 行全体 |
$1 $2 … | 各フィールド(列) |
NF | 列数(Number of Fields) |
NR | 行番号(Number of Records) |
FS | 入力フィールド区切り文字 |
OFS | 出力フィールド区切り文字 |
文字列/整形
cut
テキストを 列単位で切り出す コマンドです。
CSV・ログ・設定ファイルなどの 特定フィールド抜き出しに特化。
基本構文
cut [オプション] ファイル
よく使うオプション
| オプション | 内容 |
|---|---|
-d | 区切り文字の指定(デフォルトはタブ) |
-f | 抽出したいフィールド(列番号) |
-c | 文字位置で切り出し(固定長データ向け) |
例)
cut -d’,’ -f1,3 file.csv # 1列目と3列目
cut -d’,’ -f1-3 file.csv # 1〜3列目
cut -c5-10 file.txt # 5〜10文字目を抜き出す
tr
tr(translate)は、文字の置き換え・削除・圧縮ができるコマンドです。
標準入力(stdin)を読み取り、標準出力(stdout)へ結果を返すのが基本仕様です。
基本構文
tr [オプション] ‘置換前’ ‘置換後’
よく使うオプション
| オプション | 内容 |
|---|---|
-d | 指定した文字を削除 |
-s | 重複する文字を 1 つに圧縮 |
-c | 補集合(指定以外の文字を対象) |
よく使う文字クラス
| クラス | 内容 |
|---|---|
[:lower:] | 小文字 |
[:upper:] | 大文字 |
[:digit:] | 数字 |
[:space:] | 空白文字(スペース・タブなど) |
[:alpha:] | 英字 |
例で理解する tr コマンド
小文字 → 大文字
echo “hello world” | tr ‘[:lower:]’ ‘[:upper:]’
> HELLO WORLD
特定文字の置換
echo “banana” | tr ‘a’ ‘A’
> bAnAnA
特定文字の削除(-d)
echo “ID-123-456” | tr -d ‘-‘
> ID123456
連続した空白を 1 つに圧縮(-s)
echo “A B C” | tr -s ‘ ‘
> A B C
補集合で操作(-c)
echo “abc123” | tr -c ‘[:alpha:]’ ‘-‘
> abc—
(英字以外 → - に置換)
数字以外を削除(数字抽出)
echo “Tel: 090-1234-5678” | tr -cd ‘[:digit:]’
> 09012345678
Windows → Linux の改行コード CRLF 削除
tr -d ‘\r’ < windows.txt > linux.txt
sort
sort は テキストの行を並べ替えるコマンドです。
数値・文字列・日付など様々な基準でソートでき、ログ解析やデータ前処理で大活躍!
基本構文
sort [オプション] [ファイル]
よく使うオプション
| オプション | 意味 | 使用例 |
|---|---|---|
-r | 逆順 | 大→小、Z→A |
-n | 数値として並べ替え | 10 > 2 正しく並ぶ |
-k | キー指定(列指定) | -k2,2(2列目でソート) |
-t | 区切り文字指定 | CSV/TSV で使用 |
-u | 重複行を削除しつつソート | uniq+sort |
-f | 大文字小文字を無視 | A=a として扱う |
-o | 出力先ファイルを指定 | 上書き可 |
uniq
uniq は 連続する重複行を処理するコマンドです。
基本構文
uniq [オプション] [入力ファイル] [出力ファイル]
よく使うオプション
| オプション | 内容 |
|---|---|
-d | 重複している行だけ表示 |
-u | 重複していない行だけ表示(ユニーク) |
-c | 各行の重複回数を表示 |
-i | 大文字小文字を無視 |
-f N | 行頭から N フィールド無視 |
-s N | 行頭から N 文字無視 |
プロセス・ジョブ
ps
ps は 現在動作中のプロセス情報を表示するコマンドです。
プロセス管理・トラブルシュートで必須!
基本構文
ps [オプション]
よく使うオプション
| オプション | 形式 | 内容 |
|---|---|---|
a | BSD | 全端末のプロセス表示 |
x | BSD | 端末に属さないプロセスを表示(デーモン等) |
u | BSD | プロセス所有者表示(USER, %CPU, %MEM) |
-e | UNIX | すべてのプロセス表示(= -A) |
-f | UNIX | 親子関係などフルフォーマット(CMDの引数も) |
-o | UNIX | 列を選択して表示 |
-p | UNIX | PID 指定で表示 |
-C | UNIX | コマンド名で絞り込み |
-U | UNIX | 指定ユーザーのプロセス |
よく使う ps のパターン
| コマンド | 内容 |
|---|---|
ps | 現在のシェルのプロセスを表示(最小情報) |
ps aux | 全プロセス表示(BSD形式) |
ps -ef | 全プロセス表示(UNIX形式) |
ps -o | 表示項目をカスタム |
BSD形式(ps aux)の出力例
| 列 | 意味 |
|---|---|
| USER | 実行ユーザー |
| PID | プロセスID |
| %CPU | CPU使用率 |
| %MEM | メモリ使用率 |
| VSZ | 仮想メモリサイズ(KB) |
| RSS | 実メモリ使用量(KB) |
| TTY | 端末 |
| STAT | プロセス状態 |
| START | 起動時刻 |
| TIME | 累計CPU時間 |
| COMMAND | 実行コマンド |
STAT(状態)の主な意味
| 状態 | 意味 |
|---|---|
| R | 実行中 |
| S | スリープ(待機中) |
| D | 割り込み不可スリープ(I/O待ち) |
| Z | ゾンビ(終了したが親が回収していない) |
| T | 一時停止 |
| < | 優先度高 |
| N | 優先度低 |
UNIX形式(ps -ef)の特徴
| 列 | 意味 |
|---|---|
| UID | ユーザーID |
| PID | プロセスID |
| PPID | 親プロセスID |
| C | CPU使用率(簡易) |
| STIME | 起動日時 |
| CMD | 実行コマンド |
kill
kill は、プロセスに対して シグナル(指令)を送るためのコマンドです。
主に プロセスを停止・終了する目的で使われますが、終了以外の指令も送れます。
基本構文
kill [シグナル] プロセスID(PID)
よく使うシグナル一覧
| シグナル | 番号 | 内容 | 使用用途 |
|---|---|---|---|
SIGTERM | 15 | プロセスに終了を依頼(正常停止) | 基本の終了方法 |
SIGKILL | 9 | 強制終了(拒否不可) | 応答しないプロセス |
SIGHUP | 1 | 設定リロード / セッション切断 | デーモンの再読み込み |
SIGSTOP | 19 | 一時停止(一時中断) | 作業一時中止 |
SIGCONT | 18 | 一時停止したプロセスの再開 | 停止から復帰 |
pkill: 名前でkill
pkill httpd
jobs
jobs は、シェルが管理しているバックグラウンドジョブ一覧を表示するコマンドです。
& で起動したジョブCtrl+Z で停止中のジョブ
などの状態確認に使います。
基本構文
jobs [オプション]
主なオプション
| オプション | 説明 |
|---|---|
-l | PID(プロセスID)込みで表示 |
-p | PID だけ表示 |
-r | 実行中ジョブのみ表示 |
-s | 停止中ジョブのみ表示 |
jobs 出力例:
[1]- Running sleep 100 &
[2]+ Stopped top
| 表示 | 状態 | 内容 |
|---|---|---|
| Running | 実行中 | バックグラウンドで動作 |
| Stopped | 停止中 | Ctrl+Z で停止させた状態 |
| Done | 完了 | 終了したが表示が残っている |
| 表示 | 意味 |
|---|---|
+ | デフォルトのジョブ(fg, bg で対象になる) |
- | 次点のジョブ |
wait
wait は シェルの子プロセスが終了するのを待つためのシェル組み込み(builtin)です。並列に起動した処理の完了待ちや、終了ステータスの収集に使います。
・wait に引数を与えない場合、Bash では 全ての子プロセスが終わるまで待ち、最後に終了した子の終了コードを返す(シェルによる差はある)。
・wait は 現在のシェルが親である子プロセスだけ を待てます(別ターミナルや別シェルで起動したプロセスは対象外)。
・wait <PID> の終了コードは「その子プロセスの終了ステータス」を返します(= $? に反映)。
基本構文
# 引数なしで「全ての子プロセス」を待つ
wait
# 複数指定して順に待つ
wait <PID1> <PID2> …
# PIDまたはジョブ指定で待つ
wait <PID or job>
システム情報
df
ファイルシステム(ディスク)の使用状況 を表示するコマンドです。
基本構文
df [オプション] [対象ファイル or パス]
よく使うオプション
| オプション | 説明 | よく使う場面 |
|---|---|---|
-h | 人間に読みやすく表示(GB/MB等) | 実務の標準 |
-T | ファイルシステムタイプも表示 | ext4? xfs? NFS? 知りたい時 |
-i | inode使用状況を表示 | 「空き容量あるのに書けない!」原因調査 |
-P | POSIX形式で出力(スクリプト向け) | 表形式崩しを防ぐ |
-x <fstype> | 指定FSを除外 | tmpfs除外など |
--total | 合計行を表示 | 全体容量把握 |
基本出力の見方
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20511356 5119380 14483772 27% /
tmpfs 4045304 0 4045304 0% /dev/shm
| 項目 | 意味 |
|---|---|
| Filesystem | デバイス名(どのディスクか) |
| 1K-blocks | ディスク容量(1KB単位) |
| Used | 使用済み容量 |
| Available | ユーザーが使える空き容量(root除いた値) |
| Use% | 使用率 |
| Mounted on | マウントポイント(どこに接続されているか) |
du
du(Disk Usage) はディレクトリ・ファイルごとの使用容量 を表示するコマンドです。
基本構文
du [オプション] [ファイル/ディレクトリ]
よく使うオプション
| オプション | 意味 | よく使う場面 |
|---|---|---|
-h | 人間に読みやすい表示(K/M/G) | 容量を一目で |
-s | 合計のみ表示(サブディレクトリ非表示) | 「ここ全体で何GB?」 |
-d N | 表示の深さを制限(Bash版) | 大量出力防止 |
--max-depth=N | -d N と同等 | 互換性目的 |
-x | 他ファイルシステム除外 | NFS混入回避 |
-a | ファイルも表示 | どれが重い? |
-c | 合計を最後に表示 | 全体確認 |
df との違い(混同ポイント)
| コマンド | 役割 |
|---|---|
df | ディスク全体の容量状況確認 |
du | ディレクトリ/ファイルごとのサイズ集計 |
free
free コマンドとは?
システムのメモリ使用状況を表示するコマンドです。
・物理メモリ(RAM)
・スワップ領域
・キャッシュ / バッファ
などの状態を一目で把握できます。
基本構文
free [オプション]
よく使うオプション
| オプション | 説明 |
|---|---|
-h | 読みやすい単位(MB/GB)で表示 |
-m | MB単位で表示 |
-g | GB単位で表示 |
-t | メモリ・スワップ含め合計表示 |
-w | 旧形式(free/buff/cacheの3列)で表示 |
free の出力内容の読み方
total used free shared buff/cache available
Mem: 15Gi 3.8Gi 1.2Gi 200Mi 10Gi 11Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
| Mem項目 | 意味 |
|---|---|
| total | 総メモリ容量 |
| used | 実際にアプリが使っているメモリ量 |
| free | 完全に未使用のメモリ |
| shared | tmpfsなど共有メモリの使用量 |
| buff/cache | ファイルキャッシュとして利用されている領域 |
| available | アプリが実際に利用できるメモリ量 |
| Swap項目 | 説明 |
|---|---|
| total | スワップ全体容量 |
| used | スワップ使用量(高いと性能劣化) |
| free | 空きスワップ |
top
top コマンドとは?
システムの状態をリアルタイムで監視するためのコマンドです。
確認できる主な情報:
- CPU使用率
- メモリ/スワップ使用量
- 実行中のプロセス
- プロセスごとのCPU/メモリ負荷
- uptime、ロードアベレージ
基本起動
top
終了:
q
top の画面構成と読み方
top – 11:24:01 up 3 days, 2:17, 2 users, load average: 0.15, 0.22, 0.30
Tasks: 179 total, 1 running, 178 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.0 us, 1.0 sy, 0.0 ni, 95.0 id, 0.5 wa, 0.0 hi, 0.5 si, 0.0 st
MiB Mem : 16000.0 total, 2000.0 free, 5000.0 used, 9000.0 buff/cache
MiB Swap: 2000.0 total, 0.0 used, 2000.0 free
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1265 root 20 0 130000 30000 5000 S 5.0 0.2 2:10 nginx
上部(サマリー情報)
| 表示 | 意味 |
|---|---|
| load average | システムの負荷指標(1m, 5m, 15m) |
| Tasks | 実行状態別のプロセス数 |
| us | ユーザーCPU時間(アプリによる負荷) |
| sy | カーネルCPU時間(システム処理負荷) |
| id | アイドル時間(CPUが暇な割合) |
| wa | I/O待ち時間(ディスク遅延の指標) |
| buff/cache | メモリキャッシュ使用量 |
下部(プロセス情報)
| 列 | 意味 |
|---|---|
| PID | プロセスID |
| PR / NI | 優先度 / nice値 |
| VIRT | 仮想メモリ使用量 |
| RES | 物理メモリ使用量 |
| SHR | 共有メモリ |
| S | 状態(R/S/Z 等) |
| %CPU | CPU使用率 |
| %MEM | メモリ使用率 |
| TIME+ | 累積CPU時間 |
| COMMAND | コマンド名 |
操作ショートカット
| キー | 内容 |
|---|---|
q | 終了 |
P | CPU使用率順に並べ替え |
M | メモリ使用率順に並べ替え |
T | 実行時間順に並べ替え |
k | プロセスを kill(PID入力) |
r | nice値変更 |
1 | CPUコアごとの使用率表示 |
h | ヘルプ表示 |
uname
uname コマンドとは?
Linuxシステムに関する基本情報(カーネルやOS、ハードウェア情報など)を表示するコマンドです。
基本構文
uname [オプション]
よく使うオプション
| オプション | 表示内容 | 例 | 主な用途 |
|---|---|---|---|
-a | すべての情報 | uname -a | 一括確認で便利 |
-s | カーネル名 | uname -s | OS識別(Linux / Darwin etc) |
-n | ホスト名 | uname -n | サーバ識別 |
-r | カーネルリリース(バージョン) | uname -r | カーネル更新の確認 |
-v | カーネル詳細バージョン | uname -v | ビルド情報確認 |
-m | マシンハードウェア名(CPUアーキテクチャ) | uname -m | x86_64 / aarch64 判別 |
-p | プロセッサタイプ | uname -p | CPU判別(環境で未知になる場合あり) |
-i | ハードウェア種別 | uname -i | マシン識別 |
-o | OS名 | uname -o | GNU/Linux など |
ネットワーク
curl
curl コマンドとは?
URL(HTTP/HTTPS/FTPなど)を操作するデータ転送ツールです。
REST API やファイル取得、動作確認に多用されます。
例:
curl https://example.com
→ WebページのHTMLが取得され画面に表示されます。
よく使うオプション
| オプション | 説明 | 使用例 |
|---|---|---|
-O | ファイル名を保持して保存 | curl -O URL |
-o | 保存ファイル名指定 | curl -o file.txt URL |
-I | HTTPレスポンスヘッダのみ取得 | curl -I URL |
-L | リダイレクトを追跡 | curl -L URL |
-k | SSL証明書検証を無視 | 開発環境向け |
-u | Basic 認証 (user:pass) | curl -u user:pass URL |
-X | HTTPメソッド指定 | POST/PUT/DELETEなど |
-H | HTTPヘッダ追加 | API通信で頻出 |
-d | POSTデータ送信 | フォーム/API |
wget
wget コマンドとは?
HTTP / HTTPS / FTP などの URL から
ファイルを取得(ダウンロード)するコマンドです。
例:
wget https://example.com/file.zip
→ カレントディレクトリに保存されます。
curl は転送結果を標準出力へ、wget はファイル保存が基本
よく使うオプション
| オプション | 説明 | 使用例 |
|---|---|---|
-O | 保存ファイル名を指定 | wget -O new.zip URL |
-c | 中断したダウンロードを再開 | wget -c URL |
-P DIR | 保存先ディレクトリ指定 | wget -P /tmp URL |
--limit-rate | ダウンロード速度制限 | --limit-rate=500k |
--user --password | Basic/FTP 認証 | |
--no-check-certificate | SSL証明書チェック無効化 | 開発環境向け |
ping
ping コマンドとは?
ネットワークの疎通確認を行うコマンドです。
対象ホストに ICMP Echo Request を送り、応答(Echo Reply)があるかを確認します。
基本構文
ping [オプション] 対象ホスト
よく使うオプション
| オプション | 説明 | 使用例 |
|---|---|---|
-c 回数 | 指定回数だけ実行 | ping -c 4 8.8.8.8 |
-i 秒 | 送信間隔設定 | ping -i 2 8.8.8.8 |
-s バイト | パケットサイズ指定 | ping -s 1024 8.8.8.8 |
-W 秒 | 応答待ちタイムアウト | ping -W 2 8.8.8.8 |
-q | 統計のみ表示(静音) | ping -c 5 -q 8.8.8.8 |
-4 / -6 | IPv4 / IPv6 指定 | ping -4 google.com |
実行例と見方
> ping google.com
64 bytes from xxx: icmp_seq=1 ttl=118 time=15.3 ms
| 表示 | 意味 |
|---|---|
| 64 bytes | 応答パケットサイズ |
| ttl=118 | 到達可能ホップ数の推定 |
| time=15.3ms | 応答時間(遅延) |
— google.com ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 14.928/15.266/15.583/0.243 ms
| 項目 | 意味 |
|---|---|
| packet loss | パケット損失率(0%であるべき) |
ss
ss(socket statistics) は、Linuxのネットワークソケット状態を表示するコマンドです。
従来の netstat の後継で、より高速・高機能です。
基本構文
ss [オプション]
よく使うオプション
| オプション | 説明 |
|---|---|
| -t | TCP接続のみ |
| -u | UDP接続のみ |
| -l | LISTEN状態のみ |
| -n | 名前解決なし(表示高速) |
| -p | プロセス情報を表示 |
| -a | 全てのソケットを表示 |
| -4 / -6 | IPv4 / IPv6のみ表示 |
| -s | 統計情報を表示 |
netstat
netstat(network statistics) は
ネットワーク通信の状態やポートの使用状況を確認するコマンドです。
ただし現在は後継の ssコマンドが推奨されており、
netstat は非推奨化が進んでいます。
でもまだ多くの環境で使用されています。
基本構文
netstat [オプション]
よく使うオプション
| オプション | 説明 |
|---|---|
| -t | TCP接続表示 |
| -u | UDP接続表示 |
| -l | LISTEN状態のみ |
| -p | プロセス情報表示 |
| -n | 名前解決なし(表示高速) |
| -a | 全ソケット表示 |
| -r | ルーティングテーブル表示 |
| -i | インターフェース統計 |
| -s | プロトコル統計 |
| -c | 常時更新(リアルタイム監視) |
アーカイブ
tar
tar(Tape ARchive) は、複数のファイルやディレクトリを
1つのアーカイブファイル(.tar)にまとめる コマンドです。
gzip / bzip2 / xz などと 組み合わせて圧縮もできます。
基本構文
tar [オプション] [アーカイブファイル] [対象ファイル/ディレクトリ]
よく使うオプション
| オプション( – なしでもOK) | 意味 | よく使うシーン |
|---|---|---|
| -c | 作成(Create) | アーカイブ作成 |
| -x | 展開(Extract) | 解凍・取り出し |
| -f | ファイル指定(File) | .tarファイルを扱う |
| -v | 詳細表示(Verbose) | 実行状況確認 |
| -z | gzip圧縮/解凍 | .tar.gz |
| -j | bzip2圧縮/解凍 | .tar.bz2 |
| -J | xz圧縮/解凍 | .tar.xz |
| -t | 中身表示(list) | 内容確認 |
| -C | 展開先ディレクトリ指定 | 解凍場所指定 |
よく使う操作例
① アーカイブ作成(圧縮なし)
tar cvf backup.tar /path/to/dir
②gzip 圧縮して tar 作成(.tar.gz)
tar czvf backup.tar.gz /path/to/dir
③gzip 圧縮 tar を展開(.tar.gz)
tar xzvf backup.tar.gz
④ 指定したフォルダに解凍
tar xzvf backup.tar.gz -C /tmp
⑤アーカイブの中身確認(解凍しない)
tar tvf backup.tar.gz
⑥特定ファイルだけ展開
tar xvf backup.tar file1 file2
zip/unzip
zip は、複数のファイルやフォルダを
ZIP形式に圧縮するコマンドです。
OSを問わない形式なので、
Windowsとの互換性が高いのが最大の強み!
| コマンド | 用途 |
|---|---|
| zip | ファイルを ZIP 形式で圧縮 |
| unzip | ZIPファイルを展開(解凍) |
zip の基本構文
zip [オプション] 圧縮後.zip 対象ファイル/ディレクトリ
zipコマンドのよく使うオプション
| オプション | 内容 |
|---|---|
| -r | ディレクトリを再帰的に圧縮 |
| -e | パスワード付きZIPを作成 |
| -9 | 最高圧縮率(遅いが小さい) |
| -q | 静かに実行(出力少なめ) |
unzip の基本構文
unzip ZIPファイル
unzipコマンドのよく使うオプション
| オプション | 内容 |
|---|---|
| -l | ZIPファイルの内容一覧を表示 |
| -d | 展開先ディレクトリ指定 |
| -o | 上書きして展開(確認なし) |
| -P | パスワード指定して展開 |
| -q | 静かに実行 |
gzip/gunzip
gzip / gunzip とは?
| コマンド | 役割 |
|---|---|
| gzip | ファイルを gzip 圧縮(.gz)にする |
| gunzip | gzip 圧縮ファイル(.gz)を解凍 |
gzip の特徴
- 単一ファイルを圧縮(複数はまとめられない)
- 拡張子は
.gz - 圧縮率と速度のバランスが良い
- tar と組み合わせて使うのが一般的
基本構文
gzip [オプション] ファイル
gunzip [オプション] ファイル.gz
gzip のよく使うオプション
| オプション | 意味 |
|---|---|
| -k | 元ファイルを残す |
| -d | 解凍(gunzip同様) |
| -v | 詳細表示 |
| -1~-9 | 圧縮レベル(デフォルト: -6) |
その他
date
date コマンドは、Linuxで現在の日付・時刻を表示したり、設定したりするコマンドです。
基本構文
date
date [オプション] [+フォーマット]
date [オプション] [MMDDhhmm[[CC]YY][.ss]] # 時刻設定
よく使うオプション
| オプション | 説明 |
|---|---|
+FORMAT | 日付・時刻の表示形式を指定 |
-u | UTC(協定世界時)で表示 |
-R | RFC 2822 形式で表示(メール用) |
-I | ISO 8601形式で表示 |
-d | 指定日付の計算・表示 |
-s | システム時刻を設定(root権限必要) |
フォーマット指定の例(+FORMAT)
| フォーマット | 説明 | 例 |
|---|---|---|
%Y | 西暦4桁 | 2025 |
%y | 西暦下2桁 | 25 |
%m | 月(01-12) | 11 |
%d | 日(01-31) | 22 |
%H | 時(00-23) | 23 |
%M | 分(00-59) | 45 |
%S | 秒(00-59) | 12 |
%a | 曜日省略形 | Fri |
%A | 曜日全称 | Friday |
%j | 年内通算日 | 326 |
例:カスタム表示
date “+%Y/%m/%d %H:%M:%S”
出力例: 2025/11/22 23:45:12
xargs
xargsコマンドとは?
標準入力から受け取ったデータを引数としてコマンドに渡すコマンドです。
例えば、rm file1 file2 file3 のように、
引数が大量になる処理を自動化・効率化できるのがxargs。
基本例
echo “file1 file2 file3” | xargs rm
= rm file1 file2 file3 と同じ意味
よく使うオプション
| オプション | 説明 |
|---|---|
-I {} | 占位文字 {} を使い任意位置に挿入 |
-0 | NULL区切り対応(findの-print0と組) |
-p | 実行前に確認(対話モード) |
-n NUM | 一度に渡す引数の数を制限 |
-L NUM | 一度に渡す入力行数を制限 |
-P NUM | 並列実行(高速処理) |
find
findコマンドとは?
ファイルやディレクトリを検索するコマンド。
名前・サイズ・更新日時・所有者・パーミッションなど、あらゆる条件で検索可能。
基本構文
find 検索開始ディレクトリ [検索条件] [実行アクション]
例:
find . -name “*.log”
よく使う検索条件
| 条件 | 説明 | 例 |
|---|---|---|
-name "PATTERN" | ファイル名一致 | -name "*.txt" |
-type f | 通常ファイル | |
-type d | ディレクトリ | |
-size +10M | サイズ10MBより大 | -size -1G(1GB未満) |
-mtime -3 | 3日以内に更新 | -mtime +30(30日以上) |
-user USER | 所有者検索 | -user root |
-perm MODE | パーミッション一致 | -perm 644 |
条件の論理演算
| 演算 | 記述例 | 意味 |
|---|---|---|
| AND | スペースで繋ぐ | -type f -name "*.sh" |
| OR | -o | -name "*.txt" -o -name "*.log" |
| NOT | ! | ! -name "*.txt" |
test [ ]
test / [ ] コマンドとは?
ファイルの状態や文字列比較、数値比較などの
条件判定を行うコマンドです。
test と[ ] の機能はほぼ同じ([ ] を使うことの方が多い)
例:
if test 条件; then
処理
fi
if [ 条件 ]; then
処理
fi
主に使う3種類の判定
| 種類 | 判定内容 |
|---|---|
| ファイル判定 | 存在・ディレクトリ・読み書き権限など |
| 文字列比較 | 等しい/空/長さ比較 |
| 整数比較 | 大小比較 |
ファイル判定
| オプション | 意味 | 例 |
|---|---|---|
-e | 存在するか | [ -e file ] |
-f | 通常ファイル | [ -f file ] |
-d | ディレクトリ | [ -d dir ] |
-r | 読み取り可能 | [ -r file ] |
-w | 書き込み可能 | [ -w file ] |
-x | 実行可能 | [ -x script.sh ] |
-s | サイズ > 0 | [ -s file ] |
文字列比較
| 条件 | 意味 |
|---|---|
= | 一致 |
!= | 不一致 |
-z | 長さ0(空文字) |
-n | 長さ>0 |
数値比較
| 条件 | 意味 |
|---|---|
-eq | = |
-ne | ≠ |
-lt | < |
-le | ≦ |
-gt | > |
-ge | ≧ |
複数条件の組み合わせ
| 演算子 | 説明 | 例 |
|---|---|---|
-a | AND | [ -f a -a -f b ] |
-o | OR | [ -f a -o -f b ] |
! | NOT | [ ! -f file ] |
拡張版:[[ ]]
bashでのみ使用可能
| 機能 | [ ] | [[ ]] |
|---|---|---|
| ワイルドカードでの比較 | × | ○ |
&& / ` | ` の利用 | |
| クォート省略 | 不可 | ある程度可 |
trap
trapコマンドとは?
シェルスクリプトで シグナルを検知して特定の処理を実行するためのコマンドです。
例:
強制終了(Ctrl+C)された際に後処理(後片付け)を実行する
役割まとめ
| 役割 | 使用例 |
|---|---|
| 強制終了時の後始末 | 一時ファイル削除 |
| エラー発生時の処理 | ログ出力、終了処理 |
| スクリプト終了時処理実行 | cleanup処理 |
基本構文
trap ‘実行するコマンド’ シグナル名
よく使うシグナル
| シグナル | 名称 | 例 |
|---|---|---|
| INT | 割り込み(Ctrl+C) | trap '...' INT |
| TERM | 終了要求 | サービス停止時 |
| EXIT | スクリプト終了時 | 正常/異常問わず実行 |
| ERR | コマンド失敗時 | set -e と相性◎ |
| HUP | ハングアップ | デーモン再起動時 |
例:Ctrl+Cで cleanup 実行
trap ‘echo “停止!後片付け中…”; rm -f tempfile’ INT
使用例
一時ファイル削除の典型例
#!/bin/bash
tmp=$(mktemp)
trap “rm -f $tmp; echo Cleaned!” EXIT
echo “作業中…”
sleep 5
複数シグナル同時設定
trap ‘rm -f $tmp; echo Cleaned!’ INT TERM HUP
途中で失敗したときに後始末する
set -e # エラーでスクリプト停止
trap “echo ‘エラー発生!後始末を実行中…’; cleanup” ERR
cleanup() {
echo “クリーンアップ中…”
# 後始末処理
}
set
set コマンド は、シェル(特に Bash)で動作環境やスクリプトの動作モードを制御する強力なコマンドです。
set は大きく分けて2つの用途があります。
- シェルオプションの設定や解除
- 位置パラメータの設定(引数の再定義)
基本構文
set [オプション]
set [–] [引数…]
よく使うオプション
| オプション | 説明 | 例 | 備考 |
|---|---|---|---|
-e | コマンドが失敗(終了ステータス非0)したらスクリプトを即終了 | set -e | 大規模スクリプトで安全性向上 |
-u | 未定義変数の参照を禁止 | set -u | タイプミスやバグ防止 |
-x | 実行されるコマンドを表示(デバッグ用) | set -x | 実行後に set +x で解除可能 |
-o pipefail | パイプ内の途中で失敗したコマンドも検出 | set -o pipefail | デフォルトは最後のコマンドだけ反映 |
-E | ERRトラップを関数やサブシェルにも伝播 | set -E | trap '処理' ERR と組み合わせて使用 |
-- | 位置パラメータ($1, $2…)を手動で設定 | set -- "arg1" "arg2" | 関数内で引数をリセット可能 |
+e | -e の解除 | set +e | スクリプト途中でエラー時終了を無効化 |
+x | -x の解除 | set +x | デバッグ表示を停止 |
+u | -u の解除 | set +u | 未定義変数チェックを無効化 |
実務での活用例
安全なスクリプトの書き方
#!/bin/bash
set -euo pipefail
echo “Start backup”
cp /source/file /backup/file
echo “Backup complete”
-e:エラーで終了-u:未定義変数チェック-o pipefail:パイプ内のエラーを検出
→ この3つを組み合わせると、スクリプトの安全性が格段に向上します。
デバッグ用の表示
#!/bin/bash
set -x
echo “Debugging this script”
実行中のコマンドと引数を確認できるので、トラブルシュートが簡単になります。

コメント