Linuxとコマンドラインの操作は、エンジニアにとって避けては通れない必須スキルです。本記事では、Linux基本コマンド・シェルスクリプト・ファイル操作・パーミッション・プロセス管理・ネットワークツールを、エンジニア初心者でも理解できるように丁寧に解説します。
なぜエンジニアはLinuxを学ぶべきか
世界のサーバーのほぼすべてはLinux(またはUnix系OS)で動いています。AWSのEC2・Dockerコンテナ・GitHubのCI/CDパイプラインも内部はLinuxです。コマンドライン操作ができないと、本格的なバックエンド開発・インフラ構築・DevOpsは難しいのが現実です。
基本コマンド一覧
ディレクトリ・ファイル操作
# 現在のディレクトリを表示
pwd
# ディレクトリ一覧表示
ls -la # 隠しファイル含む詳細表示
# ディレクトリ移動
cd /home/user/projects
cd .. # 親ディレクトリへ
cd ~ # ホームディレクトリへ
# ディレクトリ作成
mkdir my-project
mkdir -p parent/child/grandchild # 再帰的に作成
# ファイルコピー・移動・削除
cp source.txt dest.txt
cp -r source_dir/ dest_dir/ # ディレクトリのコピー
mv old_name.txt new_name.txt
rm file.txt
rm -rf directory/ # ディレクトリごと削除(注意)
# ファイル内容表示
cat file.txt
less file.txt # ページネーション付き表示
head -n 20 file.txt # 先頭20行
tail -f /var/log/app.log # リアルタイムでログ監視
検索・テキスト処理
# ファイル検索
find . -name "*.py" -type f
find /var/log -name "*.log" -mtime -7 # 7日以内に更新
# テキスト検索(grep)
grep "error" app.log
grep -r "TODO" ./src/ # ディレクトリ再帰検索
grep -n "function" main.py # 行番号付き
# 置換(sed)
sed 's/old/new/g' file.txt
sed -i 's/http:/https:/g' config.yml # ファイルを直接書き換え
# 列処理(awk)
awk '{print $1, $3}' access.log # 1列目と3列目を表示
awk -F',' '{sum += $2} END {print sum}' data.csv
パーミッション(権限)管理
# パーミッション確認
ls -l file.sh
# -rwxr-xr-- 1 user group 1234 May 3 10:00 file.sh
# 読み取り(r=4) 書き込み(w=2) 実行(x=1)
# パーミッション変更
chmod 755 script.sh # 所有者:rwx、グループ:r-x、その他:r-x
chmod +x script.sh # 実行権限を追加
chmod 600 .env # 秘密ファイルは所有者のみ読み書き
# 所有者変更
chown user:group file.txt
chown -R nginx:nginx /var/www/html/
プロセス管理
# プロセス一覧
ps aux
ps aux | grep node # Node.jsプロセスを確認
# リソース使用状況リアルタイム監視
top
htop # より見やすいtop(要インストール)
# プロセス終了
kill -9 1234 # PID 1234を強制終了
pkill -f node # 'node'を含むプロセスをすべて終了
# バックグラウンド実行
nohup ./server.sh &
# プロセスIDを確認
echo $!
ネットワークコマンド
# 接続確認
ping google.com
curl -I https://tech-athletes.com # HTTPレスポンスヘッダー確認
# ポート確認
netstat -tlnp # リスニングポートを確認
ss -tlnp # netstatの現代版(高速)
# ファイル転送(SSH)
scp local.txt user@server:/home/user/
rsync -avz ./src/ user@server:/var/www/app/
シェルスクリプト入門
#!/bin/bash
# deploy.sh - シンプルなデプロイスクリプト
set -e # エラーで即時終了
set -u # 未定義変数の使用でエラー
APP_DIR="/var/www/myapp"
BACKUP_DIR="/var/backups/myapp"
echo "=== デプロイ開始 ==="
# バックアップ作成
echo "バックアップ中..."
cp -r $APP_DIR $BACKUP_DIR/$(date +%Y%m%d_%H%M%S)
# 最新コードを取得
cd $APP_DIR
git pull origin main
# 依存関係インストール&ビルド
pnpm install --frozen-lockfile
pnpm build
# サービス再起動
systemctl restart myapp
echo "=== デプロイ完了 ==="
まとめ:Linuxコマンド習得のロードマップ
Step 1(初週):ls・cd・mkdir・cp・mv・rm・cat・grepをマスター
Step 2(2週目):パーミッション・プロセス管理・find・sedを習得
Step 3(1ヶ月):シェルスクリプト・cron・SSH・ネットワークコマンドを実践
Step 4(実践):DockerとAWS EC2上でLinux環境を本番運用