edは、
UNIXオペレーティングシステムに搭載されている
テキストエディタの一つです。その特徴は、対話的な操作を基本とするラインエディタである点です。ユーザーはコマンドを入力してテキストの編集を行います。画面にテキストが常に表示されるスクリーンエディタとは異なり、edは非常に簡素なインターフェースを持っています。
概要
edは、
UNIXの初期(1969年)からシステムの一部として組み込まれており、現在でも
POSIX規格に含まれています。
1980年代以降、より使いやすいスクリーンエディタ(viや
Emacsなど)が普及したため、edを直接利用するユーザーは大幅に減少しました。しかし、edは
UNIXのあらゆるバージョンに搭載されているため、他のエディタが利用できない状況でも、システム管理者がテキスト編集を行うための最終手段として利用されることがあります。また、一部の
シェルスクリプトでは、自動的なテキスト処理に利用されています。近年では、edが標準でインストールされない
Linuxディストリビューションも存在しますが、必要であれば後からインストールすることが可能です。
特徴
edは、その簡潔さから多くのユーザーに知られています。例えば、エラー発生時には「?」という一文字しか表示しません。ファイル名や行番号などの情報も表示されず、変更結果も明示的に要求しない限り表示されません。このような簡潔さは、初期の
UNIX環境において、低速な端末や限られたシステムリソースの中で効率的に動作するために必要でした。
edのコマンドは全て1文字で構成されています。例えば、「a」はテキストの追記、「i」はテキストの挿入、「c」はテキストの変更、「d」はテキストの削除、「h」は直前のエラーの説明、「H」はヘルプモードの切り替え、「w」はファイルへの書き込み、「q」は終了です。
edでの編集は、ファイルの内容を一旦メモリ上のバッファにコピーしてから行われます。編集内容は明示的に「w」コマンドを実行しない限り、ファイルに保存されません。また、edは世界で初めて
正規表現を実装したエディタの一つとしても知られています。
歴史と影響
edは、
UNIXの重要な3要素(
シェル、
テキストエディタ、アセンブラ)の一つとして、1969年に
ケン・トンプソンによって開発されました。edは、
カリフォルニア大学バークレー校のQEDエディタに影響を受けています。また、後のexエディタやviエディタに影響を与えました。さらに、grepやsedなどの
UNIXコマンドや、AWKなどの
プログラミング言語にも影響を与え、edのコマンド体系は他のラインエディタにも模倣されています。
使用例
以下にedの基本的な使用例を示します。
a
ed is the standard Unix text editor.
This is line number two.
.
2i
.
1,$l
ed is the standard Unix text editor.$
$
This is line number two.$
3s/two/three/
1,$l
ed is the standard Unix text editor.$
$
This is line number three.$
w text
65
q
この例では、まず`a`コマンドでテキストを入力し、次に`2i`コマンドで2行目の前に空行を挿入しています。`1,$l`コマンドでテキストの内容を確認し、`3s/two/three/`コマンドで3行目の「two」を「three」に置換しています。最後に`w text`コマンドで編集結果を「text」ファイルに保存し、`q`コマンドでedを終了しています。
その他
edは
1980年代にはほとんど使われなくなりましたが、一部のプログラマーやシステム管理者にとっては、緊急時のツールとして必要とされています。
ビル・ジョイ(viの開発者)も、特定の環境下では、信頼性のあるedを使わざるを得なかったと語っています。
参考文献
Brian W. Kerninghan; Rob Pike (1985-10). 石田晴久監訳. ed. UNIXプログラミング環境. 海外ブックス. アスキー. ISBN 4-87148-351-7
塚越一雄『標準エディタed チュートリアル&リファレンス・ブック』ナツメ社〈パーソナル
UNIXシリーズ 1〉、1992年5月。
ISBN 4-8163-1394-X
関連項目
テキストエディタの一覧
vi、emacs、nano (
テキストエディタ)
エディタ戦争
外部リンク
GNU ed homepage(英語)
Unix Editors I(英語)
ed Humor(英語)
Manpages of ED JM Project (日本語)
ed(1) man page(SunOS リファレンスマニュアル)
ed(1) man page(HP-UX リファレンス)
quiz(6) function ed-command の日本語訳
*
ed(1) 好きなあなたに 53 の質問