
Gnu EdとBSD Unixシステムに付属しているEdバージョンの間に機能的な違いがあるかどうかを知りたいです。私は現在Debian 10でGnu Ed 1.17を使用していますが、次のページを見つけました:
マニュアルページが違うようです。
答え1
3つしかアクセスできません。現在の ed
実装:
- OpenBSD 7.0
ed
(ed
NetBSD、FreeBSD、およびmacOSと同様に動作すると予想されますが、まだ徹底的にテストしていません)。 - GNU
ed
1.14.2および1.16。 - 計画9は
ed
から来ますplan9port-20210323
。
以下にこれらの違いを要約しようとしましたが、「POSIX互換ed
」予想される動作(やるべきこと)も追加しようとしました。POSIX仕様説明する)。
U&Lに関する質問/回答で私が経験した違いだけが言及されており、すべてを見つけるed
ためにマニュアルなどの文献調査を試みませんでした。たとえば、ほとんどのed
実装では、追加のコマンドおよび/またはコマンドラインオプションを使用してPOSIX標準への拡張を提供していed
ますed
。
サポートされる正規表現バリアントは、部分的にシステムの正規表現ライブラリによって異なります。これは、GNUシステムの式が行の先頭\`
に一致しますが(^
GNU ed
(info-)マニュアルに示すように)、ed
OpenBSDシステムのGNUはそれを使用できないことを意味します。だから私はこれについてもっと話しません。
以下はいくつかの異なる違いです。
#
コメント文字で。- GNU:
#
コメントコマンドです。 - BSD:
#
有効なコマンドではありません。 - 計画9:BSDと同じです。
- POSIX:BSDと同じです。
- GNU:
保存されていないジョブを破棄する行為。
- GNU:
e
、、、バッファが保存されていない場合e !
、q
最初の試みは常に失敗します。 - BSD:GNUに似ていますが、
-s
警告を無効にします。 - 計画9:GNUのように。
- POSIX:GNUと同じです。
- GNU:
終了状態(完全にテストするのは少し難しいです)。
- GNU:最後のコマンドでエラーが発生した場合は、ゼロ以外の終了状態で終了します。
- BSD:ほとんどのバグはゼロ以外の終了のみを発生させます
-s
。 - 計画9:0以外のシャットダウン状態では終了しないようです。
- POSIX:終了ステータスが0の終了は、「ファイルやコマンドエラーなしで正常に完了しました」を意味します。
コマンドは
s///
ありますが、最初のコマンドのみ/
。- GNU:
s/RE
バグです。 - BSD:
s/RE
動作はに似ていますs/RE/
。つまりs/RE//p
、RE
正規表現に一致する部分文字列を空の文字列に置き換え、変更された行を印刷します。 - 計画9:BSDと同じです。
- POSIX:GNUと同じです。
- GNU:
^
住所として使用されます。- GNU:
^
無効なアドレスです。 - BSD
^
:。-
- 計画9:BSDと同じです。
- POSIX
^
:。-
- GNU:
印刷コマンド
p
とl
(n
例:)を組み合わせて、nl
その間にコマンド(例:nlnl
またはpnnn
)を繰り返します。- GNU:印刷コマンドの組み合わせを許可します。冗長コマンドは許可されません(ただし、標準では、、、、、、、、または以外のコマンドに、または追加を許可するので、および
pp
使用nn
は許可されます)。ll
p
n
l
e
E
f
q
Q
r
w
!
- BSD:印刷コマンドの結合を許可します。繰り返しコマンドが許可されます。
- オプション9:3つのコマンドのうち2つのコマンドの組み合わせを許可します(ではありません
nlp
)。重複したコマンドは許可されません。 - POSIX:印刷コマンドの組み合わせの効果は「未指定」です。
- GNU:印刷コマンドの組み合わせを許可します。冗長コマンドは許可されません(ただし、標準では、、、、、、、、または以外のコマンドに、または追加を許可するので、および
ed.hup
HUP信号を受信すると、現在の編集バッファは現在のディレクトリから呼び出されるファイルに保存されます。失敗するとバッファが書き込まれます$HOME/ed.hup
。これらの名前がすでに存在する場合はどうなりますか?- GNU:現在のディレクトリのファイルが
ed.hup
通常のファイルで、現在のユーザーが所有している場合は上書きされます。それ以外の$HOME/ed.hup
場合、ファイルが現在のユーザーが所有している通常のファイルである場合は、そのファイルを上書きします。それ以外の場合、バッファは失われます。 - BSD:GNUに似ていますが、現在のバッファは名前が一致する一時ファイルでも使用できます
/tmp/ed.*
。 - 計画9:GNUのように。
- POSIX:GNUと同じです。
- GNU:現在のディレクトリのファイルが