Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ed(1) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

edit(1)

ex(1)

grep(1)

sed(1)

sh(1)

stty(1)

umask(1)

vi(1)

fspec(4)

regexp(5)



ed(1)                    USER COMMANDS                      ed(1)



NAME
     ed, red - text editor

SYNOPSIS
     ed [-s] [-p string ] [-x] [-C] [file]

     red [-s] [-p string ] [-x] [-C] [file]

DESCRIPTION
     ed is the standard text editor.  If  the  file  argument  is
     given,  ed  simulates  an e command (see below) on the named
     file; that is to say, the file is read into ed's  buffer  so
     that it can be edited.

     -s   Suppresses the printing of character counts  by  e,  r,
          and  w  commands, of diagnostics from e and q commands,
          and of the !  prompt after a !shell command.

     -p   Allows the user to specify a prompt string.

     -x   Encryption option; when used, ed simulates an X command
          and  prompts  the  user for a key.  This key is used to
          encrypt  and  decrypt  text  using  the  algorithm   of
          crypt(1).   The  X  command  makes an educated guess to
          determine whether text read in  is  encrypted  or  not.
          The  temporary  buffer  file is encrypted also, using a
          transformed version of the key  typed  in  for  the  -x
          option.   See crypt(1).  Also, see the NOTES section at
          the end of this manual page.

     -C   Encryption option; the same as the  -x  option,  except
          that  ed  simulates a C command.  The C command is like
          the X command, except that all text read in is  assumed
          to have been encrypted.

     ed operates on a copy of the file  it  is  editing;  changes
     made  to  the  copy  have  no  effect  on the file until a w
     (write) command is given.  The copy of the text being edited
     resides  in  a  temporary  file called the buffer.  There is
     only one buffer.

     red is a restricted version of ed.  It will only allow edit-
     ing of files in the current directory.  It prohibits execut-
     ing shell commands via !shell command.  Attempts  to  bypass
     these  restrictions  result  in an error message (restricted
     shell).

     Both ed and red support the fspec(4) formatting  capability.
     After  including a format specification as the first line of
     file and invoking ed with your  terminal  in  stty -tabs  or
     stty tab3  mode  [see stty(1)], the specified tab stops will
     automatically be used when scanning file.  For  example,  if



                                                                1





