第3章:テキスト処理とパッケージ管理
3.0 この章で学ぶこと
viの基本操作(編集・保存・終了)を把握できる- テキスト処理コマンドで必要な行だけを抽出できる
- パッケージ管理(APT / YUM / DNF)でインストール・更新・削除ができる
3.1 vi エディタの基本操作
vi 基本操作早見表
| 操作 | コマンド | 説明 |
|---|---|---|
| ファイルを開く | vi file.txt |
vi エディタでファイルを開く |
| 挿入モードへ | i |
カーソル位置から入力開始 |
| 行末に追加 | a |
カーソルの後から入力 |
| 新しい行 | o |
下に新しい行を作成 |
| ノーマルモードへ | ESC |
編集を終了 |
| 保存して終了 | :wq |
変更を保存して終了 |
| 保存せず終了 | :q! |
変更を破棄して終了 |
| 1 行削除 | dd |
カーソル行を削除 |
| 元に戻す | u |
直前の操作を取り消し |
3.2 テキスト処理コマンド
cat - ファイル表示
$ cat file.txt
$ cat -n file.txt # 行番号付き
$ cat file1.txt file2.txt > merged.txt
$ cat -n file.txt # 行番号付き
$ cat file1.txt file2.txt > merged.txt
複数ファイルの結合にも使用します。
less / more - ページング表示
$ less large_file.txt
$ cat file.txt | less
$ cat file.txt | less
操作:Space(次ページ) b(前ページ) q(終了)
head / tail - 先頭/末尾表示
$ head -n 10 file.txt # 先頭 10 行
$ tail -n 20 file.txt # 末尾 20 行
$ tail -f application.log # 場所が分かっているfileを追跡
$ tail -n 20 file.txt # 末尾 20 行
$ tail -f application.log # 場所が分かっているfileを追跡
-fは追記を監視します。システムログのfile pathはlogging設定によって異なるため、systemd環境では次のjournalctlを基本導線にします。
journalctl - systemd journal表示
$ systemctl status <unit-name> --no-pager # unit名と状態を確認
$ journalctl -u <unit-name> -b -n 50 --no-pager # 現在bootの末尾50件
$ journalctl -f -u <unit-name> # 新着を追跡。終了はCtrl+C
$ journalctl -u <unit-name> -b -n 50 --no-pager # 現在bootの末尾50件
$ journalctl -f -u <unit-name> # 新着を追跡。終了はCtrl+C
まず現在のuser権限で実行します。system journalを読めない場合だけ、運用ルールに従ってsudoを使います。ログ確認のために権限設定を変更しません。priority・時刻・保存方式は第4章で切り分けます。
grep - パターン検索
$ grep "error" log.txt
$ grep -i "Error" log.txt # 大文字小文字無視
$ grep -r "TODO" . # 再帰検索
$ grep -v "debug" log.txt # 除外
$ grep -i "Error" log.txt # 大文字小文字無視
$ grep -r "TODO" . # 再帰検索
$ grep -v "debug" log.txt # 除外
正規表現も使用できます。
sed - ストリームエディタ
$ sed 's/old/new/g' file.txt # 置換
$ sed -i 's/old/new/g' file.txt # 直接編集
$ sed '5d' file.txt # 5 行目削除
$ sed -i 's/old/new/g' file.txt # 直接編集
$ sed '5d' file.txt # 5 行目削除
一括置換に便利です。-i は直接編集のため、実務ではバックアップを取るか、まず標準出力で結果を確認してから適用します。
awk - テキスト処理言語
$ awk '{print $1}' file.txt # 1 列目表示
$ awk -F: '{print $1}' /etc/passwd # 区切り文字指定
$ ps aux | awk '{print $2, $11}' # PID とコマンド
$ awk -F: '{print $1}' /etc/passwd # 区切り文字指定
$ ps aux | awk '{print $2, $11}' # PID とコマンド
列単位の処理に強力です。
3.3 パッケージ管理システム
3.4 APT (Debian/Ubuntu)
パッケージリスト更新
$ sudo apt update
リポジトリから最新のパッケージ情報を取得
パッケージインストール
$ sudo apt install nginx
$ sudo apt install -y vim git curl
$ sudo apt install -y vim git curl
-y で確認をスキップします。
パッケージ削除
$ sudo apt remove <package-name>
$ sudo apt purge <package-name> # 設定も削除
$ sudo apt autoremove # 不要な依存削除
$ sudo apt purge <package-name> # 設定も削除
$ sudo apt autoremove # 不要な依存削除
purge は設定ファイルも削除します。
システム更新
$ sudo apt update && sudo apt upgrade
$ sudo apt full-upgrade # 依存関係の変更(追加/削除)を許容
$ sudo apt full-upgrade # 依存関係の変更(追加/削除)を許容
定期的に更新し、セキュリティリスクを低減します。
パッケージ検索
$ apt search keyword
$ apt show <package-name> # 詳細情報
$ apt list --installed # インストール済み一覧
$ apt show <package-name> # 詳細情報
$ apt list --installed # インストール済み一覧
必要なパッケージを探します。
3.5 DNFとYUMの世代差(RHEL系/Fedora)
この節の対象:RHEL 9はDNF、RHEL 8はDNF技術を使うYUM v4です。Fedora 41以降の
dnfはDNF5を指します。本書は共通するdnf基本操作を使い、実行前にcat /etc/os-releaseとdnf --versionで環境を確認します。
パッケージインストール
$ sudo dnf install httpd
$ sudo dnf install postgresql
$ sudo dnf install postgresql
RHEL 8/9のyumはDNF系の互換入口です。新しい手順はdnfで記録し、旧YUM固有の手順と混在させません。
パッケージ削除
$ sudo dnf remove <package-name>
$ sudo dnf autoremove # トランザクション内容を確認してから承認
$ sudo dnf autoremove # トランザクション内容を確認してから承認
依存関係も考慮して削除します。
システム更新
$ dnf check-update # DNF4の正式名(check-upgradeはalias)
$ dnf check-upgrade # DNF5の正式名。環境に応じて上とどちらか一方を実行
$ sudo dnf upgrade
$ dnf check-upgrade # DNF5の正式名。環境に応じて上とどちらか一方を実行
$ sudo dnf upgrade
更新候補がある場合、どちらの確認コマンドも終了ステータス100を返します。DNF4のupdateはupgradeの非推奨aliasで、upgradeが推奨です。旧YUM v3ではyum upgradeはyum update --obsoletes相当なので、「常に同義」と扱いません。
3.6 パッケージ管理のベストプラクティス
セキュリティ対策
- 定期的にアップデートを適用(例:
sudo apt update && sudo apt upgrade。実務では運用ポリシー/メンテナンス手順に従う) - 不要なパッケージは削除(攻撃対象を減らす)
- 信頼できるリポジトリのみ使用
トラブル回避の要点
- 大規模更新前はバックアップを取る
- 本番環境では事前にテスト環境で確認
apt-mark hold <package-name>で特定バージョン固定dpkg -i/rpm -ivhは依存解決をしないため、基本はapt/dnf/yum経由でインストールする
便利な使い方
apt install -yでスクリプト化しやすくwhich commandでコマンドの場所確認dpkg -L packageでインストールファイル一覧
3.7 まとめ
viは「モード」の切り替えが基本(まずは編集→保存→終了を押さえる)- テキスト処理は
grepとパイプを起点にすると理解しやすい - パッケージ管理は「環境と候補を確認→トランザクションを確認→upgrade」の順で進める
次章予告:次章では、よくあるエラーの読み方と対処のパターンを整理し、トラブルシューティングの基本を身につけます。