Linux: フェーズ1ミニプロジェクト — 個人開発環境の構築
これはフェーズ1の総合プロジェクトです。最初の5レッスンの内容 — ファイル操作、ディレクトリナビゲーション、ターミナルショートカット — を応用して、ゼロから実用的で整理された個人Linux開発環境を構築します。
📋 前提条件:まず以下を完了していること
- レッスン1:Linux入門
- レッスン2:Linuxのインストール
- レッスン3:ターミナルの基礎
- レッスン4:ファイルシステムのナビゲーション
- レッスン5:ファイルとディレクトリの操作
1. このレッスンで学ぶこと
- プロジェクトディレクトリ構造の設計
- シェルプロンプトのカスタマイズ(PS1)
- エイリアスとショートカットコマンド
- 開発言語ランタイムのインストール
- .bashrc設定ファイルの管理
2. 小明の「散らかった環境」ストーリー
(1) 悩み:ファイルが散乱、探すのが宝探し状態
小明はLinuxを3ヶ月使っていましたが、毎回のセッションは前回より苦痛でした:
- 作成したファイルは
~ホームディレクトリに散在 - ログを確認するたびに長いコマンドを入力
- Javaバージョンを確認しようと
java -versionを実行するとcommand not found— JDKはインストール済みなのにPATHに登録されていないことも知らない
(2) 標準化の解決策
小明はフェーズ1のスキルを使って10分で開発環境を整理することにしました:標準ディレクトリ + 実用的なエイリアス + ランタイムインストール。その結果、ターミナルコマンドの入力が10キーから2キーに減りました。
(3) 得られるもの:秩序がもたらす効率
標準化された開発環境により、小明は「どこに何があるか考える」必要がなくなりました — 固定ディレクトリ構造、クイックコマンドエイリアス、すぐに使える開発言語環境により、毎日30分以上節約できています。
3. 知識ポイント
(1) 標準プロジェクトディレクトリ構造
良い開発環境はディレクトリ構造から始まります。おすすめの開発者用レイアウト:
~/projects/ # All projects
├── web/ # Web projects
│ ├── frontend/
│ └── backend/
├── scripts/ # Shell scripts
├── learning/ # Learning experiments
├── notes/ # Notes and documentation
└── tmp/ # Temporary files (can be cleaned anytime)
(2) PS1 — シェルプロンプトのカスタマイズ
PS1(Prompt String 1)環境変数は、ターミナルプロンプトの表示を制御します。
# Default format
# user@host:current_dir$
# Common customizations
export PS1='\u@\h:\w\$ ' # user@host:/path/to/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ ' # With color
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ ' # Two-line display
ℹ️ 注意:PS1のエスケープシーケンスで、
\uはユーザー名、\hはホスト名、\wはフルパス、\Wは現在のディレクトリ名のみを表示します。2行プロンプト(PS1に\nを追加)は、パスが長い場合でも入力スペースを圧縮しません — 非常におすすめです。
よく使うエスケープシーケンス:
| エスケープ | 意味 |
|---|---|
\u |
現在のユーザー名 |
\h |
ホスト名(短形式) |
\w |
現在の作業ディレクトリ(フルパス) |
\W |
現在のディレクトリ名(最後の要素のみ) |
\d |
日付 |
\t |
時刻(24時間形式) |
\$ |
#(root)または$(一般ユーザー) |
\n |
改行 |
(3) alias — コマンドにニックネームを付ける
# Basic syntax
alias shortname='long-command'
# Common aliases
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'
> 💡 ヒント:エイリアスの最大の価値は、頻繁に使う長いコマンドを2〜3文字に短縮すること — `ll`で`ls -la`、`..`で`cd ..`のように。最初は3〜5個の最もよく使うエイリアスから始め、一度に数十個設定するのではなく、徐々に増やしましょう。
(4) .bashrc設定ファイル
~/.bashrcはbash起動時に読み込まれる設定ファイルです。新しいターミナルウィンドウを開くたび、bashは.bashrc内のすべてのコマンドを実行します。
# Edit .bashrc
nano ~/.bashrc
# Apply changes immediately (without closing and reopening the terminal)
source ~/.bashrc
(5) ▶ サンプル:標準ディレクトリ構造の作成
# Go to home directory
cd ~
# Create and verify standard directories
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
# View the result
ls -la ~/projects
出力:
TEXTtotal 28 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web
(6) ▶ サンプル:PS1プロンプトのカスタマイズ(一時的)
# Try different prompts in the current terminal
export PS1='\u:\w\$ '
# Result: alice:/home/alice$
export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# Result: (green) username@hostname
# /current/path$
出力:
TEXTalice:/home/alice$ alice@ubuntu /home/alice$
(7) ▶ サンプル:エイリアスの追加(永続的)
# Edit .bashrc
echo '# My custom aliases' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc
# Apply changes
source ~/.bashrc
# Test
ll
myip
出力:
TEXTtotal 48 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. -rw-r--r-- 1 alice alice 3771 Jul 8 10:23 .bashrc drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 projects 203.0.113.42
(8) ▶ サンプル:PythonとNode.jsのインストール
# Install Python3 and pip
sudo apt update
sudo apt install -y python3 python3-pip
# Verify
python3 --version
# Output: Python 3.10.12
# Install Node.js (from NodeSource official repository)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Verify
node --version
# Output: v20.12.0
npm --version
出力:
TEXTPython 3.10.12 v20.12.0 10.5.0
(9) ▶ サンプル:環境の準備確認
echo "=== Operating System ===" && lsb_release -d
echo "=== Home Directory Structure ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== Aliases ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1
出力:
TEXT=== Operating System === Description: Ubuntu 22.04.3 LTS === Home Directory Structure === total 28 drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web === Shell === /bin/bash === Python === Python 3.10.12 === Node.js === v20.12.0 === Aliases === alias cls='clear' alias la='ls -A' alias ll='ls -la' === PS1 === \[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$
(10) ▶ 総合例:開発環境セットアップスクリプトの完成
このスクリプトを~/setup-dev.shとして保存し、1回実行するだけで全設定が完了します:
#!/bin/bash
set -e # Exit immediately on error
echo "Setting up Linux development environment..."
# 1. Create directory structure
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ Directory structure created"
# 2. Configure .bashrc aliases and PS1
cat >> ~/.bashrc << 'EOF'
# ---- Custom configuration starts ----
# Aliases
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'
# PS1 prompt
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '
# ---- Custom configuration ends ----
EOF
echo "✅ .bashrc configured"
# 3. Install development tools
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ Development tools installed"
# 4. Verify
source ~/.bashrc
echo "=== Environment Verification ==="
echo "Python: $(python3 --version 2>/dev/null || echo 'not installed')"
echo "Node.js: $(node --version 2>/dev/null || echo 'not installed')"
echo "Git: $(git --version 2>/dev/null || echo 'not installed')"
echo "✅ All done! Run source ~/.bashrc or reopen your terminal"
# Run the script
chmod +x ~/setup-dev.sh
./setup-dev.sh
❓ よくある質問
Q:
.bashrcと.bash_profileの違いは? A: \1
Q: エイリアスは再起動後も有効ですか? A: 現在のターミナルセッションでのみ有効です(一時的)。永続化するには、
aliasコマンドを~/.bashrcに記述する必要があります。
Q: 全ユーザーでエイリアスを有効にするには? A: グローバル設定
/etc/bash.bashrcまたは/etc/profile.d/custom.shに記述します(root権限が必要)。
Q: PS1プロンプトにGitブランチを表示できますか? A: はい。
__git_ps1関数(bash-completionが必要)を使用するか、PS1に$(git branch 2>/dev/null | grep '*' | sed 's/* //')を追加します。
Q: 環境が壊れた場合の復元方法は? A:
.bashrcが誤設定された場合、bash --noprofile --norcでベアbashを起動して編集・修正します。または事前にcp ~/.bashrc ~/.bashrc.backupでバックアップを取っておきます。
📖 まとめ
- 標準ディレクトリ構造:
~/projects/{web,scripts,learning,notes,tmp} - PS1でプロンプトをカスタマイズ、
aliasでコマンドに短い名前を付ける .bashrcが永続設定の場所、変更後はsource ~/.bashrcを実行- 開発ランタイムのインストール:
sudo apt install python3 nodejs setup-dev.shスクリプトで環境をワンクリック設定可能(シェルスクリプト学習の意義)
📝 練習問題
- 基本(難易度 ⭐):個人の開発ディレクトリ構造を作成(最低projects/scripts/learning)、
.bashrcに3つの便利なエイリアス(例:ll、..、cls)を設定する - 中級(難易度 ⭐⭐):PS1をカスタマイズしてユーザー名、現在のディレクトリ、Gitブランチを表示し、開発言語ランタイム(PythonまたはNode.js)をインストールする
- 上級(難易度 ⭐⭐⭐):
~/projects/scripts/info.shスクリプトを作成 — システムバージョン、カーネル、ディスク、メモリ情報を出力し、set -eエラーハンドリングとフォーマット済み出力を実装する