ed(1)                    USER COMMANDS                      ed(1)



     the first line of a file contained:
          <:t5,10,15 s72:>
     tab stops would be set at columns 5, 10, and 15, and a  max-
     imum line length of 72 would be imposed.  NOTE: when you are
     entering text into the file, this format is not  in  effect;
     instead,  because  of being in stty -tabs or stty tab3 mode,
     tabs are expanded to every eighth column.

     Commands to ed have a simple and  regular  structure:  zero,
     one,  or  two  addresses followed by a single-character com-
     mand, possibly  followed  by  parameters  to  that  command.
     These  addresses  specify  one  or more lines in the buffer.
     Every command that requires addresses has default addresses,
     so that the addresses can very often be omitted.

     In general, only one command may appear on a line.   Certain
     commands  allow  the  input of text.  This text is placed in
     the appropriate place in the buffer.  While ed is  accepting
     text, it is said to be in input mode.  In this mode, no com-
     mands are recognized; all input is merely collected.   Leave
     input  mode  by  typing  a  period (.) at the beginning of a
     line, followed immediately by a carriage return.

     ed supports a limited form of regular  expression  notation;
     regular  expressions  are used in addresses to specify lines
     and in some commands (e.g., s) to specify portions of a line
     that  are  to  be  substituted.   A  regular expression (RE)
     specifies a set of character strings.  A member of this  set
     of strings is said to be matched by the RE.  The REs allowed
     by ed are constructed as follows:

     The following one-character REs match a single character:

     1.1    An ordinary character (not one of those discussed  in
            1.2 below) is a one-character RE that matches itself.

     1.2    A backslash (\) followed by any special character  is
            a one-character RE that matches the special character
            itself.  The special characters are:

            a.    ., *, [, and \ (period, asterisk,  left  square
                  bracket,  and  backslash,  respectively), which
                  are always special,  except  when  they  appear
                  within square brackets ([]; see 1.4 below).

            b.    ^ (caret or circumflex), which  is  special  at
                  the  beginning of an entire RE (see 4.1 and 4.3
                  below), or when it immediately follows the left
                  of  a  pair  of  square  brackets ([]) (see 1.4
                  below).

            c.    $ (dollar sign), which is special at the end of



                                                                2





ed(1)                    USER COMMANDS                      ed(1)



                  an entire RE (see 4.2 below).

            d.    The character used to bound (i.e., delimit)  an
                  entire  RE,  which  is special for that RE (for
                  example, see how slash (/) is  used  in  the  g
                  command, below.)

     1.3    A period (.) is a one-character RE that  matches  any
            character except new-line.

     1.4    A non-empty string of characters enclosed  in  square
            brackets  ([]) is a one-character RE that matches any
            one character in that string.  If, however, the first
            character  of  the  string  is  a circumflex (^), the
            one-character RE matches any  character  except  new-
            line and the remaining characters in the string.  The
            ^ has this special meaning only if it occurs first in
            the  string.  The minus (-) may be used to indicate a
            range of consecutive characters; for  example,  [0-9]
            is equivalent to [0123456789].  The - loses this spe-
            cial meaning if it occurs first (after an initial  ^,
            if  any)  or  last  in  the string.  The right square
            bracket (]) does not terminate such a string when  it
            is the first character within it (after an initial ^,
            if any); e.g., []a-f] matches either a  right  square
            bracket  (])  or one of the ASCII letters a through f
            inclusive.  The four characters listed in 1.2.a above
            stand  for themselves within such a string of charac-
            ters.

     The following rules may be used to construct REs  from  one-
     character REs:

     2.1    A one-character RE is a RE that matches whatever  the
            one-character RE matches.

     2.2    A one-character RE followed by an asterisk (*)  is  a
            RE  that matches zero or more occurrences of the one-
            character RE.  If there is any  choice,  the  longest
            leftmost string that permits a match is chosen.

     2.3    A one-character RE  followed  by  \{m\},  \{m,\},  or
            \{m,n\}  is  a RE that matches a range of occurrences
            of the one-character RE.  The values of m and n  must
            be non-negative integers less than 256; \{m\} matches
            exactly m occurrences;  \{m,\}  matches  at  least  m
            occurrences;    \{m,n\}   matches   any   number   of
            occurrences between m and n  inclusive.   Whenever  a
            choice  exists, the RE matches as many occurrences as
            possible.

     2.4    The concatenation of REs is a  RE  that  matches  the



                                                                3





