システム開発・AI開発では Linux が標準環境です.
- サーバーの大半がLinux
- 開発ツールの互換性が高い
- Docker・AI系ライブラリとの相性が良い
- 無料で利用可能
MacはUnix系OSでありLinuxと思想・構造が近いため開発用途でよく使われます.
一方でWindowsはLinuxと差異が大きく,環境差によるトラブルが増えがちです(例:パス構造,パッケージ管理,シェル仕様).
そのため本講義では Linux環境前提 で進めます.
目的:
- 環境差異によるトラブル削減
- AIツール活用の最大化
- 開発コスト低下
WSL(Windows Subsystem for Linux)を利用します.
- PowerShellを管理者で起動
- 実行:
wsl --install- 再起動後,Ubuntu初期設定
確認:
uname -aCLI(Command Line Interface)は,ターミナル上で文字で操作する方法です.
開発現場ではGUIよりも高速・再現性が高いため,まずは基本コマンドを押さえます.
pwd
ls
ls -lapwd: 現在いるディレクトリを表示ls: ファイル/フォルダ一覧を表示ls -la: 隠しファイルも含めて詳細表示
cd /path/to/dir
cd ..
cd ~cd: ディレクトリ移動cd ..: 1つ上の階層へcd ~: ホームディレクトリへ
mkdir practice
touch memo.txt
cp memo.txt memo_backup.txt
mv memo_backup.txt archive.txt
rm archive.txtmkdir: フォルダ作成touch: 空ファイル作成cp: コピーmv: 移動/名前変更rm: 削除(元に戻せないので注意)
cat memo.txt
head -n 5 memo.txt
tail -n 5 memo.txtcat: 全文表示head: 先頭だけ表示tail: 末尾だけ表示
Tabキー: ファイル名・コマンド補完↑ / ↓キー: コマンド履歴Ctrl + C: 実行中コマンドの停止
以下をターミナルで実行してください(~/cli_practice を作業場所にする).
~/cli_practiceディレクトリを作成し,そこへ移動する.note1.txtとnote2.txtを作成する.note1.txtをbackup_note1.txtとしてコピーする.note2.txtをrenamed_note2.txtにリネームする.ls -laでファイル一覧を表示し,結果を確認する.backup_note1.txtを削除する.- 最後に
pwdとlsを実行して,現在地と残っているファイルを確認する.
発展課題:
cat/head/tailの違いを,自分の言葉で説明する.rmを安全に使うためのルールを3つ考える.
~/cli_practiceディレクトリを作成し,そこへ移動する.
mkdir ~/cli_practice
cd ~/cli_practicenote1.txtとnote2.txtを作成する.
touch note1.txt note2.txtnote1.txtをbackup_note1.txtとしてコピーする.
cp note1.txt backup_note1.txtnote2.txtをrenamed_note2.txtにリネームする.
mv note2.txt renamed_note2.txtls -laでファイル一覧を表示し,結果を確認する.
ls -labackup_note1.txtを削除する.
rm backup_note1.txt- 最後に
pwdとlsを実行して,現在地と残っているファイルを確認する.
pwd
ls発展課題 1 の解答例:
cat: ファイル全体を表示する.head: ファイル先頭(デフォルト10行)だけを表示する.tail: ファイル末尾(デフォルト10行)だけを表示する.
発展課題 2 の解答例:
rm実行前にpwdとlsで場所と対象ファイルを確認する.- ワイルドカード(
*)を使うときは対象が想定通りか先にlsで確認する. - 管理者権限の
sudo rmは原則使わず,本当に必要なときだけ使う.
rsync は,ファイルを差分で同期できるコマンドです.
バックアップや,ローカル-リモート間の転送でよく使います.
rsync -avh ./data/ ./backup/data/-a: 属性を保って再帰コピー-v: 詳細表示-h: 人が読みやすい単位で表示
IPアドレス指定でマシン間転送する例(SSH経由):
# このマシン -> リモートマシン
rsync -avh ./data/ user@192.168.1.10:/home/user/data/
# リモートマシン -> このマシン
rsync -avh user@192.168.1.10:/home/user/data/ ./data_from_remote/user@192.168.1.10: リモートのユーザー名とIPアドレス:の右側がリモート側パス
aria2c は分割ダウンロード対応のCLIツールです.
aria2c -x10 -s10 -k1M "https://example.com/large_file.zip"-x10: 1サーバーあたり最大10接続-s10: 10分割で取得-k1M: 1MB単位で分割
大きいファイルを安定して速く落としたいときに有効です.
tmux を使うと,1つのSSH/ターミナル接続内で複数セッションを管理できます.
接続が切れても作業を継続しやすく,長時間ジョブに向いています.
tmux new -s worknew -s work:workという名前で新規セッション開始- ctrl + b, d: セッションをデタッチ(切り離す)
- ctrl + b, w: セッション一覧を表示,↑/↓で選択してEnterでアタッチ(再接続)
sudo は管理者権限が必要なコマンドを一時的に実行するために使います.
sudo apt update
sudo apt install git注意:
- 必要なときだけ使う
- コマンド内容を理解してから実行する
- コピーしたコマンドをそのまま
sudoで実行しない
df はファイルシステム全体の空き容量を確認するコマンドです.
df -h-h: GB/MBなど読みやすい単位で表示- 容量不足のトラブル切り分けで最初に確認すると良い
シェル起動時に読み込まれるユーザー設定ファイルです.
エイリアス,環境変数,PATH追加などをここに書くと,毎回自動で反映されます.
使い分け:
- macOS標準(zsh):
~/.zshrc - Ubuntu/WSL標準(bash):
~/.bashrc
基本操作:
# 内容確認
cat ~/.zshrc # bashの場合は ~/.bashrc
# 編集(好きなエディタでOK)
code ~/.zshrc # bashの場合は ~/.bashrc
# 変更を現在のシェルへ反映
source ~/.zshrc # bashの場合は ~/.bashrcよく使う設定例:
# エイリアス
alias ll='ls -la'
alias gs='git status'
# PATH追加(例: ローカルbin)
export PATH="$HOME/.local/bin:$PATH"ポイント:
- 設定を保存しただけでは現在のターミナルには反映されない
sourceで即時反映するか,ターミナルを再起動する- 文法ミスがあるとシェル起動時にエラーになるため,少しずつ追記して確認する