TechBlog

Linuxコマンド入門:エンジニアが毎日使う基本コマンド30選と使い方

by あくえり
#Linux #コマンド #ターミナル #シェル #Ubuntu
Linuxコマンド入門
目次

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コマンドラインの基礎から実践まで体系的に学べる定番書。シェルスクリプトの書き方やパーミッションの仕組みまで丁寧に解説されています。

※ アフィリエイトリンクを含みます

Linux Command Line and Shell Scripting Bible

シェルスクリプトの自動化を徹底的に学べる1冊。bashスクリプトでのファイル操作・テキスト処理・プロセス管理の実践例が豊富。

※ アフィリエイトリンクを含みます

まとめ

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

コマンドは「暗記」するよりも「繰り返し使う」ことで身につきます。まずlscdgrepの3つを自在に使えるようになることから始めてみましょう。

共有: