HISTORY(1)                      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 previously
       entered to an interactive 
sh.
       The command history list references commands by number. The first
       number in the list is selected arbitrarily. The relationship 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 maintains the
       time-ordering sequence of the commands. For example, if four commands
       in sequence are given the numbers 32 766, 32 767, 1 (wrapped), and 2
       as they are executed, command 32 767 is considered the command
       previous to 1, even though its number is higher.
       When commands are edited (when the 
-l option is not specified), the
       resulting lines is entered at the end of the history 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 operators 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 simplifies spelling
       corrections and the repetition of complicated 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 maximum 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 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 substitutions
       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 substitution
           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.       
!{command} additional           Refer to the most recent command beginning with 
command and
           append 
additional to that referenced command.       
^previous_word^replacement^           Repeat the previous command line replacing the string           
previous_word with the string 
replacement. This is equivalent to
           the history substitution:
           Repeat the previous command line replacing the string           
previous_word with the string 
replacement. This is equivalent to
           the history substitution:             
!:s/previous_word/replacement/.
           To re-execute a specific previous command 
and make such a
           substitution, say, re-executing command #6:             
!:6s/previous_word/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.       
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 component,
                                   leaving the head.       
r                                   Remove a trailing suffix of the form
                                   `
.xxx', leaving the basename.       
e                                   Remove all but the suffix, leaving the
                                   extension.       
s/oldchars/replacements/                                   Substitute 
replacements for 
oldchars.                                   
oldchars is a string that can contain
                                   embedded blank spaces, whereas                                   
previous_word in the event designator can
                                   not.                                     
^oldchars^replacements^       t                                   Remove all leading pathname components,
                                   leaving the tail.       
&                                   Repeat the previous substitution.       
g                                   Apply the change to the first occurrence
                                   of a match in each word, by prefixing the
                                   above (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 expressions, but
       character strings. Any character can be used as the delimiter in
       place of 
/. A backslash quotes the delimiter 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],
       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.  Otherwise, the editor program 
-e name is invoked on
       a file containing 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 previous 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/.sh_history 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 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 execution.
       For example, if 
r is aliased to 
a'fc -e - a' then typing 
`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 relationship 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 history list. If the editor returns a       
non-zero exit status, this suppresses the entry into the history list
       and the command 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.       
string                  string indicates the most recently entered command 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.   
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 editor. 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       last                Selects the commands to list or edit. The number of previous
                commands that can be accessed is determined by the value of
                the 
HISTSIZE variable. The value of 
first or 
last or both is
                one of the following:                
[+]
number                              A positive number representing a command
                              number. Command numbers can be displayed with
                              the 
-l option.                
-number                              A negative decimal number representing the
                              command that was executed 
number of commands
                              previously. For example, 
-1 is the immediately
                              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
                              contain an embedded equal sign.
                              When the synopsis form with 
-s is used, if                              
first is omitted, the previous command is
                              used.
                              For the synopsis forms without 
-s :                                  o      If 
last is omitted, 
last defaults
                                         to the previous command when 
-l is
                                         specified; 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
                                  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, respectively, 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", <line number>, <command>       If both the 
-l and 
-n options are specified, the format of each
       command is:         
"\t%s\n", <command>       If the 
commandcommand consists of more than one line, the lines after
       the first are displayed as:         
"\t%s\n", <continued-command>EXAMPLES
       Example 1: Using history and fc
                      csh                                     ksh
         % 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   ./SCCS                            262   ./SCCS
           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(7) for descriptions of the following environment
       variables that affect the execution of 
fc: 
LC_CTYPE, 
LC_MESSAGES, 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 
.sh_history 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 initialization 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
                   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 commands 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 characteristics.) The variable 
HISTFILE                   is accessed initially when the shell is invoked. Any
                   change 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
                   initially 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.
SEE ALSO
       csh(1), 
ed(1), 
ksh(1), 
ksh93(1), 
set(1), 
sh(1), 
source(1),       
attributes(7), 
environ(7)                                May 13, 2017                      HISTORY(1)