User Commands history(1)
NAME
history, fc, hist - process command history list
SYNOPSIS
/usr/bin/fc [-r] [-e editor] [first [last]
/usr/bin/fc -l [-nr] [first [last]
/usr/bin/fc -s [old=new] [first]
csh
history [-hr] [n]
ksh
fc -e - [old=new] [command]
fc -s [old = new] [command]
fc [-e ename] [-nlr] [first [last]
ksh93
hist [-lnprs] [-e editor][-N num][first[last]
DESCRIPTION
/usr/bin/fc
The fc utility lists or edits and reexecutes, commands pre-
viously entered to an interactive sh.
The command history list references commands by number. The
first number in the list is selected arbitrarily. The rela-
tionship of a number to its command does not change except
when the user logs in and no other process is accessing the
list, at which time the system can reset the numbering to
start the oldest retained command at another number (usually
1). When the number reaches the value in HISTSIZE or 32767
(whichever is greater), the shell can wrap the numbers,
starting the next command with a lower number (usually 1).
However, despite this optional wrapping of numbers, fc main-
tains the time-ordering sequence of the commands. For exam-
ple, if four commands in sequence are given the numbers 32
766, 32 767, 1 (wrapped), and 2 as they are executed, com-
mand 32 767 is considered the command previous to 1, even
though its number is higher.
SunOS 5.11 Last change: 2 Nov 2007 1
User Commands history(1)
When commands are edited (when the -l option is not speci-
fied), the resulting lines is entered at the end of the his-
tory list and then reexecuted by sh. The fc command that
caused the editing is not entered into the history list. If
the editor returns a non-zero exit status, this suppresses
the entry into the history list and the command reexecution.
Any command-line variable assignments or redirection opera-
tors used with fc affects both the fc command itself as well
as the command that results, for example:
fc -s -- -1 2>/dev/null
reinvokes the previous command, suppressing standard error
for both fc and the previous command.
csh
Display the history list. If n is given, display only the n
most recent events.
-r Reverse the order of printout to be most recent first
rather than oldest first.
-h Display the history list without leading numbers. This
is used to produce files suitable for sourcing using
the -h option to the csh built-in command, source(1).
History Substitution:
History substitution allows you to use words from previous
command lines in the command line you are typing. This sim-
plifies spelling corrections and the repetition of compli-
cated commands or arguments. Command lines are saved in the
history list, the size of which is controlled by the history
variable. The history shell variable can be set to the max-
imum number of command lines that is saved in the history
file, that is:
set history = 200
allows the history list to keep track of the most recent 200
command lines. If not set, the C shell saves only the most
recent command.
A history substitution begins with a ! (although you can
change this with the histchars variable) and can occur
SunOS 5.11 Last change: 2 Nov 2007 2
User Commands history(1)
anywhere on the command line; history substitutions do not
nest. The ! can be escaped with \ to suppress its special
meaning.
Input lines containing history substitutions are echoed on
the terminal after being expanded, but before any other sub-
stitutions take place or the command gets executed.
Event Designators:
An event designator is a reference to a command line entry
in the history list.
!
Start a history substitution, except when followed by a
space character, tab, newline, = or (.
!!
Refer to the previous command. By itself, this substitu-
tion repeats the previous command.
!n
Refer to command line n.
!-n
Refer to the current command line minus n.
!str
Refer to the most recent command starting with str.
!?str?
Refer to the most recent command containing str.
!?str? additional
Refer to the most recent command containing str and
append additional to that referenced command.
SunOS 5.11 Last change: 2 Nov 2007 3
User Commands history(1)
!{command} additional
Refer to the most recent command beginning with command
and append additional to that referenced command.
^previousword^replacement^
Repeat the previous command line replacing the string
previousword with the string replacement. This is
equivalent to the history substitution:
Repeat the previous command line replacing the string
previousword with the string replacement. This is
equivalent to the history substitution:
!:s/previousword/replacement/.
To re-execute a specific previous command and make such
a substitution, say, re-executing command #6:
!:6s/previousword/replacement/.
Word Designators:
A `:' (colon) separates the event specification from the
word designator. 2It can be omitted if the word designator
begins with a ^, $, *, - or %. If the word is to be selected
from the previous command, the second ! character can be
omitted from the event specification. For instance, !!:1 and
!:1 both refer to the first word of the previous command,
while !!$ and !$ both refer to the last word in the previous
command. Word designators include:
# The entire command line typed so far.
0 The first input word (command).
n The n'th argument.
^ The first argument, that is, 1.
$ The last argument.
% The word matched by (the most recent) ?s search.
SunOS 5.11 Last change: 2 Nov 2007 4
User Commands history(1)
x-y A range of words; -y abbreviates 0-y.
* All the arguments, or a null value if there is
just one word in the event.
x* Abbreviates x-$.
x- Like x* but omitting word $.
Modifiers:
After the optional word designator, you can add a sequence
of one or more of the following modifiers, each preceded by
a :.
h Remove a trailing pathname com-
ponent, leaving the head.
r Remove a trailing suffix of the
form `.xxx', leaving the
basename.
e Remove all but the suffix, leav-
ing the extension.
s/oldchars/replacements/ Substitute replacements for old-
chars. oldchars is a string that
can contain embedded blank
spaces, whereas previousword in
the event designator can not.
^oldchars^replacements^
t Remove all leading pathname com-
ponents, leaving the tail.
& Repeat the previous substitu-
tion.
g Apply the change to the first
occurrence of a match in each
word, by prefixing the above
SunOS 5.11 Last change: 2 Nov 2007 5
User Commands history(1)
(for example, g&).
p Print the new command but do not
execute it.
q Quote the substituted words,
escaping further substitutions.
x Like q, but break into words at
each space character, tab or
newline.
Unless preceded by a g, the modification is applied only to
the first string that matches oldchars. An error results if
no string matches.
The left-hand side of substitutions are not regular expres-
sions, but character strings. Any character can be used as
the delimiter in place of /. A backslash quotes the delim-
iter character. The character &, in the right hand side, is
replaced by the text from the left-hand-side. The & can be
quoted with a backslash. A null oldchars uses the previous
string either from a oldchars or from a contextual scan
string s from !?s. You can omit the rightmost delimiter if a
newline immediately follows replacements; the rightmost ? in
a context scan can similarly be omitted.
Without an event specification, a history reference refers
either to the previous command, or to a previous history
reference on the command line (if any).
ksh
Using fc, in the form of
fc -e - [old=new] [command],
or
fc -s [old=new] [command],
SunOS 5.11 Last change: 2 Nov 2007 6
User Commands history(1)
the command is re-executed after the substitution old=new is
performed. If there is not a command argument, the most
recent command typed at this terminal is executed.
Using fc in the form of
fc [-e ename] [-nlr ] [first [last],
a range of commands from first to last is selected from the
last HISTSIZE commands that were typed at the terminal. The
arguments first and last can be specified as a number or as
a string. A string is used to locate the most recent command
starting with the given string. A negative number is used as
an offset to the current command number. If the -l flag is
selected, the commands are listed on standard output. Other-
wise, the editor program -e name is invoked on a file con-
taining these keyboard commands. If ename is not supplied,
then the value of the variable FCEDIT (default /bin/ed) is
used as the editor. When editing is complete, the edited
command(s) is executed. If last is not specified, it is set
to first. If first is not specified, the default is the pre-
vious command for editing and -16 for listing. The flag -r
reverses the order of the commands and the flag -n
suppresses command numbers when listing. (See ksh(1) for
more about command line editing.)
HISTFILE If this variable is set when the shell is
invoked, then the value is the pathname of the
file that is used to store the command history.
HISTSIZE If this variable is set when the shell is
invoked, then the number of previously entered
commands that are accessible by this shell is
greater than or equal to this number. The
default is 128.
Command Re-entry:
The text of the last HISTSIZE (default 128) commands entered
from a terminal device is saved in a history file. The file
$HOME/.shhistory is used if the HISTFILE variable is not
set or if the file it names is not writable. A shell can
access the commands of all interactive shells which use the
same named HISTFILE. The special command fc is used to list
or edit a portion of this file. The portion of the file to
be edited or listed can be selected by number or by giving
the first character or characters of the command. A single
SunOS 5.11 Last change: 2 Nov 2007 7
User Commands history(1)
command or range of commands can be specified. If you do not
specify an editor program as an argument to fc then the
value of the variable FCEDIT is used. If FCEDIT is not
defined then /bin/ed is used. The edited command(s) is
printed and re-executed upon leaving the editor. The editor
name - is used to skip the editing phase and to re-execute
the command. In this case a substitution parameter of the
form old=new can be used to modify the command before execu-
tion. For example, if r is aliased to a'fc -e - a' then typ-
ing `r bad=good c' re-executes the most recent command which
starts with the letter c, replacing the first occurrence of
the string bad with the string good.
Using the fc built-in command within a compound command
causes the whole command to disappear from the history file.
ksh93
hist lists, edits, or re-executes commands previously
entered into the current shell environment.
The command history list references commands by number. The
first number in the list is selected arbitrarily. The rela-
tionship of a number to its command does not change during a
login session. When the number reaches 32767 the number
wraps around to 1 but maintains the ordering.
When the l option is not specified, and commands are edited,
the resulting lines are entered at the end of the history
list and then re-executed by the current shell. The hist
command that caused the editing is not entered into the his-
tory list. If the editor returns a non-zero exit status,
this suppresses the entry into the history list and the com-
mand re-execution. Command line variable assignments and
redirections affect both the hist command and the commands
that are re-executed.
first and last define the range of commands. Specify first
and last as one of the following:
number A positive number representing a command number.
A ] sign can precede number.
-number A negative number representing a command that was
executed number commands previously. For example,
-1 is the previous command.
SunOS 5.11 Last change: 2 Nov 2007 8
User Commands history(1)
string string indicates the most recently entered com-
mand that begins with string. string should not
contain an =.
If first is omitted, the previous command is used, unless -l
is specified, in which case it defaults to -16 and last
defaults to -1.
If first is specified and last is omitted, then last
defaults to first unless -l is specified in which case it
defaults to -1.
If no editor is specified, then the editor specified by the
HISTEDIT variable is used if set, or the FCEDIT variable is
used if set, otherwise, ed is used.
OPTIONS
The following options are supported:
-e editor Uses the editor named by editor to edit the
commands. The editor string is a utility name,
subject to search via the PATH variable. The
value in the FCEDIT variable is used as a
default when -e is not specified. If FCEDIT is
null or unset, ed is used as the editor.
-l (The letter ell.) Lists the commands rather
than invoking an editor on them. The commands
is written in the sequence indicated by the
first and last operands, as affected by -r,
with each command preceded by the command
number.
-n Suppresses command numbers when listing with
-l.
-r Reverses the order of the commands listed (with
-l ) or edited (with neither -l nor -s).
-s Re-executes the command without invoking an
editor.
SunOS 5.11 Last change: 2 Nov 2007 9
User Commands history(1)
ksh93
ksh93 supports the following options:
-e editor Specify the editor to use to edit the history
command. A value of - for editor is equivalent
to specifying the -s option.
-l List the commands rather than editing and re-
executing them.
-N num Start at num commands back.
-n Suppress the command numbers when the commands
are listed.
-p Write the result of history expansion for each
operand to standard output. All other options
are ignored.
-r Reverse the order of the commands.
-s Re-execute the command without invoking an edi-
tor. In this case an operand of the form
old=new can be specified to change the first
occurrence of the string old in the command to
new before re-executing the command.
OPERANDS
The following operands are supported:
first Selects the commands to list or edit. The number of
last previous commands that can be accessed is deter-
mined by the value of the HISTSIZE variable. The
value of first or last or both is one of the fol-
lowing:
[]number A positive number representing a com-
mand number. Command numbers can be
displayed with the -l option.
-number A negative decimal number represent-
ing the command that was executed
number of commands previously. For
example, -1 is the immediately
SunOS 5.11 Last change: 2 Nov 2007 10
User Commands history(1)
previous command.
string A string indicating the most recently
entered command that begins with that
string. If the old=new operand is not
also specified with -s, the string
form of the first operand cannot con-
tain an embedded equal sign.
When the synopsis form with -s is
used, if first is omitted, the previ-
ous command is used.
For the synopsis forms without -s :
o If last is omitted, last
defaults to the previous
command when -l is speci-
fied; otherwise, it defaults
to first.
o If first and last are both
omitted, the previous 16
commands is listed or the
previous single command is
edited (based on the -l
option).
o If first and last are both
present, all of the commands
from first to last is edited
(without -l ) or listed
(with -l). Editing multiple
commands is accomplished by
presenting to the editor all
of the commands at one time,
each command starting on a
new line. If first
represents a newer command
than last, the commands is
listed or edited in reverse
sequence, equivalent to
using -r. For example, the
following commands on the
first line are equivalent to
the corresponding commands
on the second:
fc -r 10 20 fc 30 40
fc 20 10 fc -r 40 30
SunOS 5.11 Last change: 2 Nov 2007 11
User Commands history(1)
o When a range of commands is
used, it is not be an error
to specify first or last
values that are not in the
history list. fc substitutes
the value representing the
oldest or newest command in
the list, as appropriate.
For example, if there are
only ten commands in the
history list, numbered 1 to
10:
fc -l
fc 1 99
lists and edits, respec-
tively, all ten commands.
old=new Replace the first occurrence of
string old in the commands to be
reexecuted by the string new.
OUTPUT
When the -l option is used to list commands, the format of
each command in the list is as follows:
"%d\t%s\n", ,
If both the -l and -n options are specified, the format of
each command is:
"\t%s\n",
If the commandcommand consists of more than one line, the
lines after the first are displayed as:
"\t%s\n",
EXAMPLES
Example 1 Using history and fc
csh ksh
SunOS 5.11 Last change: 2 Nov 2007 12
User Commands history(1)
% history $ fc -l
1 cd /etc 1 cd /etc
2 vi passwd 2 vi passwd
3 date 3 date
4 cd 4 cd
5 du . 5 du .
6 ls -t 6 ls -t
7 history 7 fc -l
% !d $ fc -e - d
du . du .
262 ./SCS 262 ./SCS
336 . 336 .
% !da $ fc -e - da
Thu Jul 21 17:29:56 PDT 1994 Thu Jul 21 17:29:56 PDT 1994
% $ alias \!='fc -e -'
% !! $ !
date alias ='fc -e -'
Thu Jul 21 17:29:56 PDT 1994
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment
variables that affect the execution of fc: LCTYPE,
LCMESAGES, and NLSPATH.
FCEDIT This variable, when expanded by the shell,
determines the default value for the -e editor
option's editor option-argument. If FCEDIT is
null or unset, ed(1) is used as the editor.
HISTFILE Determine a pathname naming a command history
file. If the HISTFILE variable is not set, the
shell can attempt to access or create a file
.shhistory in the user's home directory. If the
shell cannot obtain both read and write access
to, or create, the history file, it uses an
unspecified mechanism that allows the history to
operate properly. (References to history
``file'' in this section are understood to mean
this unspecified mechanism in such cases.) fc
can choose to access this variable only when
initializing the history file; this initializa-
tion occurs when fc or sh first attempt to
retrieve entries from, or add entries to, the
file, as the result of commands issued by the
user, the file named by the ENV variable, or a
system startup file such as /etc/profile. (The
SunOS 5.11 Last change: 2 Nov 2007 13
User Commands history(1)
initialization process for the history file can
be dependent on the system startup files, in
that they can contain commands that effectively
preempts the user's settings of HISTFILE and
HISTSIZE. For example, function definition com-
mands are recorded in the history file, unless
the set -o nolog option is set. If the system
administrator includes function definitions in
some system startup file called before the ENV
file, the history file is initialized before the
user gets a chance to influence its characteris-
tics.) The variable HISTFILE is accessed ini-
tially when the shell is invoked. Any changes to
HISTFILE does not take effect until another
shell is invoked.
HISTSIZE Determine a decimal number representing the
limit to the number of previous commands that
are accessible. If this variable is unset, an
unspecified default greater than or equal to 128
are used. The variable HISTSIZE is accessed ini-
tially when the shell is invoked. Any changes to
HISTSIZE does not take effect until another
shell is invoked.
EXIT STATUS
The following exit values are returned:
0 Successful completion of the listing.
>0 An error occurred.
Otherwise, the exit status is that of the commands executed
by fc or hist.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 2 Nov 2007 14
User Commands history(1)
ATRIBUTE TYPE ATRIBUTE VALUE
Availability SUNWcsu
SEE ALSO
csh(1), ed(1), ksh(1), ksh93(1), set(1), set(1F), sh(1),
source(1), attributes(5), environ(5)
SunOS 5.11 Last change: 2 Nov 2007 15
|