ed(1)                    USER COMMANDS                      ed(1)



            concatenation  of  the  strings  matched by each com-
            ponent of the RE.

     2.5    A RE enclosed between the character sequences \(  and
            \)  is  a  RE  that matches whatever the unadorned RE
            matches.

     2.6    The expression \n matches the same string of  charac-
            ters as was matched by an expression enclosed between
            \( and \) earlier in the same RE.  Here n is a digit;
            the  sub-expression  specified is that beginning with
            the n-th occurrence of \(  counting  from  the  left.
            For example, the expression ^\(.*\)\1$ matches a line
            consisting of two repeated appearances  of  the  same
            string.

     A RE may be constrained to match words.

     3.1    \< constrains a RE to match the beginning of a string
            or  to follow a character that is not a digit, under-
            score, or letter.  The first character  matching  the
            RE must be a digit, underscore, or letter.

     3.2    \> constrains a RE to match the end of a string or to
            precede  a character that is not a digit, underscore,
            or letter.

     An entire RE may be constrained to  match  only  an  initial
     segment or final segment of a line (or both).

     4.1    A circumflex (^) at the beginning  of  an  entire  RE
            constrains  that  RE to match an initial segment of a
            line.

     4.2    A dollar sign ($) at the end of  an  entire  RE  con-
            strains that RE to match a final segment of a line.

     4.3    The construction ^entire RE$ constrains the entire RE
            to match the entire line.

     The null RE (e.g., //) is equivalent to the last RE  encoun-
     tered.  See also the last paragraph before FILES below.

     To understand addressing in ed it is necessary to know  that
     at  any  time  there is a current line.  Generally speaking,
     the current line is the last line affected by a command; the
     exact  effect  on  the  current  line is discussed under the
     description of each command.  Addresses are  constructed  as
     follows:






                                                                4





ed(1)                    USER COMMANDS                      ed(1)



      1.    The character . addresses the current line.

      2.    The character  $  addresses  the  last  line  of  the
            buffer.

      3.    A decimal number n addresses the  n-th  line  of  the
            buffer.

      4.    'x addresses the line marked with the mark name char-
            acter  x,  which  must  be an ASCII lower-case letter
            (a-z).  Lines are marked with the k command described
            below.

      5.    A RE enclosed by slashes (/) addresses the first line
            found  by  searching  forward from the line following
            the current line toward the end  of  the  buffer  and
            stopping at the first line containing a string match-
            ing the RE.  If necessary, the search wraps around to
            the  beginning  of the buffer and continues up to and
            including the current line, so that the entire buffer
            is  searched.   See  also  the  last paragraph before
            FILES below.

      6.    A RE enclosed in question  marks  (?)  addresses  the
            first  line found by searching backward from the line
            preceding the current line toward  the  beginning  of
            the  buffer and stopping at the first line containing
            a string matching the RE.  If necessary,  the  search
            wraps  around  to the end of the buffer and continues
            up to and including the current line.  See  also  the
            last paragraph before FILES below.

      7.    An address followed by a plus sign  (+)  or  a  minus
            sign  (-) followed by a decimal number specifies that
            address  plus  (respectively  minus)  the   indicated
            number of lines.  A shorthand for .+5 is .5.

      8.    If an address begins with + or  -,  the  addition  or
            subtraction  is  taken  with  respect  to the current
            line; e.g, -5 is understood to mean .-5.

      9.    If an address ends with + or -, then 1 is added to or
            subtracted  from  the  address,  respectively.   As a
            consequence of this rule and of Rule  8,  immediately
            above, the address - refers to the line preceding the
            current line.  (To maintain compatibility  with  ear-
            lier  versions  of  the  editor,  the  character ^ in
            addresses is entirely equivalent  to  -.)   Moreover,
            trailing + and - characters have a cumulative effect,
            so -- refers to the current line less 2.

     10.    For convenience, a comma (,) stands for  the  address



                                                                5





ed(1)                    USER COMMANDS                      ed(1)



            pair  1,$,  while a semicolon (;) stands for the pair
            .,$.

     Commands may require zero, one, or two addresses.   Commands
     that  require no addresses regard the presence of an address
     as an error.  Commands that  accept  one  or  two  addresses
     assume  default  addresses  when  an  insufficient number of
     addresses is given; if more addresses are given than such  a
     command requires, the last one(s) are used.

     Typically, addresses are separated  from  each  other  by  a
     comma  (,).   They may also be separated by a semicolon (;).
     In the latter case, the first  address  is  calculated,  the
     current  line  (.) is set to that value, and then the second
     address is calculated.  This feature can be used  to  deter-
     mine  the  starting  line  for forward and backward searches
     (see Rules 5 and 6, above).  The second address of any  two-
     address  sequence  must  correspond  to a line in the buffer
     that follows the line corresponding to the first address.




































                                                                6





ed(1)                    USER COMMANDS                      ed(1)



     In the following list of ed commands, the parentheses  shown
     prior  to  the  command  are not part of the address; rather
     they show the default address(es) for the command.

     It is generally illegal for more than one command to  appear
     on  a line.  However, any command (except e, f, r, or w) may
     be suffixed by l, n, or p in which case the current line  is
     either  listed,  numbered  or printed, respectively, as dis-
     cussed below under the l, n, and p commands.

     (.)a
     <text>
     .
          The append command accepts zero or more lines  of  text
          and  appends it after the addressed line in the buffer.
          The current line (.) is left at the last inserted line,
          or, if there were none, at the addressed line.  Address
          0 is legal for this command: it causes the ``appended''
          text  to be placed at the beginning of the buffer.  The
          maximum number of characters that may be entered from a
          terminal  is 256 per line (including the new-line char-
          acter).

     (.)c
     <text>
     .
          The change command deletes the addressed lines from the
          buffer,  then  accepts  zero or more lines of text that
          replaces these lines in the buffer.  The  current  line
          (.)  is  left at the last line input, or, if there were
          none, at the first line that was not deleted.

     C
          Same as the X command, described later, except that  ed
          assumes  all  text  read in for the e and r commands is
          encrypted unless a null key is typed in.


     (.,.)d
          The delete command deletes the addressed lines from the
          buffer.   The  line after the last line deleted becomes
          the current line; if the lines deleted were  originally
          at the end of the buffer, the new last line becomes the
          current line.

     e file
          The edit command deletes the  entire  contents  of  the
          buffer  and  then  reads  the contents of file into the
          buffer.  The current line (.) is set to the  last  line
          of  the  buffer.   If  file is not given, the currently
          remembered file name, if any, is used (see the  f  com-
          mand).   The  number  of characters read in is printed;



                                                                7





ed(1)                    USER COMMANDS                      ed(1)



          file is remembered for possible use as a  default  file
          name  in  subsequent  e, r, and w commands.  If file is
          replaced by !, the rest of the line is taken  to  be  a
          shell  [sh(1)]  command  whose output is to be read in.
          Such a shell command is not remembered as  the  current
          file name.  See also DIAGNOSTICS below.

     E file
          The Edit command is like e, except that the editor does
          not  check  to see if any changes have been made to the
          buffer since the last w command.

     f file
          If file is given, the  file-name  command  changes  the
          currently  remembered  file name to file; otherwise, it
          prints the currently remembered file name.

     (1,$)g/RE/command list
          In the global command, the first step is to mark  every
          line  that  matches the given RE.  Then, for every such
          line, the given  command  list  is  executed  with  the
          current  line (.) initially set to that line.  A single
          command or the first of a list of commands  appears  on
          the  same  line  as the global command.  All lines of a
          multi-line list except the last line must be ended with
          a \; a, i, and c commands and associated input are per-
          mitted.  The . terminating input mode may be omitted if
          it  would  be  the  last  line of the command list.  An
          empty command list is equivalent to the p command.  The
          g,  G,  v, and V commands are not permitted in the com-
          mand list.  See also the NOTES and the  last  paragraph
          before FILES below.

     (1,$)G/RE/
          In the interactive Global command, the first step is to
          mark  every  line that matches the given RE.  Then, for
          every such line, that line is printed, the current line
          (.) is changed to that line, and any one command (other
          than one of the a, c, i, g, G, v, and V  commands)  may
          be  input and is executed.  After the execution of that
          command, the next marked line is printed, and so on;  a
          new-line  acts  as  a null command; an & causes the re-
          execution of the most recent  command  executed  within
          the  current  invocation  of G.  Note that the commands
          input as part of the execution of  the  G  command  may
          address and affect any lines in the buffer.  The G com-
          mand can be terminated by an  interrupt  signal  (ASCII
          DEL or BREAK).

     h
          The help command  gives  a  short  error  message  that
          explains the reason for the most recent ? diagnostic.



                                                                8





ed(1)                    USER COMMANDS                      ed(1)



     H
          The Help command causes ed to enter  a  mode  in  which
          error  messages  are printed for all subsequent ? diag-
          nostics.  It will also explain the previous ? if  there
          was  one.  The H command alternately turns this mode on
          and off; it is initially off.

     (.)i
     <text>
     .
          The insert command accepts zero or more lines  of  text
          and inserts it before the addressed line in the buffer.
          The current line (.) is left at the last inserted line,
          or,  if  there  were none, at the addressed line.  This
          command differs from the a command only in  the  place-
          ment  of  the  input  text.  Address 0 is not legal for
          this command.  The maximum number  of  characters  that
          may be entered from a terminal is 256 per line (includ-
          ing the new-line character).

     (.,.+1)j
          The join command joins contiguous lines by removing the
          appropriate   new-line   characters.   If  exactly  one
          address is given, this command does nothing.

     (.)kx
          The mark command marks the addressed line with name  x,
          which  must  be  an ASCII lower-case letter (a-z).  The
          address 'x then addresses this line; the  current  line
          (.) is unchanged.

     (.,.)l
          The list command prints the addressed lines in an unam-
          biguous way:  a few non-printing characters (e.g., tab,
          backspace) are represented by visually  mnemonic  over-
          strikes.  All other non-printing characters are printed
          in octal, and long lines are folded.  An l command  may
          be appended to any command other than e, f, r, or w.

     (.,.)ma
          The move  command  repositions  the  addressed  line(s)
          after  the line addressed by a.  Address 0 is legal for
          a and causes the addressed line(s) to be moved  to  the
          beginning  of  the  file.   It is an error if address a
          falls within the range of moved lines; the current line
          (.) is left at the last line moved.

     (.,.)n
          The number command prints the addressed lines,  preced-
          ing  each  line by its line number and a tab character;
          the current line (.) is left at the last line  printed.
          The n command may be appended to any command other than



                                                                9





ed(1)                    USER COMMANDS                      ed(1)



          e, f, r, or w.

     (.,.)p
          The print  command  prints  the  addressed  lines;  the
          current line (.) is left at the last line printed.  The
          p command may be appended to any command other than  e,
          f,  r,  or w.  For example, dp deletes the current line
          and prints the new current line.

     P
          The editor will prompt with a * for all subsequent com-
          mands.   The  P  command alternately turns this mode on
          and off; it is initially off.

     q
          The quit command causes ed to exit.  No automatic write
          of a file is done; however, see DIAGNOSTICS , below.

     Q
          The editor exits without checking if changes have  been
          made in the buffer since the last w command.

     ($)r file
          The read command reads the contents of  file  into  the
          buffer.  If file is not given, the currently remembered
          file name, if any, is used (see the e and f  commands).
          The  currently  remembered  file  name  is  not changed
          unless file is the very first file name mentioned since
          ed  was  invoked.   Address 0 is legal for r and causes
          the file to be read in at the beginning of the  buffer.
          If  the  read  is  successful, the number of characters
          read in is printed; the current line (.) is set to  the
          last  line read in.  If file is replaced by !, the rest
          of the line is taken to be a shell [see sh(1)]  command
          whose  output  is  to  be read in.  For example, $r !ls
          appends current directory to the end of the file  being
          edited.   Such a shell command is not remembered as the
          current file name.

     (.,.)s/RE/replacement/         or
     (.,.)s/RE/replacement/g        or
     (.,.)s/RE/replacement/n        n = 1-512
          The substitute command searches each addressed line for
          an  occurrence  of  the  specified RE.  In each line in
          which a match is found,  all  (non-overlapped)  matched
          strings  are  replaced by the replacement if the global
          replacement indicator g appears after the command.   If
          the  global  indicator  does not appear, only the first
          occurrence of the matched string  is  replaced.   If  a
          number  n,  appears  after  the  command, only the n-th
          occurrence of the matched string on each addressed line
          is  replaced.  It is an error if the substitution fails



                                                               10





ed(1)                    USER COMMANDS                      ed(1)



          on all addressed lines.  Any character other than space
          or  new-line may be used instead of / to delimit the RE
          and the replacement; the current line (.)  is  left  at
          the  last  line  on which a substitution occurred.  See
          also the last paragraph before FILES below.

          An  ampersand  (&)  appearing  in  the  replacement  is
          replaced  by  the string matching the RE on the current
          line.  The special meaning of & in this context may  be
          suppressed  by  preceding  it  by \.  As a more general
          feature, the characters \n, where n  is  a  digit,  are
          replaced by the text matched by the n-th regular subex-
          pression of the specified RE enclosed  between  \(  and
          \).    When  nested  parenthesized  subexpressions  are
          present, n is determined by counting occurrences of  \(
          starting  from  the  left.  When the character % is the
          only character in the replacement, the replacement used
          in  the  most  recent substitute command is used as the
          replacement in the current substitute command.   The  %
          loses  its  special meaning when it is in a replacement
          string of more than one character or is preceded  by  a
          \.

          A line may be split by substituting a new-line  charac-
          ter  into  it.  The new-line in the replacement must be
          escaped by preceding it by \.  Such substitution cannot
          be done as part of a g or v command list.

     (.,.)ta
          This command acts just like the m command, except  that
          a copy of the addressed lines is placed after address a
          (which may be 0); the current line (.) is left  at  the
          last line copied.

     u
          The undo command  nullifies  the  effect  of  the  most
          recent  command  that  modified anything in the buffer,
          namely the most recent a, c, d, g, i, j, m, r, s, t, v,
          G, or V command.

     (1,$)v/RE/command list
          This command is the  same  as  the  global  command  g,
          except  that the lines marked during the first step are
          those that do not match the RE.

     (1,$)V/RE/
          This command is the same as the interactive global com-
          mand  G,  except  that the lines that are marked during
          the first step are those that do not match the RE.

     (1,$)w file
          The write command writes the addressed lines into file.



                                                               11





ed(1)                    USER COMMANDS                      ed(1)



          If  file  does  not  exist, it is created with mode 666
          (readable and writable by everyone), unless  your  file
          creation  mask  dictates otherwise; see the description
          of the umask special command on sh(1).   The  currently
          remembered  file name is not changed unless file is the
          very first file name mentioned since  ed  was  invoked.
          If no file name is given, the currently remembered file
          name, if any, is used (see the e and f  commands);  the
          current  line (.) is unchanged.  If the command is suc-
          cessful, the number of characters written  is  printed.
          If file is replaced by !, the rest of the line is taken
          to be a shell [see sh(1)] command whose standard  input
          is  the  addressed  lines.  Such a shell command is not
          remembered as the current file name.

     (1,$)W file
          This command is the same as the  write  command  above,
          except  that  it appends the addressed lines to the end
          of file if it exists. If file does  not  exist,  it  is
          created as described above for the w command.

     X
          A key is prompted for, and it is used in subsequent  e,
          r, and w commands to decrypt and encrypt text using the
          crypt(1) algorithm.   An  educated  guess  is  made  to
          determine whether text read in for the e and r commands
          is encrypted.  A null key turns off encryption.  Subse-
          quent e, r, and w commands will use this key to encrypt
          or decrypt the  text  [see  crypt(1)].   An  explicitly
          empty  key  turns  off  encryption.   Also,  see the -x
          option of ed.

     ($)=
          The line number of the addressed  line  is  typed;  the
          current line (.) is unchanged by this command.

     !shell command
          The remainder of the line after the ! is  sent  to  the
          UNIX  system  shell  [see sh(1)] to be interpreted as a
          command.  Within the text of that  command,  the  unes-
          caped  character % is replaced with the remembered file
          name; if a !  appears as the  first  character  of  the
          shell command, it is replaced with the text of the pre-
          vious shell command.  Thus, !!  will  repeat  the  last
          shell  command.   If  any  expansion  is performed, the
          expanded line  is  echoed;  the  current  line  (.)  is
          unchanged.

     (.+1)<new-line>
          An address alone on a line causes the addressed line to
          be printed.  A new-line alone is equivalent to .+1p; it
          is useful for stepping forward through the buffer.



                                                               12





ed(1)                    USER COMMANDS                      ed(1)



     If an interrupt signal (ASCII DEL  or  BREAK)  is  sent,  ed
     prints a ? and returns to its command level.

     Some size limitations:  512 characters in a line, 256  char-
     acters  in  a  global command list, and 64 characters in the
     pathname of a file (counting slashes).   The  limit  on  the
     number  of lines depends on the amount of user memory:  each
     line takes 1 word.

     When reading a file, ed discards ASCII NUL characters.

     If a file is not terminated by a new-line character, ed adds
     one and puts out a message explaining what it did.

     If the closing delimiter of a RE or of a replacement  string
     (e.g.,  /)  would  be  the last character before a new-line,
     that delimiter may be omitted, in which case  the  addressed
     line  is  printed.   The  following  pairs  of  commands are
     equivalent:
          s/s1/s2         s/s1/s2/p
          g/s1            g/s1/p
          ?s1             ?s1?

FILES
     $TMPDIR     if this environmental variable is not null,  its
                 value is used in place of /var/tmp as the direc-
                 tory name for the temporary work file.
     /var/tmp    if /var/tmp exists, it is used as the  directory
                 name for the temporary work file.
     /tmp        if the environmental variable  TMPDIR  does  not
                 exist  or  is  null,  and  if  /var/tmp does not
                 exist, then /tmp is used as the  directory  name
                 for the temporary work file.
     ed.hup      work is saved here if the terminal is hung up.

SEE ALSO
     edit(1), ex(1), grep(1), sed(1), sh(1),  stty(1),  umask(1),
     vi(1).
     fspec(4), regexp(5) in the System Administrator's  Reference
     Manual.

DIAGNOSTICS
     ?           for command errors.

     ?file       for an inaccessible file.
                 (use the help and  Help  commands  for  detailed
                 explanations).

     If changes have been made in the buffer  since  the  last  w
     command  that  wrote the entire buffer, ed warns the user if
     an attempt is made to destroy ed's buffer via  the  e  or  q
     commands.   It prints ?  and allows one to continue editing.



                                                               13





ed(1)                    USER COMMANDS                      ed(1)



     A second e or q command at this point will take effect.  The
     -s command-line option inhibits this feature.

NOTES
     The - option, although it continues  to  be  supported,  has
     been  replaced  in  the  documentation by the -s option that
     follows the Command Syntax Standard [see intro(1)].

     The encryption options and commands are  provided  with  the
     Security  Administration  Utilities package, which is avail-
     able only in the United States.

     A !  command cannot be subject to a g or a v command.

     The !  command and the !  escape from the e, r, and  w  com-
     mands  cannot  be  used if the editor is invoked from a res-
     tricted shell [see sh(1)].

     The sequence \n in a RE does not match a new-line character.

     If the editor input is coming from a command file (e.g.,  ed
     file < ed_cmd_file), the editor exits at the first failure.

































                                                               14



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026