add UNLEASHED_OBJ to unleashed.mk
[unleashed/tickless.git] / share / man / man1 / ed.1
blobb03b58f4ec0a94d72de1e6b71905e267ad459cb2
1 '\" te
2 .\"  Copyright 1989 AT&T  Copyright (c) 2003, Sun Microsystems, Inc.  Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
3 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
4 .\" http://www.opengroup.org/bookstore/.
5 .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
6 .\"  This notice shall appear on any product containing this material.
7 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
8 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
9 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
10 .TH ED 1 "Oct 25, 2017"
11 .SH NAME
12 ed, red \- text editor
13 .SH SYNOPSIS
14 .LP
15 .nf
16 \fB/usr/bin/ed\fR [\fB-s\fR | \fB-\fR] [\fB-p\fR \fIstring\fR] [\fB-x\fR] [\fB-C\fR] [\fIfile\fR]
17 .fi
19 .LP
20 .nf
21 \fB/usr/bin/red\fR [\fB-s\fR | \fB-\fR] [\fB-p\fR \fIstring\fR] [\fB-x\fR] [\fB-C\fR] [\fIfile\fR]
22 .fi
24 .SH DESCRIPTION
25 .sp
26 .LP
27 The \fBed\fR utility is the standard text editor. If \fIfile\fR is specified,
28 \fBed\fR simulates an \fBe\fR command (see below) on the named file. That is,
29 the file is read into \fBed\fR's buffer so that it can be edited.
30 .sp
31 .LP
32 The \fBed\fR utility operates on a copy of the file it is editing. Changes made
33 to the copy have no effect on the file until a \fBw\fR (write) command is
34 given. The copy of the text being edited resides in a temporary file called the
35 \fIbuffer\fR. There is only one buffer.
36 .sp
37 .LP
38 The \fBred\fR utility is a restricted version of \fBed\fR. It will only allow
39 editing of files in the current directory. \fBred\fR prohibits executing shell
40 commands via \fB!\fR\fIshell command\fR. Attempts to bypass these restrictions
41 result in an error message (\fIrestricted shell\fR).
42 .sp
43 .LP
44 Both \fBed\fR and \fBred\fR support the \fBfspec\fR(4) formatting capability.
45 The default terminal mode is either \fBstty\fR \fB-tabs\fR or \fBstty tab3\fR,
46 where tab stops are set at eight columns (see \fBstty\fR(1)). If, however, the
47 first line of \fIfile\fR contains a format specification, that specification
48 will override the default mode. For example, tab stops would be set at 5, 10,
49 and 15, and a maximum line length of 72 would be imposed if the first line of
50 \fIfile\fR contains
51 .sp
52 .in +2
53 .nf
54 \fB<:t5,10,15 s72:>\fR
55 .fi
56 .in -2
57 .sp
59 .sp
60 .LP
61 Commands to \fBed\fR have a simple and regular structure: zero, one, or two
62 \fIaddresses\fR followed by a single-character \fIcommand\fR, possibly followed
63 by parameters to that command. These addresses specify one or more lines in the
64 buffer. Every command that requires addresses has default addresses, so that
65 the addresses can very often be omitted.
66 .sp
67 .LP
68 In general, only one command may appear on a line. Certain commands allow the
69 input of text. This text is placed in the appropriate place in the buffer.
70 While \fBed\fR is accepting text, it is said to be in \fIinput mode\fR. In this
71 mode, \fBno\fR commands are recognized; all input is merely collected. Leave
72 input mode by typing a period (\fB\&.\fR) at the beginning of a line, followed
73 immediately by a carriage return.
74 .sp
75 .LP
76 If \fBed\fR executes commands with arguments, it uses the default shell
77 \fB/usr/bin/sh\fR (see \fBsh\fR(1)).
78 .SS "Regular Expressions"
79 .sp
80 .LP
81 The \fBed\fR utility supports a limited form of \fIregular expression\fR
82 notation. Regular expressions are used in addresses to specify lines and in
83 some commands (for example, \fBs\fR) to specify portions of a line that are to
84 be substituted. To understand addressing in \fBed\fR, it is necessary to know
85 that at any time there is a \fIcurrent line\fR. Generally speaking, the current
86 line is the last line affected by a command. The exact effect on the current
87 line is discussed under the description of each command.
88 .sp
89 .LP
90 Internationalized Basic Regular Expressions are used for all system-supplied
91 locales. See \fBregex\fR(5).
92 .SS "ed Commands"
93 .sp
94 .LP
95 Commands may require zero, one, or two addresses. Commands that require no
96 addresses regard the presence of an address as an error. Commands that accept
97 one or two addresses assume default addresses when an insufficient number of
98 addresses is given; if more addresses are given than such a command requires,
99 the last one(s) are used.
102 Typically, addresses are separated from each other by a comma (\fB,\fR). They
103 may also be separated by a semicolon (\fB;\fR). In the latter case, the first
104 address is calculated, the current line (\fB\&.\fR) is set to that value, and
105 then the second address is calculated. This feature can be used to determine
106 the starting line for forward and backward searches (see Rules 5 and 6, above).
107 The second address of any two-address sequence must correspond to a line in the
108 buffer that follows the line corresponding to the first address.
109 The address can be omitted on either side of the comma or semicolon
110 separator, in which case the resulting address pairs are as follows:
115 box;
116 c | c
117 l | l .
118 Specified       Resulting
120 ,       1 , $
122 , addr  1 , addr
124 addr ,  addr , addr
126 ;       1 ; $
128 ; addr  1 ; addr
130 addr ;  addr ; addr
135 Any <\fIblank\fR>s included between addresses, address separators, or address
136 offsets are ignored.
139 In the following list of \fBed\fR commands, the parentheses shown prior to the
140 command are \fInot\fR part of the address. Rather, the parentheses show the
141 default address(es) for the command.
144 Each address component can be preceded by zero or more blank characters. The
145 command letter can be preceded by zero or more blank characters. If a suffix
146 letter (\fBl\fR, \fBn\fR, or \fBp\fR) is given, it must immediately follow the
147 command.
150 The \fBe\fR, \fBE\fR, \fBf\fR, \fBr\fR, and \fBw\fR commands take an optional
151 \fIfile\fR parameter, separated from the command letter by one or more blank
152 characters.
155 If changes have been made in the buffer since the last \fBw\fR command that
156 wrote the entire buffer, \fBed\fR warns the user if an attempt is made to
157 destroy the editor buffer via the \fBe\fR or \fBq\fR commands. The \fBed\fR
158 utility writes the string:
160 .in +2
162 "?\en"
164 .in -2
169 (followed by an explanatory message if \fIhelp mode\fR has been enabled via the
170 \fBH\fR command) to standard output and continues in command mode with the
171 current line number unchanged. If the \fBe\fR or \fBq\fR command is repeated
172 with no intervening command, \fBed\fR takes effect.
175 If an end-of-file is detected on standard input when a command is expected, the
176 \fBed\fR utility acts as if a \fBq\fR command had been entered.
179 It is generally illegal for more than one command to appear on a line. However,
180 any command (except \fBe\fR, \fBf\fR, \fBr\fR, or \fBw\fR) may be suffixed by
181 \fBl\fR, \fBn\fR, or \fBp\fR in which case the current line is either listed,
182 numbered or written, respectively, as discussed below under the \fBl\fR,
183 \fBn\fR, and \fBp\fR commands.
185 .ne 2
187 \fB\fB(.)a\fR\fR
191 \fB<\fItext\fR> \fR
195 \fB\fB\&.\fR\fR
197 .RS 11n
198 The \fBa\fRppend command accepts zero or more lines of text and appends it
199 after the addressed line in the buffer. The current line (\fB\&.\fR) is left at
200 the last inserted line, or, if there were none, at the addressed line. Address
201 0 is legal for this command: it causes the ``appended'' text to be placed at
202 the beginning of the buffer. The maximum number of characters that may be
203 entered from a terminal is 256 per line (including the new-line character).
207 .ne 2
209 \fB\fB(.,.)c\fR\fR
213 \fB<\fItext\fR>\fR
217 \fB\fB\&.\fR\fR
219 .RS 11n
220 The \fBc\fRhange command deletes the addressed lines from the buffer, then
221 accepts zero or more lines of text that replaces these lines in the buffer. The
222 current line (\fB\&.\fR) is left at the last line input, or, if there were
223 none, at the first line that was not deleted. If the lines deleted were
224 originally at the end of the buffer, the current line number will be set to the
225 address of the new last line. If no lines remain in the buffer, the current
226 line number will be set to 0. Address 0 is valid for this command. It is
227 interpreted as if the address 1 were specified.
233 .ne 2
235 \fB\fBC\fR\fR
237 .RS 11n
238 Same as the \fBX\fR command, described later, except that \fBed\fR assumes all
239 text read in for the \fBe\fR and \fBr\fR commands is encrypted unless a null
240 key is typed in.
244 .ne 2
246 \fB\fB(.,.)d\fR\fR
248 .RS 11n
249 The \fBd\fRelete command deletes the addressed lines from the buffer. The line
250 after the last line deleted becomes the current line. If the lines deleted were
251 originally at the end of the buffer, the new last line becomes the current
252 line. If no lines remain in the buffer, the current line number will be set to
257 .ne 2
259 \fB\fBe\fR \fIfile\fR\fR
261 .RS 11n
262 The \fBe\fRdit command deletes the entire contents of the buffer and then reads
263 the contents of \fIfile\fR into the buffer. The current line (\fB\&.\fR) is set
264 to the last line of the buffer. If \fIfile\fR is not given, the currently
265 remembered file name, if any, is used (see the \fBf\fR command). The number of
266 bytes read will be written to standard output, unless the \fB-s\fR option was
267 specified, in the following format:
269 \fB"%d\en"\fR <\fInumber of bytes read\fR>
271 \fIfile\fR is remembered for possible use as a default file name in subsequent
272 \fBe\fR, \fBE\fR, \fBr\fR, and \fBw\fR commands. If \fIfile\fR is replaced by
273 \fB!\fR, the rest of the line is taken to be a shell ( \fBsh\fR(1)) command
274 whose output is to be read. Such a shell command is \fInot\fR remembered as the
275 current file name.  See also DIAGNOSTICS below. All marks are discarded upon
276 the completion of a successful \fBe\fR command. If the buffer has changed since
277 the last time the entire buffer was written, the user is warned, as described
278 previously.
282 .ne 2
284 \fB\fBE\fR \fIfile\fR\fR
286 .RS 11n
287 The \fBE\fRdit command is like \fBe\fR, except that the editor does not check
288 to see if any changes have been made to the buffer since the last \fBw\fR
289 command.
293 .ne 2
295 \fB\fBf\fR \fIfile\fR\fR
297 .RS 11n
298 If \fIfile\fR is given, the \fBf\fR command changes the currently remembered
299 path name to \fIfile\fR. Whether the name is changed or not, the \fBf\fR
300 command then writes the (possibly new) currently remembered path name to the
301 standard output in the following format:
303 \fB"%s\en"\fR\fIpathname\fR
305 The current line number is unchanged.
309 .ne 2
311 \fB\fB(1,$)g/\fR\fIRE\fR\fB/\fR\fIcommand list\fR\fR
313 .RS 26n
314 In the \fBg\fRlobal command, the first step is to mark every line that matches
315 the given \fIRE\fR. Then, for every such line, the given \fIcommand list\fR is
316 executed with the current line (\fB\&.\fR) initially set to that line. When the
317 \fBg\fR command completes, the current line number has the value assigned by
318 the last command in the command list. If there were no matching lines, the
319 current line number is not changed. A single command or the first of a list of
320 commands appears on the same line as the global command. All lines of a
321 multi-line list except the last line must be ended with a backslash
322 (\fB\e\fR\|); \fBa\fR, \fBi\fR, and \fBc\fR commands and associated input are
323 permitted. The \fB\&.\fR terminating input mode may be omitted if it would be
324 the last line of the \fIcommand list\fR. An empty \fIcommand list\fR is
325 equivalent to the \fBp\fR command. The \fBg\fR, \fBG\fR, \fBv\fR, \fBV\fR, and
326 \fB!\fR commands are \fInot\fR permitted in the \fIcommand list\fR. See also
327 the NOTES and the last paragraph before FILES below. Any character other than
328 space or newline can be used instead of a slash to delimit the \fIRE\fR. Within
329 the \fIRE\fR, the \fIRE\fR delimiter itself can be used as a literal character
330 if it is preceded by a backslash.
334 .ne 2
336 \fB\fB(1,$)G/\fR\fIRE\fR\fB/\fR\fR
338 .RS 26n
339 In the interactive \fBG\fRlobal command, the first step is to mark every line
340 that matches the given \fIRE\fR. Then, for every such line, that line is
341 written to standard output, the current line (\fB\&.\fR) is changed to that
342 line, and any \fIone\fR command (other than one of the \fBa\fR, \fBc\fR,
343 \fBi\fR, \fBg\fR, \fBG\fR, \fBv\fR, and \fBV\fR commands) may be input and is
344 executed. After the execution of that command, the next marked line is written,
345 and so on. A new-line acts as a null command. An \fB&\fR causes the
346 re-execution of the most recent non-null command executed within the current
347 invocation of \fBG\fR. \fBNote:\fR  The commands input as part of the execution
348 of the \fBG\fR command may address and affect \fBany\fR lines in the buffer.
349 The final value of the current line number is the value set by the last command
350 successfully executed. (Notice that the last command successfully executed is
351 the \fBG\fR command itself if a command fails or the null command is
352 specified.) If there were no matching lines, the current line number is not
353 changed. The \fBG\fR command can be terminated by a \fBSIGINT\fR signal. The
354 \fBG\fR command can be terminated by an interrupt signal (ASCII DEL or BREAK).
355 Any character other than space or newline can be used instead of a slash to
356 delimit the \fIRE\fR. Within the \fIRE\fR, the \fIRE\fR delimiter itself can be
357 used as a literal character if it is preceded by a backslash.
361 .ne 2
363 \fB\fBh\fR\fR
365 .RS 26n
366 The \fBhelp\fR command gives a short error message that explains the reason for
367 the most recent \fB?\fR diagnostic. The current line number is unchanged.
371 .ne 2
373 \fB\fBH\fR\fR
375 .RS 26n
376 The \fBHelp\fR command causes \fBed\fR to enter a mode in which error messages
377 are written for all subsequent \fB?\fR diagnostics. It also explains the
378 previous \fB?\fR if there was one. The \fBH\fR command alternately turns this
379 mode on and off; it is initially off. The current line number is unchanged.
383 .ne 2
385 \fB\fB(.,.)i\fR\fR
389 \fB<\fItext\fR>\fR
393 \fB\fB\&.\fR\fR
395 .RS 26n
396 The \fBinsert\fR command accepts zero or more lines of text and inserts it
397 before the addressed line in the buffer. The current line (\fB\&.\fR) is left
398 at the last inserted line, or, if there were none, at the addressed line. This
399 command differs from the \fBa\fR command only in the placement of the input
400 text. The maximum number of characters that may be entered from a terminal is
401 256 per line (including the new-line character). Address 0 is valid for this
402 command. It is interpreted as if the address 1 were specified.
408 .ne 2
410 \fB\fB(.,.+1)j\fR\fR
412 .RS 26n
413 The \fBj\fRoin command joins contiguous lines by removing the appropriate
414 new-line characters. If exactly one address is given, this command does
415 nothing. If lines are joined, the current line number is set to the address of
416 the joined line. Otherwise, the current line number is unchanged.
420 .ne 2
422 \fB\fB(.)k\fR\fIx\fR\fR
424 .RS 26n
425 The mar\fBk\fR command marks the addressed line with name \fIx\fR, which must
426 be an ASCII lower-case letter (\fBa\fR\fB-\fR\fBz\fR). The address \fI a\'x\fR
427 then addresses this line. The current line (\fB\&.\fR) is unchanged.
431 .ne 2
433 \fB\fB(.,.)l\fR\fR
435 .RS 26n
436 The \fBl\fR command writes to standard output the addressed lines in a visually
437 unambiguous form. The characters ( \fB\e\e\fR, \fB\ea\fR, \fB\eb\fR, \fB\ef\fR,
438 \fB\er\fR, \fB\et\fR, \fB\ev\fR) are written as the corresponding escape
439 sequence. The \fB\en\fR in that table is not applicable. Non-printable
440 characters not in the table are written as one three-digit octal number (with a
441 preceding backslash character) for each byte in the character, with the most
442 significant byte first.
444 Long lines are folded, with the point of folding indicated by writing
445 backslash/newline character. The length at which folding occurs is unspecified,
446 but should be appropriate for the output device. The end of each line is marked
447 with a \fB$\fR. The end of each line is marked with a 
448 \fB$\fR due to folding, and \fB$\fR characters within the
449 text are written with a preceding backslash. An \fBl\fR command can be appended
450 to any other command other than \fBe\fR, \fBE\fR, \fBf\fR, \fBq\fR, \fBQ\fR,
451 \fBr\fR, \fBw\fR, or \fB!\fR. The current line number is set to the address of
452 the last line written.
456 .ne 2
458 \fB\fB(.,.)m\fR\fIa\fR\fR
460 .RS 26n
461 The \fBm\fRove command repositions the addressed line(s) after the line
462 addressed by \fIa\fR. Address 0 is legal for \fIa\fR and causes the addressed
463 line(s) to be moved to the beginning of the file. It is an error if address
464 \fIa\fR falls within the range of moved lines. The current line (\fB\&.\fR) is
465 left at the last line moved.
469 .ne 2
471 \fB\fB(.,.)n\fR\fR
473 .RS 26n
474 The \fBn\fRumber command writes the addressed lines, preceding each line by its
475 line number and a tab character. The current line (\fB\&.\fR) is left at the
476 last line written. The \fBn\fR command may be appended to any command other
477 than \fBe\fR, \fBE\fR, \fBf\fR, \fBq\fR, \fBQ\fR, \fBr\fR, \fBw\fR, or \fB!\fR.
481 .ne 2
483 \fB\fB(.,.)p\fR\fR
485 .RS 26n
486 The \fBp\fRrint command writes the addressed lines to standard output. The
487 current line (\fB\&.\fR) is left at the last line written. The \fBp\fR command
488 may be appended to any command other than \fBe\fR, \fBE\fR, \fBf\fR, \fBq\fR,
489 \fBQ\fR, \fBr\fR, \fBw\fR, or \fB!\fR. For example, \fBdp\fR deletes the
490 current line and writes the new current line.
494 .ne 2
496 \fB\fBP\fR\fR
498 .RS 26n
499 The \fBP\fR command causes \fBed\fR to prompt with an asterisk (\fB*\fR) (or
500 \fIstring\fR, if \fB-p\fR is specified) for all subsequent commands. The
501 \fBP\fR command alternatively turns this mode on and off; it is initially on if
502 the \fB-p\fR option is specified, otherwise off. The current line is unchanged.
506 .ne 2
508 \fB\fBq\fR\fR
510 .RS 26n
511 The \fBq\fRuit command causes \fBed\fR to exit. If the buffer has changed since
512 the last time the entire buffer was written, the user is warned. See
513 DIAGNOSTICS.
517 .ne 2
519 \fB\fBQ\fR\fR
521 .RS 26n
522 The editor exits without checking if changes have been made in the buffer since
523 the last \fBw\fR command.
527 .ne 2
529 \fB\fB($)r\fR \fIfile\fR\fR
531 .RS 26n
532 The \fBr\fRead command reads the contents of \fIfile\fR into the buffer. If
533 \fIfile\fR is not given, the currently remembered file name, if any, is used
534 (see the \fBe\fR and \fBf\fR commands). The currently remembered file name is
535 \fBnot\fR changed unless \fIfile\fR is the very first file name mentioned since
536 \fBed\fR was invoked. Address 0 is legal for \fBr\fR and causes the file to be
537 read in at the beginning of the buffer. If the read is successful and the
538 \fB-s\fR option was not specified, the number of characters read is written to
539 standard output in the following format:
541 .in +2
543 \fB%d\en\fR, <\fInumber of bytes read\fR>
545 .in -2
548 The current line (\fB\&.\fR) is set to the last line read. If \fIfile\fR is
549 replaced by \fB!\fR, the rest of the line is taken to be a shell command (see
550 \fBsh\fR(1)) whose output is to be read. For example, \fB$r !ls\fR appends the
551 current directory to the end of the file being edited. Such a shell command is
552 \fBnot\fR remembered as the current file name.
556 .ne 2
558 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/\fR\fR
562 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/\fR\fIcount\fR,
563 \fIcount\fR=[\fB1-2047\fR]\fR
567 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/g\fR\fR
571 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/l\fR\fR
575 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/n\fR\fR
579 \fB\fB(.,.)s/\fR\fIRE\fR\fB/\fR\fIreplacement\fR\fB/p\fR\fR
581 .sp .6
582 .RS 4n
583 The \fBs\fRubstitute command searches each addressed line for an occurrence of
584 the specified \fIRE\fR. Zero or more substitution commands can be specified. In
585 each line in which a match is found, all (non-overlapped) matched strings are
586 replaced by the \fIreplacement\fR if the global replacement indicator \fBg\fR
587 appears after the command. If the global indicator does not appear, only the
588 first occurrence of the matched string is replaced. If a number \fIcount\fR
589 appears after the command, only the \fIcount\fR-th occurrence of the matched
590 string on each addressed line is replaced. It is an error if the substitution
591 fails on \fBall\fR addressed lines. Any character other than space or new-line
592 may be used instead of the slash (\fB/\fR) to delimit the \fIRE\fR and the
593 \fIreplacement\fR. The current line (\fB\&.\fR) is left at the last line on
594 which a substitution occurred. Within the \fIRE\fR, the \fIRE\fR delimiter
595 itself can be used as a literal character if it is preceded by a backslash. See
596 also the last paragraph before FILES below.
598 An ampersand (\fB&\fR) appearing in the \fIreplacement\fR is replaced by the
599 string matching the \fIRE\fR on the current line. The special meaning of
600 \fB&\fR in this context may be suppressed by preceding it by \fB\e\fR\|. As a
601 more general feature, the characters \fB\e\fR\fIn\fR, where \fIn\fR is a digit,
602 are replaced by the text matched by the \fIn\fR-th regular subexpression of the
603 specified \fIRE\fR enclosed between \fB\e(\fR and \fB\e)\fR\&. When nested
604 parenthesized subexpressions are present, \fIn\fR is determined by counting
605 occurrences of \fB\e(\fR starting from the left. When the character \fB%\fR is
606 the only character in the \fIreplacement\fR, the \fIreplacement\fR used in the
607 most recent substitute command is used as the \fIreplacement\fR in the current
608 substitute command. If there was no previous substitute command, the use of
609 \fB%\fR in this manner is an error. The \fB%\fR loses its special meaning when
610 it is in a replacement string of more than one character or is preceded by a
611 \fB\e\fR\|. For each backslash (\e) encountered in scanning \fIreplacement\fR
612 from beginning to end, the following character loses its special meaning (if
613 any). It is unspecified what special meaning is given to any character other
614 than \fB&\fR, \fB\e\fR, \fB%\fR, or digits.
616 A line may be split by substituting a new-line character into it. The new-line
617 in the \fIreplacement\fR must be escaped by preceding it by \fB\e\fR\&. Such
618 substitution cannot be done as part of a \fBg\fR or \fBv\fR command list. The
619 current line number is set to the address of the last line on which a
620 substitution is performed. If no substitution is performed, the current line
621 number is unchanged. If a line is split, a substitution is considered to have
622 been performed on each of the new lines for the purpose of determining the new
623 current line number. A substitution is considered to have been performed even
624 if the replacement string is identical to the string that it replaces.
626 The substitute command supports the following indicators:
628 .ne 2
630 \fB\fIcount\fR\fR
632 .RS 9n
633 Substitute for the \fIcount\fRth occurrence only of the \fIRE\fR found on each
634 addressed line. \fIcount\fR must be between \fB1\fR-\fB2047\fR.
638 .ne 2
640 \fB\fBg\fR\fR
642 .RS 9n
643 Globally substitute for all non-overlapping instances of the \fIRE\fR rather
644 than just the first one. If both \fBg\fR and \fIcount\fR are specified, the
645 results are unspecified.
649 .ne 2
651 \fB\fBl\fR\fR
653 .RS 9n
654 Write to standard output the final line in which a substitution was made. The
655 line is written in the format specified for the \fBl\fR command.
659 .ne 2
661 \fB\fBn\fR\fR
663 .RS 9n
664 Write to standard output the final line in which a substitution was made. The
665 line is written in the format specified for the \fBn\fR command.
669 .ne 2
671 \fB\fBp\fR\fR
673 .RS 9n
674 Write to standard output the final line in which a substitution was made. The
675 line will be written in the format specified for the \fBp\fR command.
681 .ne 2
683 \fB\fB(.,.)t\fR\fIa\fR\fR
685 .sp .6
686 .RS 4n
687 This command acts just like the \fBm\fR command, except that a \fIcopy\fR of
688 the addressed lines is placed after address \fBa\fR (which may be 0). The
689 current line (\fB\&.\fR) is left at the last line copied.
693 .ne 2
695 \fB\fBu\fR\fR
697 .sp .6
698 .RS 4n
699 The \fBu\fRndo command nullifies the effect of the most recent command that
700 modified anything in the buffer, namely the most recent \fBa\fR, \fBc\fR,
701 \fBd\fR, \fBg\fR, \fBi\fR, \fBj\fR, \fBm\fR, \fBr\fR, \fBs\fR, \fBt\fR,
702 \fBu\fR, \fBv\fR, \fBG\fR, or \fBV\fR command. All changes made to the buffer
703 by a \fBg\fR, \fBG\fR, \fBv\fR, or \fBV\fR global command is undone as a single
704 change.If no changes were made by the global command (such as with \fBg/\fR
705 \fIRE\fR\fB/p\fR), the \fBu\fR command has no effect. The current line number
706 is set to the value it had  immediately before the  command being undone
707 started.
711 .ne 2
713 \fB\fB(1,$)v/\fR\fIRE\fR\fB/\fR\fIcommand list\fR\fR
715 .sp .6
716 .RS 4n
717 This command is the same as the global command \fBg\fR, except that the lines
718 marked during the first step are those that do \fBnot\fR match the \fIRE\fR.
722 .ne 2
724 \fB\fB(1,$)V/\fR\fIRE\fR\fB/\fR\fR
726 .sp .6
727 .RS 4n
728 This command is the same as the interactive global command \fBG\fR, except that
729 the lines that are marked during the first step are those that do \fBnot\fR
730 match the \fIRE\fR.
734 .ne 2
736 \fB\fB(1,$)w\fR \fIfile\fR\fR
738 .sp .6
739 .RS 4n
740 The \fBw\fRrite command writes the addressed lines into \fIfile\fR. If
741 \fIfile\fR does not exist, it is created with mode \fB666\fR (readable and
742 writable by everyone), unless your file creation mask dictates otherwise. See
743 the description of the \fBumask\fR special command on \fBsh\fR(1). The
744 currently remembered file name is \fBnot\fR changed unless \fIfile\fR is the
745 very first file name mentioned since \fBed\fR was invoked. If no file name is
746 given, the currently remembered file name, if any, is used (see the \fBe\fR and
747 \fBf\fR commands). The current line (\fB\&.\fR) is unchanged. If the command is
748 successful, the number of characters written is printed, unless the \fB-s\fR
749 option is specified in the following format:
751 .in +2
753 \fB"%d\en",\fR<\fInumber of bytes written\fR>
755 .in -2
758 If \fIfile\fR is replaced by \fB!\fR, the rest of the line is taken to be a
759 shell (see \fBsh\fR(1)) command whose standard input is the addressed lines.
760 Such a shell command is \fInot\fR remembered as the current path name. This
761 usage of the write command with \fB!\fR is to be considered as a ``last \fBw\fR
762 command that wrote the entire buffer''.
766 .ne 2
768 \fB\fB(1,$)W\fR \fIfile\fR\fR
770 .RS 19n
771 This command is the same as the \fBw\fRrite command above, except that it
772 appends the addressed lines to the end of \fIfile\fR if it exists. If
773 \fIfile\fR does not exist, it is created as described above for the \fBw\fR
774 command.
778 .ne 2
780 \fB\fBX\fR\fR
782 .RS 19n
783 An educated guess is made to determine whether text read for the \fBe\fR and
784 \fBr\fR commands is encrypted. A null key turns off encryption. Subsequent
785 \fBe\fR, \fBr\fR, and \fBw\fR commands will use this key to encrypt or decrypt
786 the text. An explicitly empty key turns off encryption. Also, see the \fB-x\fR
787 option of \fBed\fR.
791 .ne 2
793 \fB\fB($)=\fR\fR
795 .RS 19n
796 The line number of the addressed line is written to standard output in the
797 following format:
799 .in +2
801 \fB"%d\en"\fR<\fIline number\fR>
803 .in -2
806 The current line number is unchanged by this command.
810 .ne 2
812 \fB\fB!\fR\fIshell command\fR\fR
814 .RS 19n
815 The remainder of the line after the \fB!\fR is sent to the UNIX system shell
816 (see \fBsh\fR(1)) to be interpreted as a command. Within the text of that
817 command, the unescaped character \fB%\fR is replaced with the remembered file
818 name. If a \fB!\fR appears as the first character of the shell command, it is
819 replaced with the text of the previous shell command. Thus, \fB!!\fR repeats
820 the last shell command. If any replacements of \fB%\fR or \fB!\fR are
821 performed, the modified line is written to the standard output before
822 \fIcommand\fR is executed. The \fB!\fR command will write:
824 \fB"!\en"\fR
826 to standard output upon completion, unless the \fB-s\fR option is specified.
827 The current line number is unchanged.
831 .ne 2
833 \fB\fB(.+1)\fR<new-line>\fR
835 .RS 19n
836 An address alone on a line causes the addressed line to be written. A new-line
837 alone is equivalent to \fB\&.+1p\fR. It is useful for stepping forward through
838 the buffer. The current line number will be set to the address of the written
839 line.
844 If an interrupt signal (ASCII DEL or BREAK) is sent, \fBed\fR writes a
845 "\fB?\en\fR" and returns to \fBits\fR command level.
848 The \fBed\fR utility takes the standard action for all signals with the
849 following exceptions:
851 .ne 2
853 \fB\fBSIGINT\fR\fR
855 .RS 10n
856 The \fBed\fR utility interrupts its current activity, writes the string
857 "\fB?\en\fR" to standard output, and returns to command mode.
861 .ne 2
863 \fB\fBSIGHUP\fR\fR
865 .RS 10n
866 If the buffer is not empty and has changed since the last write, the \fBed\fR
867 utility attempts to write a copy of the buffer in a file. First, the file named
868 \fBed.hup\fR in the current directory is used. If that fails, the file named
869 \fBed.hup\fR in the directory named by the \fBHOME\fR environment variable is
870 used. In any case, the \fBed\fR utility exits without returning to command
871 mode.
876 Some size limitations are in effect: 512 characters in a line, 256 characters
877 in a global command list, and 255 characters in the path name of a file
878 (counting slashes). The limit on the number of lines depends on the amount of
879 user memory. Each line takes 1 word.
882 When reading a file, \fBed\fR discards \fBASCII\fR and \fBNUL\fR characters.
885 If a file is not terminated by a new-line character, \fBed\fR adds one and puts
886 out a message explaining what it did.
889 If the closing delimiter of an \fBRE\fR or of a replacement string (for
890 example, \fB/\fR) would be the last character before a new-line, that delimiter
891 may be omitted, in which case the addressed line is written. The following
892 pairs of commands are equivalent:
894 .ne 2
896 \fB\fBs/s1/s2\fR\fR
898 .RS 11n
899 \fBs/s1/s2/p\fR
903 .ne 2
905 \fB\fBg/s1\fR\fR
907 .RS 11n
908 \fBg/s1/p\fR
912 .ne 2
914 \fB\fB?s1\fR\fR
916 .RS 11n
917 \fB?s1?\fR
922 If an invalid command is entered, \fBed\fR writes the string:
925 \fB"?\en"\fR
928 (followed by an explanatory message if \fIhelp mode\fR has been enabled by the
929 \fBH\fR command) to standard output and continues in command mode with the
930 current line number unchanged.
931 .SH OPTIONS
933 .ne 2
935 \fB\fB-C\fR\fR
937 .RS 13n
938 Encryption option. The same as the \fB-x\fR option, except that \fBed\fR
939 simulates a \fBC\fR command. The \fBC\fR command is like the \fBX\fR command,
940 except that all text read in is assumed to have been encrypted.
944 .ne 2
946 \fB\fB\fR\fB-p\fR\fIstring\fR \fR
948 .RS 13n
949 Allows the user to specify a prompt string. By default, there is no prompt
950 string.
954 .ne 2
956 \fB\fB-s\fR |  \fB-;\fR\fR
958 .RS 13n
959 Suppresses the writing of character counts by \fBe\fR, \fBr\fR, and \fBw\fR
960 commands, of diagnostics from \fBe\fR and \fBq\fR commands, and of the \fB!\fR
961 prompt after a \fB!\fR\fIshell command\fR.
965 .ne 2
967 \fB\fB-x\fR\fR
969 .RS 13n
970 Encryption option. When \fB-x\fR is used, \fBed\fR simulates an \fBX\fR command
971 and prompts the user for a key. The \fBX\fR command makes an educated guess to
972 determine whether text read in is encrypted or not. The temporary buffer file
973 is encrypted also, using a transformed version of the key typed in for the
974 \fB-x\fR option. See NOTES.
977 .SH OPERANDS
980 The following operand is supported:
982 .ne 2
984 \fB\fIfile\fR\fR
986 .RS 8n
987 If \fIfile\fR is specified, \fBed\fR simulates an \fBe\fR command on the file
988 named by the path name \fIfile\fR before accepting commands from the standard
989 input.
992 .SH USAGE
995 See \fBlargefile\fR(5) for the description of the behavior of \fBed\fR and
996 \fBred\fR when encountering files greater than or equal to 2 Gbyte ( 2^31
997 bytes).
998 .SH ENVIRONMENT VARIABLES
1001 See \fBenviron\fR(5) for descriptions of the following environment variables
1002 that affect the execution of \fBed\fR: \fBHOME\fR, \fBLANG\fR, \fBLC_ALL\fR,
1003 \fBLC_CTYPE\fR, \fBLC_COLLATE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR.
1004 .SH EXIT STATUS
1007 The following exit values are returned:
1009 .ne 2
1011 \fB\fB0\fR\fR
1013 .RS 6n
1014 Successful completion without any file or command errors.
1018 .ne 2
1020 \fB\fB>0\fR\fR
1022 .RS 6n
1023 An error occurred.
1026 .SH FILES
1028 .ne 2
1030 \fB\fB$TMPDIR\fR\fR
1032 .RS 12n
1033 If this environment variable is not \fINULL\fR, its value is used in place of
1034 \fB/var/tmp\fR as the directory name for the temporary work file.
1038 .ne 2
1040 \fB\fB/var/tmp\fR\fR
1042 .RS 12n
1043 If \fB/var/tmp\fR exists, it is used as the directory name for the temporary
1044 work file.
1048 .ne 2
1050 \fB\fB/tmp\fR\fR
1052 .RS 12n
1053 If the environment variable \fBTMPDIR\fR does not exist or is \fINULL,\fR and
1054 if \fB/var/tmp\fR does not exist, then \fB/tmp\fR is used as the directory name
1055 for the temporary work file.
1059 .ne 2
1061 \fB\fBed.hup\fR\fR
1063 .RS 12n
1064 Work is saved here if the terminal is hung up.
1067 .SH ATTRIBUTES
1070 See \fBattributes\fR(5) for descriptions of the following attributes:
1071 .SS "/usr/bin/red"
1076 box;
1077 c | c
1078 l | l .
1079 ATTRIBUTE TYPE  ATTRIBUTE VALUE
1081 CSI     Enabled
1084 .SS "/usr/bin/ed"
1089 box;
1090 c | c
1091 l | l .
1092 ATTRIBUTE TYPE  ATTRIBUTE VALUE
1094 CSI     Enabled
1096 Interface Stability     Standard
1099 .SH SEE ALSO
1102 \fBedit\fR(1), \fBex\fR(1), \fBgrep\fR(1), \fBksh\fR(1),
1103 \fBsed\fR(1), \fBsh\fR(1), \fBstty\fR(1), \fBumask\fR(1), \fBvi\fR(1),
1104 \fBfspec\fR(4), \fBattributes\fR(5), \fBenviron\fR(5), \fBlargefile\fR(5),
1105 \fBregex\fR(5), \fBstandards\fR(5)
1106 .SH DIAGNOSTICS
1108 .ne 2
1110 \fB\fB?\fR\fR
1112 .RS 9n
1113 for command errors.
1117 .ne 2
1119 \fB\fB?\fR\fIfile\fR\fR
1121 .RS 9n
1122 for an inaccessible file. Use the \fBh\fRelp and \fBH\fRelp commands for
1123 detailed explanations.
1128 If changes have been made in the buffer since the last \fBw\fR command that
1129 wrote the entire buffer, \fBed\fR warns the user if an attempt is made to
1130 destroy \fBed\fR's buffer via the \fBe\fR or \fBq\fR commands. It writes
1131 \fB?\fR and allows one to continue editing. A second \fBe\fR or \fBq\fR command
1132 at this point will take effect. The \fB-s\fR command-line option inhibits this
1133 feature.
1134 .SH NOTES
1137 The \fB-\fR option, although it continues to be supported, has been replaced in
1138 the documentation by the \fB-s\fR option that follows the \fBCommand Syntax
1139 Standard\fR (see \fBIntro\fR(1)).
1142 A \fB!\fR command cannot be subject to a \fBg\fR or a \fBv\fR command.
1145 The \fB!\fR command and the \fB!\fR escape from the \fBe\fR, \fBr\fR, and
1146 \fBw\fR commands cannot be used if the editor is invoked from a restricted
1147 shell (see \fBsh\fR(1)).
1150 The sequence \fB\en\fR in an \fBRE\fR does not match a new-line character.
1153 If the editor input is coming from a command file (for example, \fBed\fR
1154 \fIfile\fR \fB<\fR \fIed_cmd_file\fR), the editor exits at the first failure.
1157 Loading an alternate \fBmalloc()\fR library using the environment variable
1158 \fBLD_PRELOAD\fR can cause problems for \fB/usr/bin/ed\fR.