Linuxコマンド入門:エンジニアが毎日使う基本コマンド30選と使い方
by あくえり
#Linux
#コマンド
#ターミナル
#シェル
#Ubuntu
目次
Linuxコマンドを覚えるべき理由
Web開発やサーバー管理の現場では、LinuxコマンドはGUIアプリよりも速く・正確に操作を行うための必須スキルです。クラウドサーバー(AWS EC2、GCPなど)のほとんどはLinuxで動いており、SSH接続した後はコマンドラインのみで作業します。
本記事ではUbuntu 24.04 LTS環境を前提に、実際の入出力例を交えながら30コマンドを解説します。
ファイル操作
ls — ディレクトリの内容を表示
ls # カレントディレクトリの一覧
ls -l # 詳細表示(権限・サイズ・日時)
ls -la # 隠しファイルも含めて詳細表示
ls -lh # ファイルサイズを人間が読みやすい単位で表示
ls /var/log # 指定ディレクトリの一覧
# 出力例(ls -lh)
# drwxr-xr-x 2 ubuntu ubuntu 4.0K Feb 19 10:30 src
# -rw-r--r-- 1 ubuntu ubuntu 12K Feb 19 09:15 package.json
cd — ディレクトリを移動
cd /var/www/html # 絶対パスで移動
cd src # 相対パスで移動
cd .. # 一つ上のディレクトリへ
cd ~ # ホームディレクトリへ
cd - # 直前のディレクトリへ戻る
pwd — 現在のディレクトリを表示
pwd
# /home/ubuntu/projects/myapp
mkdir — ディレクトリを作成
mkdir logs # ディレクトリを作成
mkdir -p src/components/ui # 中間ディレクトリも含めて一括作成
mkdir -m 755 public # 作成と同時にパーミッションを指定
cp — ファイル・ディレクトリをコピー
cp file.txt backup.txt # ファイルをコピー
cp -r src/ src_backup/ # ディレクトリを再帰的にコピー
cp -p file.txt /tmp/ # タイムスタンプ・権限を保持してコピー
cp *.log /var/log/archive/ # ワイルドカードでまとめてコピー
mv — ファイル・ディレクトリを移動・リネーム
mv old_name.txt new_name.txt # リネーム
mv file.txt /tmp/ # /tmp/へ移動
mv src/ /var/www/html/ # ディレクトリを移動
rm — ファイル・ディレクトリを削除
rm file.txt # ファイルを削除
rm -r old_directory/ # ディレクトリを再帰的に削除
rm -f file.txt # 確認なしで強制削除
rm -rf /tmp/build/ # 再帰的かつ強制削除(注意して使う)
rm -rf /は絶対に実行しないでください。システム全体が破壊されます。
find — ファイルを検索
find . -name "*.log" # カレント以下でログファイルを検索
find /var -name "*.conf" -type f # /var以下の設定ファイルを検索
find . -mtime -7 # 7日以内に更新されたファイル
find . -size +10M # 10MB以上のファイル
find . -name "*.tmp" -delete # 見つかったtmpファイルを削除
テキスト処理
cat — ファイルの内容を表示
cat /etc/os-release # ファイルを表示
cat file1.txt file2.txt # 複数ファイルを連結して表示
cat -n access.log # 行番号付きで表示
head / tail — 先頭・末尾を表示
head -n 20 access.log # 先頭20行を表示
tail -n 50 error.log # 末尾50行を表示
tail -f /var/log/nginx/access.log # リアルタイムで追記を監視(ログ監視に必須)
grep — パターンを検索
grep "ERROR" app.log # ERRORを含む行を表示
grep -i "error" app.log # 大文字小文字を無視して検索
grep -n "404" access.log # 行番号付きで表示
grep -r "TODO" src/ # ディレクトリを再帰的に検索
grep -v "DEBUG" app.log # DEBUGを含まない行を表示
grep -c "POST" access.log # マッチした行数だけ表示
# パイプと組み合わせた実用例
cat access.log | grep "2026-02-19" | grep "500"
# 2月19日の500エラーのみ抽出
sed — テキストの置換・加工
# ファイル内の文字列を置換して表示
sed 's/foo/bar/g' config.txt
# ファイルを直接書き換える(-i オプション)
sed -i 's/localhost/192.168.1.10/g' config.txt
# 特定の行を削除(2行目を削除)
sed -i '2d' file.txt
# 空行を削除
sed '/^$/d' file.txt
awk — 列の抽出と集計
# スペース区切りの2列目を表示
awk '{print $2}' data.txt
# :(コロン)区切りで1列目と3列目を表示
awk -F: '{print $1, $3}' /etc/passwd
# アクセスログからステータスコード別に集計
awk '{print $9}' access.log | sort | uniq -c | sort -rn
# 出力例:
# 1234 200
# 56 404
# 12 500
# 条件付き処理(3列目が1000以上の行を表示)
awk '$3 >= 1000 {print}' data.txt
wc — 行数・単語数・文字数を数える
wc -l file.txt # 行数
wc -w file.txt # 単語数
wc -c file.txt # バイト数
# ログのエラー件数を数える
grep "ERROR" app.log | wc -l
プロセス管理
ps — プロセス一覧を表示
ps aux # 全プロセスを表示
ps aux | grep nginx # nginxのプロセスを検索
ps -ef --forest # 親子関係をツリー表示
# 出力例(ps aux | grep node):
# ubuntu 1234 0.5 2.3 512000 45000 ? Ssl 10:30 0:05 node server.js
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
kill / killall — プロセスを終了
kill 1234 # PID 1234のプロセスに SIGTERM を送る
kill -9 1234 # 強制終了(SIGKILL)
killall nginx # 名前でプロセスを終了
top / htop — リソース使用状況をリアルタイム表示
top # CPU・メモリ使用状況をリアルタイム表示
htop # topの改良版(インタラクティブ操作可能)
top実行中のキーショートカット: qで終了、kでプロセスを終了、Mでメモリ順にソート。
df / du — ディスク使用状況を確認
df -h # ファイルシステムのディスク使用量
du -sh /var/log/ # /var/logの合計サイズ
du -sh /var/log/* | sort -rh # サブディレクトリを大きい順にソート
# 出力例(df -h):
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 12G 36G 25% /
ネットワーク
curl — HTTPリクエストを送信
# GETリクエスト
curl https://api.example.com/users
# レスポンスをファイルに保存
curl -o output.json https://api.example.com/data
# POSTリクエスト(JSON)
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "田中", "email": "tanaka@example.com"}'
# レスポンスヘッダも表示
curl -i https://example.com
# Basic認証
curl -u username:password https://api.example.com/private
ssh — リモートサーバーに接続
# パスワード認証でSSH接続
ssh ubuntu@192.168.1.10
# 秘密鍵を指定してSSH接続
ssh -i ~/.ssh/my_key.pem ubuntu@ec2-12-34-56-78.ap-northeast-1.compute.amazonaws.com
# ポートフォワード(ローカルの3000番をリモートの3000番に転送)
ssh -L 3000:localhost:3000 ubuntu@192.168.1.10
# リモートのコマンドを実行して終了
ssh ubuntu@192.168.1.10 "sudo systemctl status nginx"
scp — ファイルをSSH経由でコピー
# ローカル→リモート
scp app.tar.gz ubuntu@192.168.1.10:/tmp/
# リモート→ローカル
scp ubuntu@192.168.1.10:/var/log/nginx/error.log ./
# ディレクトリごと転送
scp -r ./dist/ ubuntu@192.168.1.10:/var/www/html/
wget — ファイルをダウンロード
wget https://example.com/file.tar.gz
wget -O myfile.tar.gz https://example.com/file.tar.gz # ファイル名を指定
wget -c https://example.com/large.iso # 中断からの再開
権限管理
chmod — ファイルの権限を変更
# 数値で指定(オーナー:グループ:その他 の順に rwx を 4+2+1 で表す)
chmod 644 file.txt # rw-r--r-- (オーナー読み書き、他は読み取りのみ)
chmod 755 script.sh # rwxr-xr-x (オーナーは実行可、他は読み取り+実行)
chmod 600 private.key # rw------- (オーナーのみ読み書き)
# シンボルで指定
chmod +x deploy.sh # 実行権限を全員に追加
chmod u+x,g-w file.txt # オーナーに実行権限追加、グループから書き込み権限削除
# ディレクトリに再帰的に適用
chmod -R 755 /var/www/html/
chown — ファイルのオーナーを変更
chown ubuntu file.txt # オーナーをubuntuに変更
chown ubuntu:www-data file.txt # オーナーとグループを変更
chown -R www-data:www-data /var/www/html/ # 再帰的に変更
便利なコマンド
history — コマンド履歴を表示
history # 全履歴を表示
history | tail -20 # 直近20件を表示
history | grep ssh # sshを含むコマンドを検索
!! # 直前のコマンドを再実行
!ssh # sshから始まる最後のコマンドを再実行
tar — アーカイブの作成・展開
# tarボール(.tar.gz)を作成
tar czf archive.tar.gz /path/to/directory
# 展開
tar xzf archive.tar.gz
# 内容を確認(展開しない)
tar tzf archive.tar.gz
# 特定のディレクトリに展開
tar xzf archive.tar.gz -C /opt/
alias — コマンドの省略形を定義
# エイリアスを設定(一時的、セッションが終わると消える)
alias ll='ls -lah'
alias gs='git status'
alias dc='docker compose'
# 永続的にする場合は ~/.bashrc または ~/.zshrc に追記
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc
新しいLinuxの教科書
Linuxコマンドラインの基礎から実践まで体系的に学べる定番書。シェルスクリプトの書き方やパーミッションの仕組みまで丁寧に解説されています。
¥2,860 Amazonで見る
※ アフィリエイトリンクを含みます
Linux Command Line and Shell Scripting Bible
シェルスクリプトの自動化を徹底的に学べる1冊。bashスクリプトでのファイル操作・テキスト処理・プロセス管理の実践例が豊富。
¥4,180 Amazonで見る
※ アフィリエイトリンクを含みます
まとめ
30コマンドを一覧で振り返ります。
| カテゴリ | コマンド |
|---|---|
| ディレクトリ操作 | ls, cd, pwd, mkdir |
| ファイル操作 | cp, mv, rm, find |
| テキスト処理 | cat, head, tail, grep, sed, awk, wc |
| プロセス管理 | ps, kill, top, df, du |
| ネットワーク | curl, ssh, scp, wget |
| 権限 | chmod, chown |
| その他 | history, tar, alias |
コマンドは「暗記」するよりも「繰り返し使う」ことで身につきます。まずls、cd、grepの3つを自在に使えるようになることから始めてみましょう。