Linuxの基本コマンドは、ナビゲーション(pwd、ls、cd)、ファイル操作(cp、mv、rm、mkdir)、権限(chmod、chown)、パッケージ(apt)、プロセス(ps、top、kill)、検索とテキスト処理(find、grep、sed、awk)、ネットワーク(ip、ss、curl)、サービス(systemctl、journalctl)のグループに分けられます。以下の表は、コマンドと使用例をまとめ、ターミナルでの日常作業の大部分をカバーします。
このLinuxコマンド一覧は、作業内容ごとにまとめています。ファイルを探す、パッケージを入れる、固まったプロセスを止める、ログから1行を抜き出す、ポートを確認する、といった場面で使えます。コマンドはUbuntuとDebianで確認しています。ほとんどは他のディストリビューションでも使えますが、違いは主にパッケージマネージャです。
ヘルプとヒント
| コマンド | 内容 |
man ls | コマンドの完全なマニュアル。終了は q、検索は /単語 |
ls --help | オプションの簡単な説明 |
type cd | 組み込みコマンド、エイリアス、ファイルのどれかを表示 |
which python3 | 実行ファイルのパス |
history | コマンド履歴。!123 で123番のコマンドを再実行 |
Ctrl+R | 履歴の検索 |
Ctrl+C / Ctrl+D | コマンドの中断 / シェルの終了 |
ファイルシステムの移動
| コマンド | 内容 |
pwd | 現在のディレクトリ |
ls -la | 隠しファイルを含むすべてのファイルを、権限とサイズ付きで表示 |
ls -lh | サイズを読みやすい単位(K、M、G)で表示 |
ls -lt | 更新日時の順に並べる |
cd /var/log | 絶対パスで移動 |
cd .. / cd ~ / cd - | 1つ上 / ホーム / 直前のディレクトリ |
tree -L 2 | 2階層のディレクトリツリーを表示(tree パッケージ) |
ファイルとディレクトリの操作
| コマンド | 内容 |
touch file.txt | 空のファイルを作成、または更新日時を変更 |
mkdir -p a/b/c | 親ディレクトリも含めて作成 |
cp file.txt backup.txt | ファイルをコピー |
cp -r src/ dst/ | ディレクトリを再帰的にコピー |
mv old.txt new.txt | 名前の変更または移動 |
rm file.txt | ファイルを削除(ゴミ箱には入らない) |
rm -r dir/ | ディレクトリを中身ごと削除。-f は確認なしで実行するため注意 |
rmdir dir | 空のディレクトリを削除 |
ln -s /opt/app/current app | シンボリックリンクを作成 |
stat file.txt | サイズ、権限、inode、日時などの詳細 |
file image.bin | 内容からファイルの種類を判定 |
内容の表示
| コマンド | 内容 |
cat file | ファイル全体を表示 |
less file | ページ単位で表示。検索は /、終了は q |
head -n 20 file | 先頭20行 |
tail -n 50 file | 末尾50行 |
tail -f /var/log/syslog | ファイルをリアルタイムで監視 |
wc -l file | 行数を数える |
diff a.conf b.conf | 2つのファイルの差分 |
権限と所有者
| コマンド | 内容 |
chmod +x script.sh | 実行を許可 |
chmod 644 file | rw-r--r--:所有者は読み書き、その他は読み取りのみ |
chmod 755 dir | rwxr-xr-x:ディレクトリやスクリプトでよく使う |
chmod 600 ~/.ssh/id_ed25519 | 所有者だけがアクセス可能:秘密鍵向け |
sudo chown www-data:www-data file | 所有者とグループを変更 |
sudo chown -R alice /srv/app | 所有者を再帰的に変更 |
id | 自分のUID、GID、所属グループ |
sudo -i | rootのシェルを起動 |
sudo usermod -aG docker alice | ユーザーをグループに追加 |
パッケージ(apt、DebianとUbuntu)
| コマンド | 内容 |
sudo apt update | リポジトリからパッケージの一覧を更新 |
sudo apt upgrade | インストール済みのパッケージを更新 |
sudo apt install nginx | パッケージをインストール |
sudo apt remove nginx | 設定を残して削除。purge は設定も含めて削除 |
sudo apt autoremove | 不要になった依存パッケージを削除 |
apt search htop | パッケージを検索 |
apt show nginx | 説明とバージョンを表示 |
dpkg -l | grep nginx | パッケージがインストールされているか確認 |
dpkg -L nginx | パッケージがインストールしたファイルの一覧 |
RHEL、Fedora、Rocky Linuxでは、同等のコマンドは dnf install、dnf remove、dnf upgrade、rpm -qa です。
環境とプロファイル
| コマンド | 内容 |
echo $PATH | シェルがプログラムを探すディレクトリ |
env | すべての環境変数 |
export APP_ENV=prod | 現在のセッションと子プロセスに変数を設定 |
alias ll='ls -la' | コマンドの短縮名 |
source ~/.bashrc | 再ログインせずにプロファイルを再読み込み |
crontab -e / crontab -l | cronジョブの編集 / 表示 |
プロセス
| コマンド | 内容 |
ps aux | すべてのプロセスをユーザー、CPU、メモリ付きで表示 |
ps aux | grep nginx | プロセスを探す |
pgrep -a nginx | 名前からPIDとコマンドラインを表示 |
top / htop | リアルタイムの負荷を表示 |
kill 1234 | プロセスに終了を要求(SIGTERM) |
kill -9 1234 | 強制終了(SIGKILL)。最終手段 |
pkill -f "python app.py" | コマンドラインの一致でプロセスを終了 |
command &、jobs、fg | バックグラウンド実行とジョブ管理 |
nohup ./job.sh & | ターミナルを閉じてもプロセスが継続 |
free -h | メモリとswapの状況 |
uptime | 稼働時間と平均負荷 |
strace -p 1234 | プロセスのシステムコールを表示 |
サービスとログ(systemd)
| コマンド | 内容 |
systemctl status nginx | サービスの状態と直近のログ行 |
sudo systemctl start|stop|restart nginx | 起動、停止、再起動 |
sudo systemctl reload nginx | 停止せずに設定を再読み込み |
sudo systemctl enable --now nginx | 自動起動を有効にして、すぐ起動 |
systemctl --failed | 失敗しているユニット |
journalctl -u nginx -f | サービスのログをリアルタイムで表示 |
journalctl -u nginx --since "1 hour ago" | 直近1時間のログ |
journalctl -p err -b | 起動してからのエラー |
ファイルの検索
| コマンド | 内容 |
find /var/log -name "*.log" | 名前で検索 |
find . -type f -mtime -1 | 過去1日以内に更新されたファイル |
find / -size +500M 2>/dev/null | 大きなファイルを探す。アクセスエラーは非表示 |
find . -name "*.tmp" -delete | 検索して削除 |
du -sh * | ディレクトリ内の各項目のサイズ |
df -h | ファイルシステムの空き容量 |
テキストの検索と処理:grep、sed、awk、jq
| コマンド | 内容 |
grep "error" app.log | 単語を含む行を表示 |
grep -i -n "error" app.log | 大文字小文字を区別せず、行番号付きで表示 |
grep -r "listen" /etc/nginx/ | ディレクトリを再帰的に検索 |
grep -v "DEBUG" app.log | 単語を含まない行を表示 |
grep -c "500" access.log | 一致した件数 |
grep -E "warn|error" app.log | 拡張正規表現を使用 |
sed 's/old/new/g' file | 置換して結果を表示 |
sed -i 's/8080/9090/' app.conf | ファイルを直接書き換え |
sed -n '10,20p' file | 10〜20行目を表示 |
awk '{print $1}' access.log | 各行の最初のフィールド |
awk -F: '{print $1}' /etc/passwd | ユーザー名の一覧(区切り文字は :) |
awk '$9 == 500' access.log | 9番目のフィールドが500の行 |
sort | uniq -c | sort -rn | 重複を数えて頻度順に並べる |
cut -d, -f2 data.csv | CSVの2列目 |
jq '.items[].name' data.json | JSONからフィールドを抽出 |
パイプラインの例:nginxへのリクエストが最も多い10個のIPアドレス。
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
リダイレクトとパイプ
| 書き方 | 内容 |
cmd > out.txt | 出力をファイルに書き込む(上書き) |
cmd >> out.txt | ファイルの末尾に追記 |
cmd 2> err.txt | エラー出力をファイルへ |
cmd > all.log 2>&1 | 出力とエラーを1つのファイルへ |
cmd1 | cmd2 | 1つ目のコマンドの出力を2つ目の入力に渡す |
cmd | tee out.txt | 画面に表示しつつファイルにも保存 |
cmd1 && cmd2 | 1つ目が成功したときだけ2つ目を実行 |
cmd1 || cmd2 | 1つ目が失敗したときだけ2つ目を実行 |
アーカイブ
| コマンド | 内容 |
tar -czf backup.tar.gz dir/ | まとめてgzipで圧縮 |
tar -xzf backup.tar.gz | 展開 |
tar -tzf backup.tar.gz | 中身を一覧表示 |
zip -r site.zip site/ / unzip site.zip | zip形式のアーカイブ |
ネットワーク
| コマンド | 内容 |
ip a | ネットワークインターフェースとIPアドレス |
ip r | ルーティングテーブル |
ping -c 4 8.8.8.8 | ホストに到達できるか確認 |
ss -tulpn | 開いているポートと、それを使用しているプロセス |
dig example.com / nslookup example.com | DNSの問い合わせ |
curl -I https://example.com | レスポンスヘッダーのみ表示 |
curl -s https://api.example.com | jq | APIにリクエストし、JSONを整形して表示 |
wget URL | ファイルをダウンロード |
traceroute example.com | ホストまでのパケットの経路 |
ssh user@host | サーバーに接続 |
ssh-keygen -t ed25519 | SSH鍵ペアを作成 |
scp file user@host:/tmp/ | ファイルをサーバーにコピー |
rsync -avz dir/ user@host:/srv/dir/ | ディレクトリを同期 |
sudo ufw status | ファイアウォールのルール |
システムとディスク
| コマンド | 内容 |
uname -a | カーネルとアーキテクチャ |
cat /etc/os-release | ディストリビューションとバージョン |
hostnamectl | ホスト名とシステム情報 |
lsblk | ディスクとパーティション |
sudo mount /dev/sdb1 /mnt | パーティションをマウント |
who / w | 現在ログインしているユーザー |
sudo reboot / sudo shutdown -h now | 再起動 / シャットダウン |
まとめ
日常の作業には、数十個のコマンドで十分です。ls、cd、cp、mv、rm、chmod、sudo、apt、ps、kill、systemctl、journalctl、grep、find、ss、curl、ssh などです。このチートシートを保存しておき、コマンドが自然に手に馴染むまで参照してください。各コマンドグループは、Linuxコースで実践を通して解説しています。
manやlessから抜けるにはどうすればいいですか?
qキーを押します。内容を検索するには、スラッシュに続けて単語を入力し、nで次の一致箇所に移動します。
vimエディタを終了するにはどうすればいいですか?
Escを押してから :q! と入力してEnterを押すと保存せずに終了します。:wq と入力すると保存して終了します。初心者はnanoでファイルを編集する方が簡単です。
rm -rf は何が危険なのですか?
確認なしで削除され、ゴミ箱にも入りません。パスを間違える(たとえば、アスタリスクの前に余計なスペースを入れる)と、意図しないディレクトリを消してしまうことがあります。実行前に ls でパスを確認してください。
直前のsudoつきコマンドを繰り返すにはどうすればいいですか?
sudo !! と入力します。シェルが直前のコマンド全体に置き換えます。
ターミナルで止まったコマンドを停止するにはどうすればいいですか?
Ctrl+Cで中断シグナルを送ります。反応しない場合は、別のターミナルで ps または pgrep を使ってPIDを探し、kill で終了させてください。