マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

red(1)

名前

ed, red - テキストエディタ

形式

/usr/bin/ed [-s | -] [-p string] [file]
/usr/xpg4/bin/ed [-s | -] [-p string] [file]
/usr/xpg6/bin/ed [-s | -] [-p string] [file]
/usr/bin/red [-s | -] [-p string] [file]

説明

ed ユーティリティーは標準のテキストエディタです。file が指定されていると ede コマンド ( 下記参照 ) を指定されたファイルについてシミュレートします。その結果、このファイルは ed のバッファーに読み込まれ、編集できるようになります。

ed ユーティリティーは、編集されるファイルのコピーに 対して操作を行います。つまり、コピーに対して行われた変更は w ( write ) コマンドが実行されるまで、そのファイルに対して有効になりません。編集されるテキストのコピーは バッファという一時ファイルに存在します。バッファは1 つしかありません。

red ユーティリティーは ed の制限付きバージョンです。red は現在のディレクトリ内のファイルしか編集できず、!shell command によるシェルコマンドの実行もできません。これらの制限を無視しようとするとエラーメッセージ (restricted shell) が表示されます。

edred は、両方とも fspec(4) フォーマット機能をサポートしています。デフォルトの端末モードは stty –tabs または stty tab3 で、タブ位置は 8 カラムごとに設定されます (stty(1) を参照 ) 。ただし file の先頭行にフォーマット指定が記述されていれば、その指定がデフォルトモードをオーバーライドします。たとえば、タブ位置を 5、10、15 に設定し、最大行長を 72 に設定するには、file の最初の行に次のように指定します。

<:t5,10,15 s72:>

ed コマンドは単純で、その構造は規則的です。 最初に 0 から 2 個までのアドレス、次に 1 文字のコマンド、最後に(あれば) コマンドのパラメータが続きます。アドレスはバッファ内の 1 行または複数行を指定するものです。アドレスが必要なコマンドはすべてデフォルトのアドレスを持っているので、アドレスを省略することがよくあります。

一般に、1 行に 1 つのコマンドだけ指定します。コマンドの中には、テキストを入力するものもあります。この時テキストは、バッファの中の適切な場所に格納されます。ed がテキストを受け入れているときのことを「入力モード」であるといいます。このモードではコマンドは認識されません。すべての入力がそのまま受け付けられるだけです。入力モードから抜けるには、行の先頭でピリオド ( . ) だけを入力して、キャリッジリターンを押します。

/usr/bin/ed

ed が引数のあるコマンドを実行する場合、デフォルトのシェル /usr/bin/sh が使われます (sh(1) 参照)。

/usr/xpg4/bin/ed および /usr/xpg6/bin/ed

ed が引数のあるコマンドを実行する場合、/usr/xpg4/bin/sh が使われます (ksh88(1) を参照)。

正規表現

ed ユーティリティーでは「正規表現」規則がサポートされていますが、ある程度制限されています。正規表現は、アドレスの中では行を指定するために、また、いくつかのコマンド ( たとえば、s) の中では行のうちの置換される部分を指定するために用いられます。ed におけるアドレス指定方法を理解するには、常に「現在行」が存在することを認識する必要があります。一般に、現在行はコマンドによって影響を受けた最後の行です。現在行が受ける影響については、各コマンドの説明の箇所で述べます。

国際化された標準の正規表現は、システムに与えられたすべてのロケールで 使用されます。詳細については regex(5) を参照してください。

ed コマンド

コマンドには 0、1、または 2 個のアドレスを必要とします。アドレスを必要としないコマンドにアドレスを指定するとエラーになります。アドレスが必要なコマンドに必要な数のアドレスを指定しないと、デフォルトのアドレスが採用されます。必要以上にアドレスが指定されると、最後のアドレスの方から使用されます。

通常、アドレスはコンマ (  ,  ) によってお互いに区切られます。セミコロン (  ;  ) によっても区切られます。後者の場合、最初のアドレスが計算され、現在行 (  .  ) がその値に設定されます。その後、2 番目のアドレスが計算されます。この機能は、順方向および逆方向検索の開始行を決定するのに使用できます (前述の規則 5 および 6 を参照)。2 つのアドレスが指定されている場合には、2 番目のアドレスはバッファ内の特定の行、つまり最初のアドレスに対応する行に続く行に対応している必要があります。

/usr/xpg6/gbin/ed の場合、区切り記号のコンマまたはセミコロンの前後では、アドレスを省略できます。アドレスを省略した場合は、アドレスは次のように解釈されます。

指定
結果
,
1 , $
, addr
1 , addr
addr ,
addr , addr
;
1 ; $
; addr
1 ; addr
addr ;
addr ; addr

アドレス、アドレス区切り記号、またはアドレスオフセット間にある空白は無視されます。

以下に示す ed コマンドのリストでは、コマンドの前の括弧はアドレスの一部ではなく、デフォルトのアドレスを示します。

各アドレス部分の先頭には任意の 2 個の空白文字を付加できます。またコマンド文字の先頭にも任意の数の空白文字を付加できます。接尾文字(ln 、または p) を指定するのであれば、コマンドの直後に記述しなければなりません。

eEfrw の各コマンドには、省略可能な file パラメータがあります。これを指定する場合には、コマンド文字との間に最低 1 個の空白文字を置くことが必要です。

バッファ全体を書き換えた最後の w コマンド実行後にバッファの内容が変更されているとき、e または q コマンドによりエディタバッファを破壊しようとすると、ed は警告を発します。具体的には以下の文字列を標準出力に書き出します。

"?\n"

なお H コマンドにより「ヘルプモード」が起動されていれば、状況を説明するメッセージが続いて出力されます。この警告出力後も、ed はコマンドモードのままで、現在の行番号は変わりません。ここで続けて e または q コマンドを再度入力すれば、そのコマンドが実行されます。

標準入力から次のコマンドを読み込もうとして ファイルの終わりを検出した場合、ed ユーティリティーは q コマンドが入力された場合と同じように動作します。

一般に、1 行に 2 つ以上のコマンドを指定するとエラーです。しかし、すべてのコマンド ( efrw を除く )は、ln 、または p コマンド( それぞれ、現在行をリストする、番号付けする、出力する ) を接尾辞として付けることができます ( ln 、および p コマンドを参照 ) 。

(.)a
<text>
.

append コマンドは、0 行以上のテキスト行を受け入れ、それをバッファー内のアドレスで指定された行の直後に追加します。現在行 (.) は、最後に挿入された行に設定されます。挿入行がない場合は、アドレスで指定された行に設定されます。このコマンドではアドレス 0 は有効です。この場合、バッファーの先頭にテキストを追加します。端末から入力できる最大文字数は 1 行あたり 256 文字です (復帰改行文字も含む)。

(.,.)c
<text>
.

change コマンドは、バッファからアドレスで指定された行を削除し、0 行以上のテキスト行をバッファ内に受け入れ、削除された行と置換します。現在行( . ) は最終入力行に設定されます。最終入力行がない場合は、削除されなかった最初の行に設定されます。バッファの最終行を削除した場合、現在の行番号は新たに最終行となった行のアドレスに設定されます。削除によりバッファ内に行が残っていなければ、現在の行番号はゼロに設定されます。

/usr/xpg4/bin/ed

このコマンドでは、アドレス 0 は有効ではありません。

/usr/xpg6/bin/ed

このコマンドでは、アドレス 0 は有効です。この場合、アドレス 1 が指定されたと解釈されます。

(.,.)d

delete コマンドは、バッファからアドレスで指定された行を削除します。削除された最後の行の直後の行が現在行に設定されます。バッファの最終行を削除した場合、新たに最終行となった行が現在行になります。削除によりバッファ内に行が残っていなければ、現在の行番号はゼロに設定されます。

e file

edit コマンドは、バッファの全内容を削除して file の内容をバッファ内に読み込みます。現在行 (.) は、バッファの最終行に設定されます。file が指定されないと、( もし、あれば ) 現在記憶されているファイル名を使用します (f コマンド参照 ) 。–s オプションが指定された場合を除き、読み込んだバイト数が以下の形式で 標準出力に書き込まれます。

"%d\n" <読み込んだバイト数>

file は、後で使用する eEr、および w コマンドのデフォルトのファイル名として記憶されます。file の代わりに ! を指定すると、! 以降の文字列はシェル (sh(1)) コマンドと見なされ、その出力が読み込まれます。このようなシェルコマンドは現在のファイル名として記憶されません。後述の「診断」も参照してください。e コマンドが正常に終了すると、すべてのマークは捨てられます。バッファ全体が最後に書き換えた後でその内容が変更されているとき、前述したように警告が発せられます。

E file

Edit コマンドは、基本的に、eコマンドと同じです。ただし、最後の w コマンドを実行してからバッファの内容が変更されたか否かをチェックしません。

f file

file が指定されると、f コマンドは、現在記憶されているパス名を file に変更します。次に、パス名を変更したか否かに関わらず、現在記憶されているパス名 ( 変更した場合は新しいパス名 )を以下の形式で標準出力に書き出します。

"%s\n"パス名

現在の行番号は変わりません。

(1,$)g/RE/command list

globalコマンドは、まず RE で指定された正規表現と一致する各行をマークします。そして、該当するすべての行に対して、まず現在行 ( . ) をその行に設定してから、command listで指定したコマンドリストを実行します。g コマンドが終了したとき、現在の行番号の値は、コマンドリスト中の 最後のコマンドが指定した値となっています。一致する行が見つからなかった場合には、現在の行番号の値は変わりません。単一コマンドまたはコマンドリストの最初のコマンドは global コマンドと同一行に現われなければなりません。コマンドが複数行にまたがる場合、最終行以外の各行はバックスラッシュ (\ ) で終わらなければなりません。ai、および c コマンドおよび関連する入力が許可されます。入力モードを終了する .command list の最後の行の場合、省略できます。空の command list は p コマンドと同等です。gGvV 、および ! コマンドは、command list 内に書くことができません。「注意事項」および「ファイル」の前の最後のパラグラフも参照してください。RE を区切る文字として、スラッシュの代わりに、スペースと復帰改行以外の任意の文字を使うことができます。また区切り文字を RE 中で実際の文字として使いたければ、その前にバックスラッシュを付加してください。

(1,$)G/RE/

対話型 Global コマンドでは、最初に、RE で指定された正規表現と一致する各行をマークします。そして、該当する各行について、その行が標準出力に書き込まれ、現在行 (.) がその行に変更され、この時点で、1 つのコマンド (acigGv、および V コマンドをのぞく) が入力でき、入力されたコマンドは実行されます。コマンドが実行されると、次のマークされた行が出力され、以下同じ処理を繰り返します。復帰改行は NULL コマンドとして動作します。& は、現在起動中の G 内で、最後に実行された NULL でないコマンドを再実行します。注意: G コマンド実行中のコマンド入力はバッファ内のどの行でもアドレス指定したり、影響を与えたりできます。現在の行番号の最終的な値は、最後に正常終了したコマンド が設定した値です (なお G で入力したコマンドが失敗した場合、または NULL コマンドが入力された場合は、G 自身が「最後に正常終了したコマンド」となります )。一致する行が見つからなかった場合には、現在の行番号の値は変わりません。G コマンドは SIGINT シグナルによって終了させることができます。G コマンドは、割り込みシグナル (ASCII DEL または BREAK) で終了できます。RE を区切る文字として、スラッシュの代わりに、スペースと復帰改行以外の任意の文字を使うことができます。また区切り文字を RE 中で実際の文字として使いたければ、その前にバックスラッシュを付加してください。

h

help コマンドは、最後の ? 診断の理由を説明する短いエラーメッセージを出力します。現在の行番号は変わりません。

H

Help コマンドは、ed を以後発生するすべての ? 診断のエラーメッセージを出力するモードにします。もしあれば前の ? も説明します。H コマンドは、このモードを交互にオンおよびオフにします。最初はオフです。現在の行番号は変わりません。

(.,.)i
<text>
.

insert コマンドは、0 またはそれ以上の行のテキストを受け入れ、バッファー内のアドレス指定された行の前に挿入します。現在行 (.) は、最後に挿入された行に設定されます。挿入行がない場合は、アドレスで指定された行に設定されます。i コマンドと a コマンドは、入力テキストの挿入位置だけ異なります。端末から入力できる最大文字数は 1 行あたり 256 文字です (復帰改行文字も含む)。

/usr/xpg4/bin/ed

このコマンドでは、アドレス 0 は有効ではありません。

/usr/xpg6/bin/ed

このコマンドでは、アドレス 0 は有効です。この場合、アドレス 1 が指定されたと解釈されます。

(.,.+1)j

join コマンドは、適当な復帰改行文字を削除することによって連続する行を結合します。1 つのアドレスしか指定されないと j コマンドは何もしません。行の結合が行われると、現在の行番号は結合された側の行のアドレスに 設定されます。そうでない場合、現在の行番号は変わりません。

(.)kx

mark コマンドは、xという名前でアドレス行をマークします。x は ASCII の小文字 (az) でなければなりません。'xを指定すると、このマークされた行を指すようになります。現在行 (.) は変更されません。

(.,.)l

list コマンドは、アドレスされた行をすべての情報が見える形で標準出力へ書き出します。\\ 、\ a\ b\ f\ r\ t\ v はそれぞれ対応するエスケープシーケンスとして書き込まれます。テーブル中にある \ n は適用外です。テーブル中にない非印字文字に関しては、各バイトごとに (最上位バイトから) 3 桁の 8 進数で、前にバックスラッシュが付加された形式で出力されます。

長い行は折り返され、折り返しの発生地点はバックスラッシュと復帰改行文字の書き込みによって示されます。折り返し地点の長さは不特定ですが、出力装置に適した値になっています。各行の終わりは $ でマークされます。/usr/xpg6/bin/ed コマンドを使用する場合、各行の終わりは折り返しを示す $ でマークされます。また、テキスト内の $ 文字の前にはバックスラッシュが付加されます。lコマンドは、eEfqQrw! 以外のすべてのコマンドの後に付けられます。現在の行番号は、最後に出力された行のアドレスに設定されます。

(.,.)ma

move コマンドは、アドレス行を aで示される行の後に移動します。アドレス 0 を a に書いても有効で、その場合アドレス行をファイルの先頭に移動します。アドレス a が移動する行の範囲内にあるとエラーになります。現在行 (.) は移動した最後の行に設定されます。

(.,.)n

number コマンドは、行番号とタブの後に、アドレス行を出力します。現在行 (.) は出力した最後の行に設定されます。n コマンドは eEfqQrw 、または ! 以外のすべてのコマンドの後に続きます。

(.,.)p

print コマンドは、アドレス行を標準出力に出力します。現在行 (.) は出力した最後の行に設定されます。p コマンドは、eEfqQrw、または ! 以外のすべてのコマンドの後に付けられます。たとえば、dp というコマンドは、現在行を削除して新しい現在行を出力します。

P

P コマンドは、後続のすべてのコマンドにアスタリスク(*) (–p 指定時は文字列) によるプロンプトをつけて入力を促します。P コマンドは、このモードを交互にオンまたはオフします。初期値は、–p オプション指定時はオン、省略時はオフです。現在行は変わりません。

q

quit コマンドは、ed を終了します。バッファ全体が書き換えられた後でバッファの内容が変更されていると、警告が発せられます。後述の「診断」を参照してください。

Q

エディタは、最後の w コマンドの後、バッファが変更されたか否かをチェックしないで終了します。

($)r file

read コマンドは、file の内容をバッファ内に読み込みます。file が指定されないと、(もしあれば) 現在記憶されているファイル名を使用します (e および f コマンド参照)。fileed 起動後参照された最初のファイル名でないかぎり、現在記憶されているファイル名は変更されません。r コマンドにはアドレス0 は有効です。この場合、バッファの先頭にファイルを読み込みます。読み込みに成功すると、–s オプションが省略されていれば、読み込まれた文字数が以下の形式で標準出力に書き込まれます。

%d\n, <number of bytes read>

現在行 (.) は読み込まれた最後の行に設定されます。file の代わりに ! を指定すると、! 以降の文字列はシェルコマンド (sh(1) 参照) と見なされ、その出力が読み込まれます。たとえば、$r !ls は編集中のファイルの最後に現在のディレクトリを追加します。このようなシェルコマンドは現在のファイル名として記憶されません。

(.,.)s/RE/replacement/
(.,.)s/RE/replacement/count, count=[1-2047]
(.,.)s/RE /replacement/g
(.,.)s/RE/replacement/l
(.,.)s/RE/replacement/n
(.,.)s/RE/replacement /p

substitute コマンドは、各アドレス行について、RE で示された正規表現を検索します。これらの置換コマンドは、任意の数だけ指定できます。一致が発生した各行に対して、グローバル置換指示子 g がコマンドの後にあれば、すべての ( 重ならない ) 一致した文字列を replacement に置換します。グローバル指示子がなければ、一致した文字列の最初のものだけを置換します。数字 count がコマンドの後にあれば、各アドレス行内で一致した文字列のうち count番目のものだけを置換します。すべてのアドレス行について置換が失敗するとエラーになります。正規表現 REreplacement を区切るには、スラッシュ (/)の代わりにスペース文字と復帰改行以外のすべての文字が使用できます。現在行 ( . ) は置換が発生した最後の行に設定されます。また区切り文字を RE 中で実際の文字として使いたければ、その前にバックスラッシュを付加してください。「ファイル」 の前の最後のパラグラフも参照してください。

replacement 内のアンパサンド(&) は、現在行上で正規表現 RE と一致した文字列に置き換えられます。この場合の & の特別な意味は、\  を前につけることによって抑制できます。\n (n は数字) は、指定された正規表現 RE\(\) で囲まれた n 番目のサブ正規表現と一致するテキストに置換されます。ネストされた括弧付きサブ正規表現が存在する場合、n は左から数えた \ ( の発生回数によって決まります。文字 %replacement 内の唯一の文字であるとき、最後の置換コマンドで使用した replacement を現在の置換コマンドの replacementとして使用します。ただしそれ以前に置換コマンドがなかった場合、このような % の使い方はエラーとなります。%は、複数の文字の置換文字内にあるとき、または \  が前に付くときには、その特別な意味を失います。replacement を先頭から終端まで走査する際にバックスラッシュ (\) が検出されると、後続の文字は特殊な意味を持っていたとしてもその意味を失います。&\% および数字以外の文字に対し、どのような特殊な意味が与えられているかは不特定です。

1 行を分割するには、復帰改行文字で置換します。replacement 内の復帰改行文字は、\  を前に付けてエスケープしなければなりません。このような置換は、g または v コマンドリストの一部としては実行できません現在の行番号は、置換が行われた最後の行のアドレスに設定されます。置換がまったく行われないと、現在の行番号は変わりません。行が分割されると、新たな現在の行番号を決定するため、分割で発生した両方の行で置換が行われたものと見なされます。置換文字列が、置換後の文字列と同一である場合も、置換が行われたことになります。

置換コマンドは以下に示す指示子をサポートします。

count

各アドレス行で見つかった REのうち、count 番目のものだけを置換します。count1 から 2047 までの値でなければなりません。

g

最初のものだけでなく、すべての重なっていない RE を一括して置換します。gcountの両方を指定した場合、結果は不確定です。

l

置換を行なった最後の行の内容を標準出力に書き出します。出力形式は l コマンドのものと同じです。

n

置換を行なった最後の行の内容を標準出力に書き出します。出力形式は n コマンドのものと同じです。

p

置換を行なった最後の行の内容を標準出力に書き出します。出力形式は p コマンドのものと同じです。

(.,.)ta

t コマンドは、m コマンドと同じように動作します。ただし、アドレス行のコピーがアドレス a ( 0 でもよい ) の後に置かれます。現在行 (.) はコピーされた最後の行に設定されます。

u

undo コマンドは、バッファの内容を変更した最後のコマンドの実行結果を無効にします。無効にできるコマンドは、最後に実行した acdgijmrstuvG 、または V コマンドです。グローバルコマンドの gGv、または V でバッファーを変更していた場合、一括してその変更を無効にします。グローバルコマンドで変更が行われていない (たとえば g/ RE/p) 場合、u コマンドは何も意味を持ちません。現在の行番号は、無効にしたコマンドの開始直前に設定されていた値に戻ります。

(1,$)v/RE/command list

v コマンドは、基本的に、グローバルコマンド g と同じです。ただし、最初の段階でマークされる行は RE で示す正規表現に一致しない ものです。

(1,$)V/RE/

V コマンドは、基本的に、対話型グローバルコマンド G と同じです。ただし、最初にマークされる行は RE で示す正規表現に一致しないものです。

(1,$)w file

write コマンドはアドレス行を file に書き込みます。file が存在しない場合は、ファイル生成マスクが他のモードで指定されていないかぎり、モード 666 (すべてのユーザーが読み込み、書き込み可能) で作成します。sh(1) 上での特殊コマンド umask の説明を参照してください。fileed 起動後参照された最初のファイル名でないかぎり、現在記憶されているファイル名は変更されません。ファイル名が指定されないと、現在記憶されているファイル名 (ある場合) を使用します (e および f コマンドを参照)。現在行 (.) は変更されません。コマンドが正常終了すると、–s オプションが省略されていれば、書き込まれた文字数が以下の形式で出力されます。

"%d\n",<number of bytes written>

file の代わりに ! を指定した場合、! 以降のテキストは、アドレス行が標準入力であるシェル (sh(1) 参照) コマンドと見なされ、その出力が読み込まれます。このようなシェルコマンドは、現在のパス名として記憶されません。このような ! を伴った w コマンドは、「バッファ全体を書き換えた最後の w コマンド」と見なされます。

(1,$)W file

W コマンドは基本的に上述の write コマンドと同じです。ただし、アドレス行を file ( 存在する場合 ) の最後に追加します。file が存在しない場合、上述の w コマンドで述べたようにファイルを作成します。

($)=

アドレス行の行番号が、次に示す形式で標準出力に表示されます。

"%d\n"<line number>

このコマンドによって、現在の行番号は変更されません。

!shell command

! 以降のテキストを UNIX システムシェル( sh(1) 参照 ) に送信し、コマンドとして解釈します。コマンドテキストにエスケープされていない % 文字を指定すると、記憶されているファイル名に置換されます。! がシェルコマンドの最初の文字として現われる場合、それは前のシェルコマンドのテキストで置換されます。つまり、!! は最後のシェルコマンドを繰り返します。% または ! による置換が実行されると、変更された行の内容が command の実行前に標準出力に書き込まれます。! コマンドは以下のメッセージを書き出します。

"!\n"

–s オプションが省略されていれば、終了時に標準出力に書き出します。現在の行番号は変わりません。

(.+1)<new-line>

行にアドレスだけを指定すると、そのアドレス行を出力します。復帰改行文字だけの場合、.+1p と同じです。つまり、バッファ内を進むのに使用します。現在の行番号は、書き出した行のアドレスに設定されます。

割り込みシグナル (ASCII DEL または BREAK) が送信されると、ed"?\n" を出力して、そのコマンドレベルに戻ります。

ed ユーティリティーはすべてのシグナルに対して標準的な動作を行います。ただし次の 2 つのシグナルは例外です。

SIGINT

ed ユーティリティーは現在の動作を中断し、文字列 "?\n" を標準出力に書き出し、コマンドモードに戻ります。

SIGHUP

バッファが空でなく、最後の書き込み処理以降に変更されている場合、ed ユーティリティーはファイル中にバッファのコピーを生成しようとします。その対象ファイルとして、まず現在のディレクトリ中の ed.hup というファイルが選ばれます。それが失敗すると、環境変数 HOME が示すディレクトリ中の ed.hup というファイルが選ばれます。いずれの場合も ed は、コマンドモードに戻らないで終了します。

いくつかのサイズ制限があります。 1 行は 512 文字以下、グローバル・コマンドリストは 256 文字以下、ファイルのパス名は255 文字以下です ( スラッシュを含む ) 。行数の制限はユーザーのメモリ容量によって異なります。1 行には 1 ワード必要です。

ファイルを読むとき、ed は ASCII と NUL 文字を破棄します。

ファイルが復帰改行文字で終了していないとき、ed はそれを追加して、その旨を説明するメッセージを表示します。

正規表現 RE または置換文字列の終端区切り文字 ( たとえば、/ ) が復帰改行文字の直前の文字のとき、区切り文字は省略できます。いずれの場合もアドレスされた行が出力されます。次の各組のコマンドは同等です。

s/s1/s2

s/s1/s2/p

g/s1

g/s1/p

?s1

?s1?

不正なコマンドが投入されると、ed は以下の文字列を書き出します。

"?\n"

このとき H コマンドにより「ヘルプモード」が有効になっていれば、状況を説明するメッセージが付加されます。前述の文字列を標準出力に出力後、ed はコマンドモードを継続します。現在の行番号は変わりません。

オプション

–p string

ユーザーがプロンプト文字列を指定するのを許可します。デフォルトではプロンプト文字列はありません。

–s | –;

er、および w コマンドによる文字カウント、e および q コマンドからの診断、および !shell command の後の ! プロンプトを出力しません。

オペランド

次のオペランドを指定できます。

file

この file 引数を指定すると、ed は、標準入力からコマンドを読み込む前に、パス名 file で示されるファイルに e コマンドを適用したかのように動作します。

使用法

ファイルが 2G バイト (231 バイト) 以上ある場合の edred の動作については、largefile(5) を参照してください。

環境変数

ed の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。HOME、LANG、LC_ALL、LC_CTYPE、LC_COLLATE、LC_MESSAGES、および NLSPATH。

終了ステータス

次の終了ステータスが返されます。

0

ファイルにもコマンドにもエラーはなく、正常終了しました。

>0

エラーが発生した。

ファイル

$TMPDIR

この環境変数が NULL でない場合、その値は一時作業ファイルのディレクトリ名として /var/tmp の代わりに使用されます。

/var/tmp

/var/tmp が存在する場合、一時作業ファイルのディレクトリ名として使用されます。

/tmp

環境変数 TMPDIR が存在しないか NULL で、さらに /var/tmp が存在しない場合、/tmp が一時作業ファイルのディレクトリ名として使用されます。

ed.hup

端末がハングアップしたとき、作業ファイルがここに保存されます。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

/usr/bin/ed, /usr/bin/red

属性タイプ
属性値
使用条件
system/core-os
CSI
有効

/usr/xpg4/bin/ed

属性タイプ
属性値
使用条件
system/xopen/xcu4
CSI
有効
インタフェースの安定性
確実
標準
standards(5) を参照してください。

/usr/xpg6/bin/ed

属性タイプ
属性値
使用条件
system/xopen/xcu6
CSI
有効
インタフェースの安定性
標準

関連項目

bfs(1), edit(1), ex(1), grep(1), ksh88(1), sed(1), sh(1), stty(1), umask(1), vi(1), fspec(4), attributes(5), environ(5), largefile(5), regex(5), standards(5)

診断

?

コマンドエラー

?file

アクセス不可能なファイル ( 詳細については help および Help コマンドを使用してください )。

最後に w コマンドを使用して全バッファーを書き出した後にバッファーの内容が変更された場合、e または q コマンドによって ed のバッファーの内容を破棄しようとすると、ed はユーザーに対して警告を発します。? を出力して編集を続行するか否かを聞いてきます。ここで再度 e または q コマンドを入力すると、これらのコマンドは実行されます。–s コマンド行オプションは、上述の機能を禁止します。

オプションは引き続きサポートされていますが、ドキュメント内ではコマンド構文規格に準拠する –s オプションで置き換えられています (Intro(1) 参照)。

g または v コマンドに対して ! コマンドは無効です。

! コマンドと er、および w コマンドからのエスケープコマンド ! は、エディタが制限付きシェル (sh(1) 参照) から起動されているときには使用できません。

正規表現 RE 内の \ n シーケンスは復帰改行文字と一致しません。

エディタの入力がコマンドファイル (たとえば、ed file < ed_cmd_file) からの場合、最初にエラーが発生した時点でエディタは終了します。

/usr/bin/ed の場合、環境変数 LD_PRELOADを使用して代替の malloc() ライブラリを読み込むと、問題が発生することがあります。