The ed(1)
command in the Single Unix Specification (and the SVID)
When I wrote my entry on some differences between various versions
of ed(1)
, I forgot to check the Single
Unix Specification
to see if it has anything to say about ed
. It turns out that it
does, and ed
is
part of the 'Shell & Utilities' section.
SUS ed
is mostly the same as FreeBSD ed
, which is kind of what
I think of as 'the baseline modern ed
'. SUS ed
requires that
s
support a bunch of flags for printing the results (only GNU ed
documents supporting them all), but it doesn't require a z
command
(to print paginated output). Interestingly, SUS requires that ed
support a prompt and extra help, and that it print warnings if you
try to do something that would lose a modified buffer. SUS ed
is
only required to support SUS Basic Regular Expressions,
while all modern ed
s go at least somewhat beyond this; FreeBSD
ed
supports '\<
' and '\>
', for example.
One area of ed
's history that I don't know very much about is how
it evolved in System III and System V. SCO's website (of all people)
has a PDF version of the System V Interface Definition online
here, and for as long
as it lasts you want to look in volume 2 for the manpage for ed
.
The SVID ed
is mostly the same as FreeBSD ed
, and in particular
it has '\<
' and '\>
' in its regular expressions, unlike SUS
ed
. Its s
command doesn't support the l
, n
, or p
flags
(required by SUS but not in FreeBSD). It does have prompting and
help. I think that ed
is the only editor required by the SVID,
which may explain why the System V people enhanced it over the
V7 and BSD ed
s; in BSD, the development of vi
(and before it
ex
) probably made ed
a relatively secondary editor.
Conveniently, the SUS ed
documentation includes a rationale section
that includes a discussion of historical differences between BSD
and SVID behavior, commands supported, and so on. Of course, 'BSD'
in the SUS basically means 'UCB BSD through 4.4 or so', as I don't
think the SUS looks at what modern FreeBSD and OpenBSD are doing
any more than it looks at Linux or GNU programs.
(My previous entry and this one only look
at obvious differences like commands supported. I'm sure that there
are plenty of subtle behavior differences between various versions
of ed
, both old and modern ones; the SUS ed
rationale points
out some of them, and GNU ed's --traditional
switch suggests other
points of difference for it.)
|
|