Linuxコマンド一覧|用途別早見表48選とUbuntu 26.04での変更点
Linuxのコマンドは数百種類ありますが、日常の運用で実際に使うものは限られます。この記事では、よく使う48コマンドを用途別の早見表にまとめたうえで、使用頻度の高いものは実行例つきで解説します。あわせて、ifconfigやnetstatが動かない理由と代替コマンド、2026年4月23日にリリースされたUbuntu 26.04 LTSでコアユーティリティの実装そのものが入れ替わった点まで扱いました。手元の環境でコマンドが見つからないときの原因切り分けにも使えます。
まとめ
用途別の早見表は次章にあります。先に結論だけ押さえたい方は以下を確認してください。
- 覚える順序は、ファイル操作(ls・cd・cp・mv・rm)→テキスト検索(grep)→権限(chmod・chown)の順が実務で詰まりにくい構成です。
- ifconfigやnetstatが「command not found」になるのは環境の不具合ではありません。net-toolsが既定でインストールされなくなったためで、現在の標準はipコマンドとssコマンドです。
- Ubuntu 26.04 LTSではlsをはじめとする大半のコアユーティリティが、GNU coreutilsからRust製のuutils coreutils 0.8.0に置き換わりました。ただしcp・mv・rmの3つだけは未解決の脆弱性を理由にGNU実装のまま据え置かれています。
- cdやaliasはmanコマンドでマニュアルが引けません。これらはシェル組み込みコマンドのため、helpコマンドを使います。
- chownの再帰指定は大文字の-Rです。小文字の-rというオプションは存在しません。
用途別Linuxコマンド早見表
実務で登場する頻度が高い48コマンドを5分類で整理しました。まずここから目的のコマンドを引き、詳しい使い方は後続の章で確認してください。
ファイル・ディレクトリ操作
| コマンド | 用途 | 主なオプション | 例 |
|---|---|---|---|
| ls | ファイル一覧の表示 | -l 詳細/-a 隠しファイル/-h 単位 | ls -lh |
| cd | ディレクトリの移動 | – 直前の位置へ戻る | cd /var/log |
| pwd | 現在地の絶対パス表示 | -P リンクを解決した実体パス | pwd |
| cp | コピー | -r 再帰/-i 確認/-p 属性保持 | cp -r src dst |
| mv | 移動・名前変更 | -i 確認/-n 上書き禁止 | mv old.txt new.txt |
| rm | 削除 | -r 再帰/-i 確認/-f 強制 | rm -i file.txt |
| mkdir | ディレクトリ作成 | -p 親ごと作成 | mkdir -p a/b/c |
| rmdir | 空ディレクトリ削除 | -p 親もまとめて削除 | rmdir tmp |
| touch | 空ファイル作成・時刻更新 | -t 時刻を指定 | touch memo.txt |
| find | 条件を指定した検索 | -name/-type/-mtime | find . -name "*.log" |
| ln | リンク作成 | -s シンボリックリンク | ln -s target link |
テキストの表示・検索・加工
| コマンド | 用途 | 主なオプション | 例 |
|---|---|---|---|
| cat | ファイル内容の連結表示 | -n 行番号 | cat app.conf |
| less | ページ送りでの閲覧 | -N 行番号/+F 追記を追従 | less app.log |
| head | 先頭のみ表示 | -n 行数 | head -n 20 app.log |
| tail | 末尾表示・追記の追従 | -f 追従/-n 行数 | tail -f app.log |
| grep | 文字列検索 | -r 再帰/-n 行番号/-i 大小無視 | grep -rn "error" . |
| sed | 置換・行編集 | -i 直接編集/-e 複数指定 | sed -i 's/a/b/g' f.txt |
| awk | 列の抽出・集計 | -F 区切り文字の指定 | awk '{print $1}' f.txt |
| sort | 並べ替え | -n 数値/-r 逆順/-h 単位付き | sort -n nums.txt |
| uniq | 連続する重複行の除去 | -c 件数/-d 重複行のみ | sort f.txt | uniq -c |
| wc | 行数・単語数の計上 | -l 行/-w 単語/-c バイト | wc -l app.log |
| diff | 差分比較 | -u 統一形式/-r 再帰 | diff old.txt new.txt |
プロセスとシステム状態
| コマンド | 用途 | 主なオプション | 例 |
|---|---|---|---|
| ps | プロセス一覧 | aux 全プロセス/-ef 別書式 | ps aux |
| top | 負荷のリアルタイム監視 | -u ユーザー指定 | top |
| kill | プロセスへのシグナル送信 | -9 強制終了/-l シグナル一覧 | kill -15 1234 |
| df | ディスク使用量 | -h 単位/-i inode使用量 | df -h |
| du | ディレクトリ別の使用量 | -s 合計のみ/-h 単位 | du -sh * |
| free | メモリ使用量 | -h 単位/-s 秒間隔で更新 | free -h |
| uptime | 稼働時間と負荷平均 | -p 稼働時間のみ | uptime |
| systemctl | サービスの制御 | status/start/enable | systemctl status ssh |
| journalctl | システムログ閲覧 | -u 単位指定/-f 追従 | journalctl -u ssh |
圧縮・アーカイブ・転送
| コマンド | 用途 | 主なオプション | 例 |
|---|---|---|---|
| tar | アーカイブの作成・展開 | -c 作成/-x 展開/-t 一覧/-z gzip | tar -czf a.tar.gz dir |
| gzip | 単一ファイルの圧縮 | -d 展開/-k 元ファイルを残す | gzip app.log |
| gunzip | gz形式の展開 | -c 標準出力へ書き出す | gunzip app.log.gz |
| zip | zip形式の圧縮 | -r 再帰/-e パスワード保護 | zip -r a.zip dir |
| unzip | zip形式の展開 | -l 一覧/-d 展開先/-O 文字コード | unzip a.zip |
| scp | SSH経由のファイル転送 | -r 再帰/-P ポート番号 | scp f.txt host:~/ |
| rsync | 差分同期 | -a 属性保持/-v 詳細/–delete | rsync -av src/ dst/ |
権限・ユーザー・ネットワーク
| コマンド | 用途 | 主なオプション | 例 |
|---|---|---|---|
| chmod | アクセス権の変更 | -R 再帰/–reference 権限を複製 | chmod 644 f.txt |
| chown | 所有者の変更 | -R 再帰(小文字-rは不可) | chown -R app:app dir |
| chgrp | 所有グループの変更 | -R 再帰 | chgrp www-data f.txt |
| sudo | 管理者権限での実行 | -u 実行ユーザー/-i ログインシェル | sudo apt update |
| adduser | ユーザー追加(Debian系推奨) | –system システム用アカウント | sudo adduser taro |
| deluser | ユーザー削除(Debian系推奨) | –remove-home ホームも削除 | sudo deluser taro |
| ip | IPアドレス・経路の確認 | -c 色付き/-br 簡易表示 | ip -c addr show |
| ss | 通信ポートの確認 | -t TCP/-u UDP/-l 待受/-n 数値 | ss -tuln |
| ping | 疎通確認 | -c 回数/-i 送信間隔 | ping -c 4 example.com |
| curl | HTTP通信の確認 | -I ヘッダのみ/-o 保存/-L 追従 | curl -I https://example.com |
ファイル・ディレクトリ操作コマンドの実行例
lsの読み方と-lahの使い分け
lsは引数なしでも動きますが、実務では-lと-hを組み合わせます。-lで詳細表示、-hで容量を読みやすい単位(K、M、G)に変換し、隠しファイルまで含めるなら-aを足してください。
$ ls -lah
total 24K
drwxr-xr-x 3 app app 4.0K Jul 30 09:12 .
drwxr-xr-x 8 app app 4.0K Jul 28 17:55 ..
-rw-r--r-- 1 app app 220 Jul 12 11:40 .env
-rw-r--r-- 1 app app 4.2K Jul 30 09:12 app.conf
drwxr-xr-x 2 app app 4.0K Jul 28 18:03 logs
先頭の10文字は「ファイル種別+所有者・グループ・その他の権限」を表します。1文字目がdならディレクトリ、-なら通常ファイル、lならシンボリックリンクを指します。続く数字はハードリンク数で、以降は所有者名、所有グループ名、サイズ、更新日時、名前と並びます。-hを付けない場合、サイズの単位はバイトになります。
cp・mv・rmの事故防止オプション
この3つは取り消しが効かないため、オプションの選び方が事故を分けます。cpでディレクトリを扱うときは-rが必須です。mvは移動と名前変更を兼ねており、移動先に同名ファイルがあると無言で上書きします。
$ cp -r src/ backup/
$ mv -i report.txt report_2026.txt
$ rm -i old.log
-iを付けると上書きや削除の前に確認を求めます。共用サーバーでの作業や、ワイルドカードを含む削除では-iを既定にしておくと安全側に倒せます。rm -rf を対話なしでパス変数と組み合わせるのは避けてください。変数が空になった場合に想定外の範囲を削除します。
テキスト検索・加工コマンドの実行例
grepによるログの絞り込み
grepは単体で使うより、-rでディレクトリ再帰、-nで行番号表示、-iで大文字小文字の無視を組み合わせると調査が速くなります。
$ grep -rni "timeout" /var/log/app/
/var/log/app/worker.log:184:connection timeout after 30s
該当行の前後も見たい場合は-Aで後ろ、-Bで前、-Cで両方の行数を指定します。障害調査では grep -C 5 のようにエラー行の前後5行を出すと、原因になった直前の処理を追えます。
sed・awkの役割分担
sedは行単位の置換、awkは列単位の抽出が得意です。役割が違うため、置換はsed、集計はawkと切り分けると読みやすいコマンドになります。
$ sed -i.bak 's/localhost/db.internal/g' app.conf
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head
sedの-iは元ファイルを直接書き換えます。上の例のように-i.bakと拡張子を続けると、書き換え前の内容がapp.conf.bakとして残る仕組みです。本番の設定ファイルを触るときは拡張子付きで使ってください。なおこの書き方はGNU sed(Linux)の仕様で、macOSに入っているBSD sedでは sed -i '' 's/a/b/g' f.txt のように空文字の引数が必要になります。手順書をMacとLinuxで共用する場合の定番のつまずきどころです。
sort・uniqによる重複集計
uniqは「連続する」重複行しか除去しません。そのため単独で使うと期待どおりに動かず、必ずsortと組み合わせます。件数を数えるなら-cを付けます。
$ sort ip.txt | uniq -c | sort -rn
42 203.0.113.10
7 198.51.100.4
プロセス・リソース確認コマンドの実行例
ps・topでの負荷原因の特定
psは実行時点のスナップショット、topは継続的な監視という違いがあります。プロセスIDを調べてから停止する、という流れが基本です。
$ ps aux | grep [n]ginx
www-data 2417 0.0 0.4 55212 8123 ? S 09:01 0:00 nginx: worker process
検索文字列の1文字目を角括弧で囲むと、grep自身のプロセスが結果に混ざるのを防げます。topは起動後に M でメモリ順、P でCPU順に並べ替えられます。
killのシグナル使い分け
killは「強制終了」専用のコマンドではなく、プロセスへシグナルを送るコマンドです。既定はSIGTERM(15)で、アプリケーションに終了処理をさせてから止めます。応答しない場合のみSIGKILL(9)を使います。
$ kill 2417
$ kill -9 2417
最初から-9を使うのは避けてください。SIGKILLはプロセスに割り込む余地を与えないため、書き込み途中のファイルやロックが残ります。データベースやキューを扱うプロセスでは、-9で止めた後の復旧作業のほうが高くつきます。
df・du・freeによる容量の切り分け
「ディスクが満杯」の調査では、dfで全体を見てからduで犯人を絞ります。両者を混同すると原因にたどり着けません。ファイル数が多い環境では容量に余裕があっても df -i のinode枯渇で書き込みに失敗するため、あわせて確認してください。
$ df -h
$ du -sh /var/* 2>/dev/null | sort -h | tail -5
圧縮・アーカイブコマンドの実行例
tarのオプション組み合わせ
tarのオプションは、c(作成)、x(展開)、t(一覧)、z(gzip圧縮)、f(ファイル名指定)、v(詳細表示)の組み合わせで覚えると迷いません。
$ tar -tzf backup.tar.gz
etc/nginx/nginx.conf
etc/nginx/sites-available/default
$ tar -xzvf backup.tar.gz -C /tmp/restore/
展開前にtで中身を確認する習慣を付けると、カレントディレクトリにファイルが散乱する事故を防げます。上の一覧のようにパスが相対で始まっていれば、展開先は-Cで指定した場所に収まります。Ubuntu 26.04に収録されているGNU tarは1.35系で、-Cの挙動は長く変わっていません。
zip・unzipとWindows間の受け渡し
zipとunzipはUbuntuのデスクトップ版には入っていますが、Server minimalやクラウドイメージには含まれないため、その場合は導入が必要です。Windows環境と受け渡しするファイルでは、tar.gzよりzipのほうが相手側で開きやすくなります。
$ sudo apt install zip unzip
$ zip -r docs.zip docs/
$ unzip -O cp932 from_windows.zip
Windowsで作成されたzipは、ファイル名がShift_JIS系(CP932)で格納されていることがあります。展開後に日本語ファイル名が文字化けする場合は、上の例のように-Oで文字コードを指定してください。-OはDebian/Ubuntuのunzipパッケージに含まれるオプションです。
パーミッション・ユーザー管理コマンドの実行例
chmodの数値表記とシンボリック表記
chmodには数値で指定する方法と、記号で指定する方法があります。数値は読み取り4、書き込み2、実行1の合計を、所有者・グループ・その他の順に3桁で並べます。
| 指定 | 意味 | 主な用途 |
|---|---|---|
| 644 | 所有者は読み書き、他は読み取り | 設定ファイル・HTML |
| 755 | 所有者は全権、他は読み取りと実行 | ディレクトリ・スクリプト |
| 600 | 所有者のみ読み書き | 認証情報・鍵ファイル |
| 700 | 所有者のみ全権 | 個人用ディレクトリ |
$ chmod 600 ~/.ssh/id_ed25519
$ chmod u+x deploy.sh
SSHの秘密鍵が600より緩い権限だと、sshクライアントが鍵の読み込みを拒否します。接続できないときはまず権限を確認してください。777は「誰でも書き換えられる」状態を意味するため、公開ディレクトリで使ってはいけません。
chown・chgrpによる所有者の変更
chownは所有者を、chgrpは所有グループを変更します。chownはコロン区切りで両方を一度に指定できます。
$ sudo chown -R www-data:www-data /var/www/html
$ sudo chgrp developers shared.txt
ディレクトリ配下をまとめて変更する再帰オプションは、大文字の-Rです。GNU coreutilsのマニュアルにあるchownのオプションは-Rおよび–recursiveで、小文字の-rというオプションは定義されていません。sudo chown -r と入力してエラーになる場合は、大文字に直せば通ります。
Ubuntuでのuseraddとadduserの使い分け
ユーザー追加にはuseraddとadduserの2つがありますが、Ubuntuを含むDebian系では後者が推奨されています。Ubuntuのuseraddのマニュアルには「useradd is a low level utility for adding users.」と明記され、続けて「On Debian, administrators should usually use adduser(8) instead.」とあります。
$ sudo adduser taro
$ sudo usermod -aG sudo taro
useraddは低水準ユーティリティであり、ホームディレクトリの作成やパスワード設定を自動では行いません。対話的に一通り設定してくれるadduserを使うほうが、設定漏れによるログイン不可を避けられます。管理者権限を与える場合は、上の例のようにsudoグループへ追加します。
ネットワーク確認コマンドのip・ssへの移行
ifconfigやnetstatを実行して「command not found」と表示された経験があるなら、それは環境が壊れているのではありません。これらを収録するnet-toolsパッケージが、既定でインストールされなくなったためです。Canonicalは2017年7月の公式ブログで「We’ve already stopped installing ifconfig on desktops (it still gets installed on servers for now)」と述べ、iproute2系への移行を案内していました。その後サーバー側でも既定インストールから外れ、Ubuntu 26.04でも明示的に導入しない限り入りません。
| 旧コマンド | 現在の標準 | 用途 |
|---|---|---|
| ifconfig | ip address show | IPアドレスの確認 |
| ifconfig | ip link show | MACアドレス・リンク状態 |
| netstat | ss | ソケット・ポートの確認 |
| route | ip route | 経路表の確認 |
| ipmaddr | ip maddress | マルチキャストアドレス |
| mii-tool | ethtool | リンク速度・全二重の確認 |
$ ip -c addr show
$ ip route
$ sudo ip link set enp0s3 up
$ sudo ss -tulpn
ipコマンドは省略形が使えるため、日常の確認は ip a(アドレス表示)と ip r(経路表示)で足ります。リンク状態を変更する ip link set はroot権限が必要です。インターフェース名は環境ごとに異なり、上の enp0s3 はVirtualBoxの既定名にあたるため、物理サーバーやクラウドでは ip -c addr show で確認した実際の名前に置き換えてください。
ssは/procを走査するnetstatと違い、netlink経由でカーネルから直接情報を取得します。ソケット数が多い環境ほど応答の差が出る設計です。-tulpnで「TCP・UDPの待ち受けポートとプロセス名」を確認できますが、-pで他プロセスの名前まで表示するにはroot権限が要るため、sudoを付けてください。
既存の運用手順書がifconfig前提で書かれている場合、net-toolsパッケージ自体は現在もUbuntuのリポジトリに残っており(26.04収録版は2.10-2ubuntu1)、sudo apt install net-tools で導入できます。ただし新しく手順を書くならip系に寄せるべきです。net-toolsは長期にわたり開発が止まっており、ネットワーク名前空間など新しい機能を扱えません。tracerouteも既定では入らないことが多く、必要なら別途インストールします。
Ubuntu 26.04 LTSで変わったコマンドの実装
2026年4月23日にリリースされたUbuntu 26.04 LTS(Resolute Raccoon)では、コマンド名は同じまま中身の実装が入れ替わりました。Canonicalの公式発表は、このリリースに「new kernel drivers and subsystems written in Rust, as well as sudo-rs and uutils coreutils bringing memory-safe reimplementations of foundational system tools such as sudo and ls」が含まれるとしています。C言語で書かれたGNU coreutilsが、Rust製のuutils coreutilsへ置き換わったということです。
ただし全部が入れ替わったわけではありません。ここが実務上いちばん重要な点です。
| 対象 | 26.04での実装 | 確認方法 |
|---|---|---|
| ls・cat・sortなど大半 | uutils coreutils 0.8.0 | ls --version |
| cp・mv・rm | GNU coreutils(据え置き) | cp --version |
| sudo | sudo-rs | sudo --version |
$ ls --version
ls (uutils coreutils) 0.8.0
Canonicalはcp・mv・rmの3つについて、uutils版に未解決のTOCTOU(time-of-check to time-of-use)問題が2026年4月22日時点で8件残っているとして、LTSでの採用を見送りました。ファイルを破壊しうる操作を担う3コマンドだけを慎重に扱った形です。同社は依存関係の監査で多数の指摘を受けたうえで、次期のUbuntu 26.10で100%のrust-coreutils化を目標としています。そのため同じシステム上でも ls --version はuutils、cp --version はGNUと表示が割れます。リポジトリ収録版はrust-coreutils 0.8.0-0ubuntu3です。
日常的な使い方が変わるわけではありませんが、影響が出うる場面があります。最も注意したいのは、コマンドの出力文字列やエラーメッセージを前提にしたスクリプトです。文言がわずかに変わるだけでパースが崩れるため、バッチ処理や監視スクリプトは移行前に実挙動で確認してください。次に、GNU拡張のマイナーなオプションに依存している処理です。uutilsはGNU互換を目標にしていますが、実装状況はオプション単位で異なります。sudoersで複雑なルールやPAM連携を組んでいる環境も、sudo-rsへの切り替えにあたるため確認対象です。
GNU実装に戻す必要がある場合、Ubuntuは切り替えを提供者パッケージの形で用意しています。GNU側の提供者パッケージはcoreutils-from-gnuで、gnu-coreutilsに依存する構成です。ただしこれは基本システムの入れ替えにあたるため、検証環境で確認してから適用し、以降のリリースアップグレード時に構成が戻る可能性も見込んでおいてください。Ubuntu 26.04 LTSのサポート期限は2031年4月です。バージョンごとの差異はUbuntu 26.04 LTS(Resolute Raccoon)とは|リリース日・新機能・24.04からのアップグレードで整理しています。
manが引けないコマンドの調べ方
manコマンドはマニュアルを表示しますが、cdやalias、echoでは期待した内容が出ません。これらは独立した実行ファイルではなく、シェル自身に組み込まれたコマンドだからです。
まず、そのコマンドの正体を確かめます。
$ type cd
cd is a shell builtin
$ type find
find is /usr/bin/find
「shell builtin」と表示されたものは、manではなくhelpで説明を読みます。なおUbuntuの既定の.bashrcはlsやgrepにaliasを設定しているため、これらを調べるときは type -a ls のように-aを付けて全候補を出すほうが確実です。
$ help cd
$ help alias
コマンド名そのものを忘れた場合は、キーワードからマニュアルを横断検索できます。man -k compress のように渡すと、説明文に一致するコマンドの一覧が返ります。検索対象は英語のマニュアルなので、日本語で引きたい場合は sudo apt install manpages-ja で日本語manページを追加してください。実行できるコマンド名を列挙するなら、bash上で compgen -c が使えます(aliasや関数も含まれます)。manの各項目にある1や8といった数字はセクション番号で、1が一般ユーザー向けコマンド、5がファイル形式、8が管理者向けコマンドを指します。同名で内容が違う場合は man 5 crontab のようにセクションを指定します。
WindowsコマンドプロンプトとLinuxコマンドの対応
Windowsからサーバー運用に入ると、手が覚えたコマンドが通じずに戸惑います。よく使うものの対応は次のとおりです。
| Windows(cmd) | Linux | 用途 |
|---|---|---|
| dir | ls | 一覧表示 |
| cd | cd | 移動(同名) |
| copy | cp | コピー |
| move / ren | mv | 移動・名前変更 |
| del | rm | 削除 |
| type | cat | 内容表示 |
| findstr | grep | 文字列検索 |
| tasklist | ps | プロセス一覧 |
| taskkill | kill | プロセス停止 |
| ipconfig | ip addr | IPアドレス確認 |
表記上の違いも押さえておくと混乱しません。パス区切りはWindowsが円記号(バックスラッシュ)、Linuxはスラッシュです。Linuxのパスは大文字と小文字を区別するため、Report.txtとreport.txtは別のファイルとして扱われます。オプションの記号もWindowsのスラッシュ形式に対し、Linuxはハイフン形式を使います。
Windows上でLinuxコマンドを試すなら、WSL2を使えば仮想マシンを別途構築せずにUbuntu環境を動かせます。仕組みと導入手順はWSL2とは|WSL1との違い・仕組み・インストール方法とメリット/デメリットを解説で解説しています。
よくある質問
Linuxコマンドの全一覧はどこで確認できますか
実行できるコマンド名を列挙するなら、bash上で compgen -c | sort -u を使います。説明文からキーワードで探す場合は man -k キーワード です。どちらも環境に実際に入っているコマンドだけが対象になるため、この記事の早見表のような一般的な一覧と併用すると探しやすくなります。
ls -lの各列は何を表していますか
左から、権限(先頭1文字が種別、続く9文字が所有者・グループ・その他の読み書き実行)、ハードリンク数、所有者、所有グループ、サイズ、最終更新日時、名前の順です。サイズの単位は既定でバイトのため、KやMで読みたい場合は-hを追加してください。
ifconfigがcommand not foundになるのはなぜですか
net-toolsパッケージが既定でインストールされなくなったためです。現在の標準はipコマンドで、ip addr show が同じ用途にあたります。どうしても必要なら sudo apt install net-tools で導入できますが、新規の手順書はip系で書くことをおすすめします。
sudo chown -rがエラーになるのはなぜですか
chownの再帰オプションは大文字の-Rであり、小文字の-rは定義されていないためです。GNU coreutilsのマニュアルでも再帰指定は-Rと–recursiveのみが挙げられています。sudo chown -R user:group dir と大文字で指定してください。
コマンドプロンプトのコマンドはLinuxでも使えますか
dirやcopyなどWindows固有のコマンドはLinuxでは動きません。ただしcdのように名前が共通のものもあります。前章の対応表で置き換えるか、WSL2でLinux環境そのものを用意する方法があります。