概要
edコマンドは、UNIXの初期から存在する標準的なラインエディタです。viやnanoのようなスクリーンエディタとは異なり、ファイル全体を画面に表示せず、コマンドを用いて「行単位」で編集操作を行います。
現代では日常的な編集に使われることは稀ですが、システム復旧時(最小限の環境)や、sed(ストリームエディタ)の動作原理を理解するために役立ちます。また、シェルスクリプト内で対話的な編集を自動化する際にも利用可能です。
仕様(引数・オプション)
構文
ed [オプション] [ファイル名]
主なオプション
| オプション | 説明 |
| -p [文字列] | 対話モード時のプロンプト文字列を指定します(例: * や >)。指定がない場合、edはデフォルトでは何も表示せず入力を待ちます。 |
| -s | サイレントモード。バイト数や診断メッセージを表示しません。スクリプト処理に適しています。 |
| -v | 詳細モード。通常よりも詳細なエラーメッセージを表示します。 |
主な内部コマンド
ed起動後に入力するコマンドです。viのコマンドモードの元祖となっています。
| コマンド | 説明 |
| a | 現在の行の後ろに入力モードを開始します(append)。 |
| i | 現在の行の前に入力モードを開始します(insert)。 |
| d | 指定した行(または現在の行)を削除します。 |
| p | 行の内容を表示します(print)。,p で全行表示。 |
| r !コマンド | 外部コマンドを実行し、その出力を読み込みます。 |
| w [ファイル] | バッファの内容をファイルに保存します(write)。 |
| q | edを終了します(quit)。変更が保存されていない場合は警告が出ます(Qで強制終了)。 |
| . | 入力モードを終了し、コマンドモードに戻ります(行頭で入力)。 |
基本の使い方
空のバッファで起動して終了する
最も基本的な起動と終了の手順です。edはデフォルトではプロンプトが出ないため、オプションなしで起動するとカーソルが止まったように見えます。
ed
q
実行結果イメージ:
(入力待ち状態になる)
q
(シェルに戻る)
プロンプトを表示して起動する
操作していることが分かりやすいよう、-pオプションでプロンプト記号(ここでは %)を表示させるのが推奨されます。
ed -p%
実行結果イメージ:
% q
実践コマンド
新規ファイル作成と外部コマンド結果の取り込み
テキストを入力し、Linuxのdateコマンドの結果を挿入して保存する一連の流れです。
# プロンプト(:)を表示して、new_note.txt を編集(新規作成)
ed -p: new_note.txt
対話操作の入力例:
以下の順序でキーボードから入力します。
i: 入力モード開始(insert)- テキストを入力
.: 入力モード終了r !date:dateコマンドの結果を読み込み,p: 全行を表示して確認w: 保存q: 終了
:i
This is a memo file.
Created by ed command.
.
:r !date
29 Wed Jan 15 12:00:00 JST 2026
: ,p
This is a memo file.
Created by ed command.
Wed Jan 15 12:00:00 JST 2026
:w
68
:q
※ 68 は書き込まれたバイト数です。
作成されたファイルの確認:
cat new_note.txt
カスタムポイント
- プロンプト文字 (
-p:):- デフォルトでは無言のため、操作ミスを防ぐために
*や>、:など分かりやすい記号を指定することをお勧めします。
- デフォルトでは無言のため、操作ミスを防ぐために
- スクリプト利用 (
-s):- ヒアドキュメントを使って自動編集を行う場合は、余計な出力を消すために
-sを付けます。
- ヒアドキュメントを使って自動編集を行う場合は、余計な出力を消すために
注意点
- 直感的ではない操作:
- 現在の行(カレント行)がどこにあるかを常に意識する必要があります。迷ったら
pで現在行を表示するか、nで行番号付き表示を行ってください。
- 現在の行(カレント行)がどこにあるかを常に意識する必要があります。迷ったら
- Undo機能の制限:
uコマンドで直前の操作を取り消せますが、高機能なエディタほど柔軟ではありません。
- 入力モードの終了:
- テキスト入力モードから抜けるには、行頭でピリオド
.だけを入力してEnterを押します。これを忘れるとコマンドを受け付けません。
- テキスト入力モードから抜けるには、行頭でピリオド
応用
ヒアドキュメントによる自動編集
シェルスクリプト内でedを利用し、対話操作なしでファイルの末尾に追記を行う定型パターンです。
# config.conf の末尾に設定を自動追記する
ed -s config.conf << EOF
$a
# Added by setup script
ENABLE_FEATURE=true
.
w
q
EOF
まとめ
edコマンドは、スクリーンエディタが使えない極限環境や、自動化スクリプト内で力を発揮します。
- 向く場面: 非常に古い環境、ディスプレイがない環境、シェルスクリプト内での単純なファイル編集。
- 変更ポイント: プロンプト文字(
-p)を見やすいものにする。 - 注意点: 入力モードの終了は
.(ドット)のみの行を入力する。
vi の :w や :q といったコマンドモードの操作は、この ed がルーツです。これを知っておくと vi/vim の理解も深まります。
