20d732999d
fixed `!' command final code cleanup
55 lines
2.9 KiB
Plaintext
55 lines
2.9 KiB
Plaintext
This version of ed is not strictly POSIX compliant, as described in the
|
|
POSIX 1003.2 Draft 11.2 document. BSD commands have been implemented
|
|
wherever they do not conflict with the POSIX standard. For backwards
|
|
compatibility, the POSIX rule that says a range of addresses cannot be
|
|
used where only a single address is expected has been relaxed.
|
|
|
|
The BSD commands included are:
|
|
1) the `s' command (i.e., s[rgp]*) to repeat a previous substitution,
|
|
2) the `W' command for appending text to an existing file,
|
|
3) the `wq' command for exiting after a write, and
|
|
4) the `z' command for scrolling through the buffer.
|
|
BSD line addressing syntax (i.e., `^' and `%'). is also recognized.
|
|
|
|
The POSIX interactive global commands `G' and `V' are extended to support
|
|
multiple commands, including `a', `i' and `c'. The command format is the
|
|
same as for the global commands `g' and `v', i.e., one command per line
|
|
with each line, except for the last, ending in a backslash (\).
|
|
|
|
If crypt is available, files can be read and written using DES encryption.
|
|
The `x' command prompts the user to enter a key used for encrypting/
|
|
decrypting subsequent reads and writes. If only a newline is entered as
|
|
the key, then encryption is disabled. Otherwise, a key is read in the
|
|
same manner as a password entry. The key remains in effect until
|
|
encryption is disabled. For more information on the encryption algorithm,
|
|
see the bdes(1) man page. Encryption/decryption should be fully compatible
|
|
with SunOS DES.
|
|
|
|
An extension to the POSIX file commands `E', `e', `r', `W' and `w' is that
|
|
<file> arguments are processed for backslash escapes, i.e., any character
|
|
preceded by a backslash is interpreted literally. A trailing backslash
|
|
is ignored. If the first unescaped character of a <file> argument is a
|
|
bang (!), then the rest of the line is interpreted as a shell command,
|
|
and no escape processing is performed by ed. This rule does not apply to
|
|
the 'f' command (described below).
|
|
|
|
While the default file name cannot be set to a shell command (i.e.,
|
|
!<shell-cmd>) via any of the `r', `w', and `e' commands, POSIX evidently
|
|
does not preclude using the `f' command for this purpose. Upon reading
|
|
or writing the default file when its name begins with a bang, ed
|
|
interprets the rest of the line as a shell command and attempts to execute
|
|
it. Escape processing is not performed in this case.
|
|
|
|
If ed is invoked with a name argument prefixed by a bang, then the
|
|
remainder of the argument is interpreted as a shell command. To invoke
|
|
ed on a file whose name starts with bang, prefix the name with a backslash.
|
|
--
|
|
The following commands are neither part of POSIX 1003.2 D11/2 nor are
|
|
they supported in this version of ed.
|
|
|
|
The vi command: (addr1,addr2) !<shell-cmd> which replaces a range of
|
|
lines with the output of a shell command is not supported.
|
|
|
|
The vi command: [rwe] !!, where !! is replaced by the previous
|
|
!<shell-cmd> is not supported.
|