FC

更新时间:2023-10-19 21:55

FC是LINUX命令用途是处理命令历史列表,fc 命令显示了历史命令文件内容或调用一个编辑器去修改并重新执行以前在 shell 中输入的命令。

语法

打开一个编辑器去修改或重新执行以前输入的命令

fc [ -r ] [ -e Editor ] [ First [ Last ] ]

生成一个以前输入的命令的列表

fc -l [ -n ] [ -r ] [ First [ Last ] ]

重新执行一个以前输入的命令

fc -s [ Old= New ] [ First ]

描述

fc 命令显示了历史命令文件内容或调用一个编辑器去修改并重新执行以前在 shell 中输入的命令。

历史命令文件按编号列出命令。列表中的第一个编号可以任意选择。每一个命令与编号的关系不会改变,除非用户登录进系统并且没有其它进程访问过该列表。在这种情况下,系统将重新设置编号,并把余下的最老的命令编号设置为 1。

如果历史命令文件中的编号达到了一个大于 HISTSIZE 环境变量值,或是大于 32767 的极限值,不管是哪一种情况,shell 将把编号重新设为 1。尽管可选编号重新开始设置,但 fc 命令会按时间顺序维护命令序列。例如,有三个命令按照编号 32766,32767 和 1(被折返)排序,则编号 32767 的命令仍被认为在编号为 1 的命令之前。

可以使用 -l(L 的小写)标志列出历史文件中的命令。当没有使用 -l 标志并且使用了 -eEditor 标志编辑命令,其结果行将输入到历史文件的末尾并且被 shell 重新执行( fc -e Editor 命令不会被输入进历史命令列表中)。如果编辑器返回一个非零的退出状态值,这将禁止历史文件中的条目和命令重新执行。

与 fc 命令一起使用的命令行上的任何变量赋值或者重定向运算符将再一次调用前面的命令,并且抑制 fc 命令和前面的命令所产生的标准错误。示例:

fc -s -- -1 2>/dev/null

标志

-e Editor 使用指定的编辑器编辑命令。 Editor 参数应是一个命令名称。该命令用 PATH 环境变量指定位置。当没有指定 -e 标志时,环境变量 FCEDIT中的值被用作缺省值。如果环境变量 FCEDIT 是空值或没有设置,则使用 ed 编辑器。 -l (L 的小写)列出了历史文件中的命令。不调用编辑器去修改它们。按照 First 和 Last 参数所指定的顺序写命令,就象-r 标志所作用的,在每一个命令的前面有一个命令编号。 -n 当与 -l 标志一起使用时,隐藏命令编号。 -r 逆转所列出命令的顺序(当使用 -l 标志)或者逆转所编辑的命令顺序(当没有指定 -l 标志时)。

-s 不调用编辑器重新执行一个命令。如果没有指定 First 参数,则 -s 标志重新执行前一个命令。

参数

First or Last 选择要列出或编辑的命令。HISTSIZE 环境变量值确定了能够访问到的以前所输入命令的数量。First 参数和 Last 参数必须具有下列数值中的一个:

[+] Number

表示一个特定的命令编号。-l 标志可以显示命令编号。缺省是一个 +(加符号)字符。

-Number

表示一个以前执行的命令,由存储在历史列表中的命令编号指定。例如,-1 指出了前一个刚执行过的命令。

String

指出了最近所输入的命令,该命令以指定的字符串开头。如果指定了 Old=New 参数但没有指定 -s 标志,则来自 First 参数的字符串中不能包含一个嵌入的 =(等于符号)。

当使用 -s 标志时,省略 First 参数将导致使用前一个命令。

当没有指定 -s 标志时,将应用下列规则:

* 当使用 -l 标志时,省略 Last 参数将会导致缺省使用前一个命令。

* 当使用 -r、-n 和 -e 标志时,省略 Last 参数会导致缺省使用 First 参数。

* 如果 First 参数和 Last 参数都被省略了,则列出前 16 个命令或编辑前一个命令(取决于是否使用 -l 标志)。

* 如果使用了 First 参数和 Last 参数,则列出所有的命令(当指定了 -l 标志时)或编辑所有的命令(当没有指定 -l 标志)。通过将所有的命令同时显示在编辑器中,可以实现编辑多个命令,每个命令都另起一新行。如果 First 参数表示的命令比 Last 参数表示的命令要更新的话,则命令是以相反的顺序被列出或编辑的。这与使用 -r 标志的效果是一样的。例如,下列第一行的命令与第二行上相应的命令是等价的:

fc -r 10 20 fc 30 40

fc 20 10 fc -r 40 30

* 当使用某一范围中的命令时,如果 First 参数或 Last 参数指定了不在历史列表的值时,这并不是一个错误。fc 命令会替换表示列表中合适的最早或最近的命令的值。例如,如果在历史列表中仅有编号从 1 到 10 的十个命令,则命令:

fc -l

fc 1 99

分别列出和编辑所有这十个命令。

Old=New 在要重新执行的命令中,用新字符串去代替第一个出现的老字符串。

环境变量

下列环境变量会影响 fc 命令的执行:

FCEDIT 当 shell 扩展该环境变量时,该变量确定了 -e editor 变量的缺省值。如果环境变量 FCEDIT 为空值或没有被设置,则缺省使用 ed 编辑器。

HISTFILE 确定历史命令文件的路径名。如果环境变量 HISTFILE 没有被设置,则 shell 可能会尝试访问或创建在用户主目录中的 .sh_history 文件。

HISTSIZE 确定一个十进制数值,该数值表示了可以访问的以前输入的命令的数量限值。如果没有设置该变量,则使用缺省值 128。

退出状态

下列出口值被返回:

0 成功完成列表。

>0 发生错误。

否则退出状态是由 fc 命令执行的命令的状态。

示例 

①要对最近所使用的命令调用环境变量 FCEDIT 所定义的编辑器(缺省的编辑器是 /usr/bin/ed),请输入:

fc

当完成编辑之后,执行该命令。

②要列出执行过的前两个命令,请输入:

fc -l -2

③要找到以 cc 字符开始的命令,且把 foo 改变为 bar,并显示和执行该命令,请输入:

fc -s foo=bar cc

文件

/usr/bin/ksh 包含了 Korn shell 的内置命令 fc。

/usr/bin/fc 包含了 fc 命令。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}