なぜ端末を使うのか
端末(端末アプリ、コンソール)は、GUIよりも速く、軽量で自動化に向いています。特に大量ファイルの一括処理や、ImageMagick・FFmpeg のようなコマンドライン向けツールを連携する場合、GUI を起動するオーバーヘッドを避けられます。
要点のまとめ:
- テキストは普遍的なインターフェースで、どの環境でも動く可能性が高い。
- macOS や Windows(WSL)でもほぼ同じ経験で使える。
- GUI で何度もクリックする作業は、ワイルドカードやパイプで一度に済ませられる。
重要: コマンドラインは強力だが、誤ったコマンドはデータ喪失を招く。必ずテストを怠らない。
基本の考え方(1行で定義)
- シェル: コマンドを受け取り、実行するプログラム。代表例は bash、zsh。
- カレントディレクトリ: 今操作している場所(pwd で確認)。
- パイプライン: 出力を別コマンドへつなぐ仕組み(|)。
- リダイレクト: 出力や入力をファイルへ向ける(> / <)。
基本コマンド: pwd, ls, cd, cat, less, rm
端末を起動すると、まずプロンプトが出ます。ホームディレクトリ(ユーザーの作業領域)にいることが多いです。Unix系ではドライブレターは無く、すべて /(ルート)から始まるツリー構造です。
- pwd — 現在のディレクトリを表示(Print Working Directory)
pwd
- ls — ディレクトリの中身を列挙
- ls -a: 隠しファイル(先頭が . のファイル)を表示
- ls -l: 所有者やパーミッションなど詳細を表示
- 組み合わせ例: ls -la
ls
ls -la
ls /etc
cd — ディレクトリ移動
- 絶対パス: cd /usr/bin
- 相対パス: cd pictures
- 上の階層へ: cd ..
- ホームへ戻る: cd
cat — ファイルを連結して標準出力に表示
cat hello.py
cat file1 file2
バイナリファイルに cat を使うと端末が乱れることがあるため注意。
- less(や more)— 大きなファイルをページングして閲覧
- スペースで前へ、b で後ろへ、/ で検索、q で終了
less /var/log/syslog
- rm — ファイル削除(危険)
rm file
rm -r directory # ディレクトリごと削除
重要: rm はゴミ箱を経由しない(デフォルト)。誤削除防止に
- rm -i(対話的確認)や
- 初めはゴミ箱ツール(trash-cli)を使うことを推奨します。
表示と検索の小ワザ
- タブ補完: ファイル名やコマンドの途中で Tab を押すと補完される。
- 履歴検索: Ctrl+R で以前のコマンドを逆順検索。
- パターン検索: grep コマンドでファイルや出力内を検索。
ps aux | grep 'sh'
プロセスの管理: プログラムを止める・裏へ回す
- Ctrl+C: フォアグラウンドのプロセスを中断してシェルに制御を返す。
- q: more/less のようなインタラクティブなビューアを終了。
- vim の終了: Esc → :q!(保存せず終了)
- & を付けるとバックグラウンド実行: sleep 30 &
long-running-command &
jobs # バックグラウンドの状態を確認
fg %1 # ジョブをフォアグラウンドに戻す
リダイレクトとパイプライン
: 出力をファイルに書き出す(上書き)
: 追記モードで出力をファイルに追加
- <: ファイルをコマンドの標準入力として使う
- |: コマンドA の出力をコマンドB の入力に渡す(パイプ)
ls > my_files.txt
cat < my_files.txt
ps aux | grep nginx
パイプラインを使うと、個別ツールを小さな部品として組み合わせ、柔軟なワークフローが作れます。
Linux コマンドラインは Linux だけではない
- macOS: Terminal.app や iTerm2 で同様のコマンドが使える(FreeBSD由来のユーティリティ差異はあるが大半は共通)。
- Windows: WSL(Windows Subsystem for Linux)で本物の Linux 環境を動かせる。
注意: コマンドやパッケージ管理(apt, yum, brew, pacman)はディストリビューションやOSによって違う。
実用例: ImageMagick と FFmpeg のワークフロー
画像や動画の一括変換は端末の得意分野です。GUIで一つずつやるよりも、ワイルドカードとパイプで高速に処理できます。以下は具体的な例と安全な実行のためのチェック項目です。
画像リサイズ例(25%に縮小):
magick resize 25% old_image.jpg new_image.jpg
バッチでフォルダ内の JPEG を 800px 幅に揃えて保存する例:
mkdir -p resized
for f in *.jpg; do
magick "$f" -resize 800 resized/"$f"
done
FFmpeg で MP4 を AVI に変換する基本例:
ffmpeg -i Big-buck-bunny_trailer.mp4 test.avi
FFmpeg のより現実的なコマンド例(ビットレートとエンコーダを指定):
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 23 -c:a aac -b:a 128k output.mp4
複数の画像を動画に変換する例:
ffmpeg -framerate 30 -i frames/frame%04d.png -c:v libx264 -pix_fmt yuv420p out.mp4
重要: 変換前に一度小さなサンプルで実行して、品質とファイルサイズを確認すること。
ImageMagick と FFmpeg を組み合わせる例
サムネイル作成パイプライン(JPEG を縮小して最適化):
magick input.jpg -resize 320x -quality 85 jpg:- | cjpeg -quality 85 > thumbnail.jpg
この例では ImageMagick でリサイズし、パイプで標準出力(jpg:-)を次の最適化ツールに渡す。
クイックチートシート(頻出コマンド)
pwd # 現在のディレクトリを表示
ls -la # ファイル一覧(隠しファイル、詳細表示)
cd ~/pictures # ディレクトリ移動
cat file.txt # ファイル表示
less file.log # 大きなファイルをページング
rm filename # ファイル削除(注意)
cp src dest # コピー
mv src dest # 名前変更 / 移動
mkdir -p dir # ディレクトリ作成
chmod 644 file # パーミッション変更
chown user:grp file # 所有者変更
ps aux | grep proc # プロセス検索
systemctl status nginx # systemd サービス確認(システムによる)
ロール別チェックリスト
開発者(Developer)
- Git の基本操作ができること(clone, commit, push)。
- ローカルで小さなスクリプトを書いてタスク自動化。
- テキスト編集は Vim/Neovim か VS Code のターミナルで。
システム管理者(SysAdmin)
- 権限(sudo)とログ確認(/var/log)に慣れる。
- サービス管理(systemctl、journalctl)とネットワーク診断(ss, netstat, ip)を習得。
- バックアップ手順とロールバック手順を文書化。
デザイナー/コンテンツ担当
- ImageMagick / FFmpeg の基本コマンドで一括処理。
- 原寸/サムネイルを分けて保存するワークフローを定義。
- 変換前に必ずオリジナルを保管。
ミニメソッド: 安全にファイルを操作する3ステップ
- 影響範囲を把握: ls, file, du で対象ファイルとサイズを確認。
- テスト実行: 小さなサンプルまたは –dry-run 相当で確認(ツールによる)。
- 本番実行: バックアップを作成し、本実行を行う。
例: 大量リネームを行う際は、まず echo でコマンドを表示して確認する。
for f in *.jpg; do
echo mv "$f" "new-$f"
done
よくある問題と対処法
- パーミッションエラー:
- sudo が必要か、ファイル所有者を確認(ls -l)。
- コマンドが見つからない:
- PATH の確認、パッケージがインストール済みか確認(apt、yum、brew 等)。
- 文字化け:
- 端末の文字エンコーディングを UTF-8 にする。
- 大量ファイル処理でメモリ不足:
- ストリーム処理で逐次処理するか、バッチを分割する。
いつ端末を使わない方が良いか(反例)
- 単発で写真を1枚だけトリミングするような軽微な作業は GUI の方が早い場合がある。
- 複雑な GUI ベースの編集(高度なレイヤー操作など)は専用アプリが向く。
- コマンドラインで扱うとリスクが高すぎる操作(データベースの生更新など)は専用ツールやトランザクションを使う。
トラブルシューティングの基本フロー(Mermaid)
flowchart TD
A[問題発生] --> B{エラーメッセージはあるか}
B -- はい --> C[エラーメッセージで検索]
B -- いいえ --> D[ログを確認(/var/log 等)]
C --> E{設定ミスか不足か}
D --> E
E -- 設定 --> F[設定ファイル修正・再起動]
E -- 不足 --> G[パッケージをインストール]
F --> H[再現テスト]
G --> H
H --> I[問題解決 or エスカレーション]
セキュリティ上の注意点
- sudo を乱用しない。必要な操作だけ昇格する。
- スクリプトにハードコードで資格情報を置かない。環境変数かシークレット管理を使う。
- リモート操作は SSH キーとパスフレーズで保護する。
ロールバックとインシデントの基本手順
- 影響範囲の特定(どのファイル/サービスが影響を受けたか)。
- 既存のバックアップを復元(テスト済みであることが前提)。
- 原因を分析し、恒久対応を計画。
- 関係者へ通知と事後レビュー。
互換性メモ(macOS / WSL)
- macOS: coreutils が GNU 版と若干オプションが違う場合がある。brew で gnu-coreutils を入れると GNU 互換を得られる。
- WSL: ディストリビューションによりパッケージ管理が異なる。ファイルパスの扱いに注意(Windows 側のファイルを直接編集すると改行コード等で差異が出る)。
1行用語集
- シェル: コマンド入力を解釈するプログラム。
- パイプ: 出力を次のコマンドへ渡す仕組み(|)。
- リダイレクト: 標準入出力をファイルへ向ける操作(>, <)。
- ワイルドカード: * や ? で複数ファイルを指定する仕組み。
まとめ
ターミナルは最初は取っつきにくいが、基本コマンドとパイプ・リダイレクトの理解、そして慎重な実行フローを持てば、作業効率が大幅に向上します。ImageMagick や FFmpeg のようなツールを使えば、画像・動画の大量処理が短時間で完了します。まずは安全な環境で練習し、必ずバックアップを取る習慣を付けてください。
このガイドは入門レベルの範囲をカバーしています。さらに高度な使い方(スクリプト化、CI への組み込み、システム運用の自動化)に進みたい場合は、それぞれのトピックに特化した資料を参照してください。