目的から探す逆引き辞典
「ファイルを探したい」「権限を変更したい」といった目的や、「AとBの違いが分からない」という比較の軸から、該当するLinuxコマンド一覧(コマンド集)の項目にたどり着けるようにした横断ページです。
コマンド集はコマンド名のアルファベット順・カテゴリ別に整理されていますが、実際にコマンドを使う場面では「このコマンドで何ができるか」よりも先に「これをやりたいが、どのコマンドを使えばいいか」が分からないことの方が多いものです。このページでは、よくある目的と、目的が近い複数のコマンドの使い分けを一箇所にまとめています。
目的から探す
ファイルやディレクトリを探したい
ファイル名の一部や完全な名前が分かっている場合は、findで条件(名前・更新日時・サイズなど)を指定して探すのが基本です。
より高速に名前だけで探したい場合は、事前に作られたデータベースを検索するlocateも使えますが、作成直後のファイルは見つからないことがあります。
コマンド名そのものがどこにインストールされているか知りたいときはwhichを使います。
ファイルの中身まで含めて探したい場合はgrepの再帰検索(-rオプション)が向いています。
ファイルの中身を確認したい
短いファイルを一気に表示するならcat、長いファイルを画面に収まる分だけスクロールしながら読むならlessが基本です。
ファイルの先頭だけ確認したいときはhead、末尾(最新のログなど)を確認したいときはtailを使います。
ログファイルへの追記をリアルタイムで監視したい場合は、tailに-fオプションを付けるのが定番です。
文字列を検索・抽出・加工したい
ファイルの中から特定の文字列を含む行を探すならgrepが基本です。
1列・2列目だけを取り出すような単純な切り出しにはcut、列や条件に応じて複雑な加工・集計を行いたい場合はawk、文字列の置換や削除を行いたい場合はsedが向いています。
どれも正規表現を扱える点は共通していますが、目的がシンプルなほどgrep・cutで十分なことが多く、集計や複雑な条件分岐が必要になって初めてawk・sedの出番になります。
実行中のプロセスを確認・終了したい
現在実行中のプロセスを一覧表示するにはps(スナップショット表示)やtop(リアルタイム更新表示)を使います。
プロセス名から直接PIDを調べたい場合はpgrepが便利です。
プロセスを終了させるにはkill(PID指定)やpkill(プロセス名指定)を使います。
反応しないプロセスにはkill -9(SIGKILL)で強制終了させることもできますが、まずは通常の終了シグナル(SIGTERM)を試すのが基本です。
ディスクの空き容量を確認したい
パーティションごとの空き容量を確認するにはdf(-hオプションで読みやすい単位に)を使います。
特定のディレクトリがどれだけ容量を使っているか調べるにはdu(-shオプションで合計のみ表示)を使います。
ディスクやパーティションの構成そのものを確認したい場合はlsblkが見通しよく一覧表示してくれます。
ファイルやディレクトリの権限を変更したい
読み書き実行の権限を変更するにはchmod、所有者やグループを変更するにはchownを使います。
新しく作成するファイルの既定の権限を調整したい場合はumaskで設定します。
いずれも数値表記(755など)と記号表記(u+x など)の2通りの指定方法があり、どちらに慣れておくかは好みが分かれるところですが、試験では数値表記で問われることが多いです。
ファイルを圧縮・展開したい
複数のファイルを1つにまとめて圧縮するならtar(czfオプションでgzip圧縮したアーカイブを作成)が定番です。
単一ファイルの圧縮・展開にはgzip・gunzip、Windowsとのやり取りも想定したzip形式にはzip・unzipを使います。
「複数ファイルをまとめる」機能と「圧縮する」機能が分かれているtarに対して、zipは両方を1つのコマンドでこなす点が設計思想として異なります。
リモートサーバーに接続・ファイル転送したい
リモートサーバーへのログインにはsshを使います。
ファイルを1つ単位でコピーしたいだけならscp、ディレクトリ全体を差分だけ効率的に同期したいならrsyncが向いています。
対話的にファイル一覧を見ながら転送したい場合はsftpが使えます。
頻繁に同期する場合やネットワークが不安定な環境では、差分転送に対応したrsyncの方が再開も含めて扱いやすいことが多いです。
ネットワークの疎通状況を確認したい
相手先と通信できるかを確認する基本コマンドはpingです。
途中の経路(ルーター)でどこまで到達しているかを調べたい場合はtracerouteを使います。
Webサーバーなど特定のサービスに対してHTTPリクエストが通るか確認したい場合はcurlやwgetが便利です。
pingはネットワーク層(IP)の疎通、curlはアプリケーション層(HTTPなど)の疎通を確認する点で、調べている階層が異なります。
サービス(デーモン)を起動・停止・自動起動設定したい
systemdを採用した現在の多くのディストリビューションでは、systemctlでサービスの起動・停止(start/stop)を行います。
今すぐの起動とは別に、次回以降の自動起動を設定(enable/disable)、状態確認(status)までを一括して扱えます。
ログを確認・調査したい
systemdのジャーナルログを確認するにはjournalctl(-uオプションで特定サービスに絞り込み、-fでリアルタイム監視)を使います。
ファイルとして保存されている従来形式のログには、末尾をリアルタイムで追うtail(-fオプション)や、ページ送りで読むlessが向いています。
エラーの原因調査では、まず直近のログを時系列で追い、該当するエラーメッセージをgrepで検索するという組み合わせがよく使われます。
ユーザーやグループを管理したい
新しいユーザーを作成するにはuseradd、既存ユーザーの設定(所属グループやシェルなど)を変更するにはusermodを使います。
パスワードを設定・変更するにはpasswd、新しいグループを作成するにはgroupaddを使います。
ユーザー作成だけでは初期パスワードが設定されず、ログインできない状態になることが多いため、useradd実行後にpasswdで必ずパスワードを設定する流れを覚えておくと安心です。
コマンドを定期的に自動実行したい
繰り返し定期実行したい場合はcrontab(-eで編集)でスケジュールを登録します。
1回だけ指定した時刻に実行したい場合はatを使います。
「毎日・毎週など繰り返す」ならcrontab、「今日の夜だけ1回」ならatというのが基本的な使い分けです。
パッケージをインストール・管理したい
Debian/Ubuntu系ではapt、Red Hat系(RHEL 8以降・Fedora等)ではdnf、やや古いRed Hat系(CentOS 7等)ではyumを使います。
どれも「パッケージ名から依存関係を解決してインストールする」という役割は共通しており、ディストリビューションの系統によって使うコマンドが変わる点を覚えておくと迷いません。
コマンドの使い分け(比較記事)
名前は知っていても、似た役割を持つコマンド同士のどちらを選べばいいか迷うことはよくあります。代表的な組み合わせについて、選び方の目安をまとめました。
grepとawkとsedの違い
いずれも文字列を扱うコマンドですが、得意分野が異なります。grepは「条件に合う行を探す(抽出する)」ことに特化しており、最もシンプルで高速です。
sedは「見つけた文字列を別の文字列に置き換える(変換する)」ことが主目的で、ストリームエディタという名前の通り、流れてくるテキストをその場で加工します。
awkは「列(フィールド)ごとに値を取り出し、計算や集計を行う」ことが得意で、CSVやログのような表形式データの集計処理によく使われます。
迷ったときの目安としては、単に行を探したいだけならgrep、文字列を置換したいだけならsed、列ごとの集計や条件分岐が必要ならawk、と考えると選びやすくなります。
findとlocateとwhichの違い
findはファイルシステムを実際に走査して探すため、最新の状態を反映しますが、範囲が広いと時間がかかることがあります。
locateは事前に作成されたデータベース(updatedbで更新)を検索するため高速ですが、データベース更新前の新しいファイルは見つかりません。
whichはこの2つとは目的が異なり、「あるコマンド名が実行されたときに使われる実行ファイルのパス」を調べるためのコマンドで、ファイルそのものの検索には使いません。
cpとrsyncの違い
cpはファイル・ディレクトリをその都度まるごとコピーするシンプルなコマンドです。
rsyncは転送元と転送先を比較し、変更があった部分だけを効率的に転送できるため、同じ内容を繰り返し同期する用途(バックアップやサーバー間同期)に向いています。
1回きりのコピーならcpで十分ですが、同じディレクトリを何度も同期する場合はrsyncの方が時間・帯域の節約になります。
tarとzipの違い
tarは本来「複数のファイルを1つにまとめる(アーカイブ化する)」機能だけを持ち、圧縮はgzipなど別のコマンドと組み合わせて行うのがUnix系の伝統的な設計です(czfオプションで両方同時に行うのが一般的)。
zipはアーカイブ化と圧縮を1つのコマンドで行い、Windows環境とのやり取りを想定する場面で選ばれることが多い形式です。
Linuxサーバー間でのバックアップ・転送にはtar.gz、他OSとのファイルのやり取りにはzipという使い分けが一般的です。
curlとwgetの違い
curlはHTTP以外にもFTPなど複数のプロトコルに対応し、APIの動作確認やPOSTリクエストの送信など、対話的・スクリプト的な使い方に向いています。
wgetはファイルのダウンロードに特化しており、再帰的なサイト全体のダウンロードやダウンロードの再開に強みがあります。
「APIを叩いて結果を確認したい」ならcurl、「ファイルを1つダウンロードしたい」だけならwget、というのが実務でのおおまかな使い分けです。
psとtopの違い
psは実行した瞬間のプロセス一覧(スナップショット)を1回だけ表示するコマンドです。
topは画面を一定間隔で自動更新しながら、CPU・メモリ使用率の高い順にプロセスをリアルタイム表示し続けます。
スクリプトの中で結果を加工したい場合はpsの出力をgrepやawkに渡すのが定番で、人間が画面を見ながら監視する場合はtopが向いています。
chmodとchownの違い
chmodはファイル・ディレクトリの「権限(読み・書き・実行)」を変更するコマンドです。
chownは「所有者(ユーザー)・所有グループ」そのものを変更するコマンドで、権限の内容自体は変更しません。
「誰が触れるか」を変えたいときはchown、「何ができるか」を変えたいときはchmod、と覚えると混同しにくくなります。
シンボリックリンクとハードリンクの違い(lnコマンド)
lnには2種類のリンクを作成するモードがあります。
シンボリックリンク(-sオプション)は元のファイルへの「ショートカット」のようなもので、元のファイルを削除するとリンク先を失います。
ハードリンク(オプションなし)は同じファイル実体を指す別名を増やす仕組みで、元のファイルを削除してもハードリンク経由でデータは残り続けます。
設定ファイルのバージョン切り替えなどではシンボリックリンクが、同一ファイルシステム内でデータそのものを共有したい場合はハードリンクが使われます。
コマンド名そのものを一覧で確認したい場合はLinuxコマンド一覧(コマンド集)、入力して覚えたい場合はコマンド問題集、実際に手を動かして試したい場合は練習用ターミナルもあわせてご利用ください。