ied — input editor and command history for interactive programs
utility command is intended to act as an interface
between the user and an interactive program such as
or a shell, providing most of the line editing
and history functionality found in the Korn shell.
name as the command to be executed, and passes
as the arguments to the utility.
Subsequent input to
then has access to editing and history functions
very similar to those provided by
monitors the state of the pty it uses to run the command;
whenever the application it is running
changes the state from the state of the tty when
This allows programs to do shell escapes to screen-smart programs.
should not in any way interfere with any action
taken by any program for which it provides a front end.
This includes Korn shell itself:
in this case
would provide history for any application that was run by
would provide its own independent history.
In a useful extreme case,
can be used as a front end to the login shell (which might be
In this case, all applications that use normal line editing
gain line editing and history, sharing a single history.
The shell would continue to have its own independent history
if it provides such a mechanism.
is in its transparent mode, no history is saved.
In particular the
does not use normal line editing (rather, it simulates it) and
cannot provide history in this case.
and address line editing of mailx also cannot be edited with
Several options and command-line arguments control
Print information about the operation of the program.
It is best used to determine if a program puts
into transparent mode unexpectedly.
- -h filename
Keep the history in a file named
If a file of that name already exists and is a history file,
the latter part of it (the last
lines as specified by the
option) is used as the initial value of the history.
option is not used, the environment variable
is used to supply the name.
If neither is present, an unnamed temporary file is used,
and no initial value is provided.
Force interactive mode.
the command to which it is asked to be a front end
when the standard input is not a tty
(this allows aliases to be used for commands
used in shells without interfering with their operation).
This option forces
to remain as a front end, and all editing functions are in place.
This permits a utility that behaves differently in interactive
and batch modes to be driven from a pipe or file in interactive mode.
This is particularly useful in testing commands that make this distinction.
- -k charmap
is a file of 256 or fewer lines.
The line number in the file
is the ordinal of a character as seen as input by
and the character on the line is the character generated as output
(and also used as editing characters).
This allows remapping of (ordinary) keys
such as for a Dvorak keyboard.
Characters must start in column one of each line,
and be represented as 1-4 characters followed by a space
or the newline character for the next line.
Characters after the space are ignored as comments.
Single-character entries represent themselves.
Two-character entries where the first character is a circumflex
converts the second character
to the corresponding control character.
Two-character sequences where the first character is backslash
use the C language conventions:
|\b||backspace|| || |
Three- and four-character sequences must be
giving the octal value for the character.
is less than 256 lines long,
the remaining characters are mapped to themselves.
- -p prompt
Many commands do not prompt when ready for input.
approximates a prompting mechanism for such commands.
This is not always perfectly successful,
but for many commands it helps.
In the worst case, the prompt is interspersed with output
in the wrong location.
is a string as used in the format argument to
conversions that can be included are up to one instance of
which is converted to the sequential number of the command,
and any number of occurrences of
which is treated as a literal
Prompting is suppressed when
is operating in transparent mode.
This sets "non-raw" mode.
uses its own editing capabilities when reading simple text.
to use tty line discipline most of the time.
The disadvantage of the default mode
is that more context switches and general processing are required.
The advantage is that
is more transparent.
For example, to specifically send an end-of-file in the non-raw mode
requires that the end-of-file character (usually Ctrl-D)
be followed by a carriage return.
Similarly the "literal next" function (Ctrl-V)
cannot escape the line-erase and line-kill functions in non-raw mode.
- -s size
This option specifies the size of the history buffer.
is started with an existing history file, approximately the last
lines are available to the history mechanism
(the number is not guaranteed to be exactly
Other lines in the file are retained until such time as
is started on that history file
and it exceeds approximately 4K bytes in size, at which time
discards older entries at the beginning of the file
until it is near 4 KB in size.
Since this occurs only at startup,
history files can grow to be quite large between restarts.
Larger values of
make the process image larger.
is not specified, the value of the environment variable
If neither is specified, a default is used.
Set transparent mode.
to permanently be in transparent mode (as discussed above).
It is primarily useful with
for some classes of automated processing.
In particular, it is useful for driving a command
if the command takes as input what
would interpret as editing characters.
Thus with the appropriate combinations of
it is possible to drive an editor such as
or a screen-smart application from a batch file.
Should something go wrong with
signal, repeated 3 times, usually aborts
The exception is the case of a fully transparent application, where
must be killed from another window or terminal.
This is really relevant only when there is no way
to direct the serviced process to terminate itself.
The editing capabilities of
are essentially those found in
Only those that differ from
are described below.
the style of editing is determined from the environment variable
is not specified.
The value examined should end in
to specify an editor type.
If it does not,
does no editing, and history is not accessible.
Considering the most recently edited line
(which is empty immediately after a line is sent to the application)
to be the "last line" of the history,
the current line being displayed from the history
is appended to the end of the last line,
and the position in the history is reset to be at the last line
which is then displayed.
A space is inserted between the old and new text on the last line.
The cursor is left on that space.
understanding of line continuation is minimal,
this is useful for editing long statements.
Sends nothing to the application, but inserts the line in the history
(useful for adding comments to history file).
(File name expansion).
Note however that
has a rarely-used function
that substitutes words from the previous line (this is not the macro
but rather an editor command).
If a preceding
is given, it uses the
word of the last line.
This is much more useful with
- M-*, M-=, M-ESC
(file name expansion)
Note that the command
(and its synonym
provide the same functionality as the
- Macro expansion.
Although supported, it may not always appear correctly on the screen.
command can be used to redraw the line.
See below for the discussion on prompting.
Add interactive editing to the
using comands taken from
cat script | ied -i -t vi testfile
Note that, without the use of
would misbehave because its standard input would not be a terminal device.
In this case, the
is not required because
puts itself in raw mode, but for an application that does not,
might be required.
The command line
ied -i -t grep '^x:' data_file | tee x_lines
searches the file
for lines beginning with
sending one copy to the terminal and a second to file
just like the command line
grep '^x:' data_file | tee x_lines
The difference is that in the command line without
writes directly to a pipe, and thus buffers its output.
is very large and not many lines match the pattern,
output to the terminal is delayed.
the output of
goes to a pty instead, which causes
to output each line as it is ready.
cannot know everything about every application,
it is possible that it can become confused,
with either the timing or the prompt
being out of phase with the application.
Since the use of
is never required, it is the user's choice to determine
whether the application is more usable with or without
In general, however, programs that do not confuse
are usually also the most likely to benefit from its use.
tries to intuit the currently active prompt
when it is not providing one itself.
However, this is not always successful.
Even when it is successful, the timing of
and the serviced command may occasionally confuse the output.
commands in both
modes redraw the edit line
in a consistent fashion that can be used to create the next command.
was developed by HP.