linux fc命令
fc命令是fix命令的缩写,是shell内置命令,用于列出,编辑和重新执行交互式shell中最新输入的命令。
我们可以在自己喜欢的编辑器中编辑最近输入的命令,然后运行它们,而不必重新输入整个命令。
此命令有助于纠正先前输入的命令中的拼写错误,并避免重复冗长而复杂的命令。
由于它是shell内置的,因此可以在大多数shell中使用,包括Bash,Zsh,Ksh等。
在此教程中,我们将学习在Linux中使用fc命令。
fc命令教程及示例
列出最近执行的命令
如果不带任何参数运行“ fc -l”命令,它将显示最后16个命令。
$fc -l 507 fish 508 fc -l 509 sudo netctl restart wlp9s0sktab 510 ls -l 511 pwd 512 uname -r 513 uname -a 514 touch theitroad.txt 515 vi theitroad.txt 516 echo "Welcome to theitroad" 517 sudo apcman -Syu 518 sudo pacman -Syu 519 more theitroad.txt 520 wc -l theitroad.txt 521 cat theitroad.txt 522 clear
要反转命令的顺序,请使用-r标志。
$fc -r
我们可以使用“ -n”参数取消显示行号。
$fc -ln nano ~/.profile source ~/.profile source ~/.profile fc -ln fc -l sudo netctl restart wlp9s0sktab ls -l pwd uname -r uname -a echo "Welcome to theitroad" sudo apcman -Syu cat theitroad.txt wc -l theitroad.txt more theitroad.txt clear
现在我们将看不到行号。
要从特定命令开始列出结果,只需将行号与-l方法一起使用。
例如,要显示从行号520到当前的命令,我们可以执行以下操作:
$fc -l 520 520 ls -l 521 pwd 522 uname -r 523 uname -a 524 echo "Welcome to theitroad" 525 sudo apcman -Syu 526 cat theitroad.txt 527 wc -l theitroad.txt 528 more theitroad.txt 529 clear 530 fc -ln 531 fc -l
要列出特定范围(例如520到525)中的命令,请执行以下操作:
$fc -l 520 525 520 ls -l 521 pwd 522 uname -r 523 uname -a 524 echo "Welcome to theitroad" 525 sudo apcman -Syu
除了使用行号,我们还可以使用字符串。
例如,列出从“ pwd”命令开始直到重发的命令,只需使用该命令的起始字母(即p),如下所示。
$fc -l p 521 pwd 522 uname -r 523 uname -a 524 echo "Welcome to theitroad" 525 sudo apcman -Syu 526 cat theitroad.txt 527 wc -l theitroad.txt 528 more theitroad.txt 529 clear 530 fc -ln 531 fc -l 532 fc -l 520 533 fc -l 520 525 534 fc -l 520 535 fc -l 522 536 fc -l l
要查看“ pwd”到“ more”命令之间的所有内容,可以使用以下任一方法:
$fc -l p m
或者,使用起始命令命令的首字母和结束命令的行号的组合:
$fc -l p 528
或者,仅是开始和结束命令的行号:
$fc -l 521 528
所有这三个命令将显示相同的结果。
自动编辑并重新运行最后一个命令
有时,我们可能会拼错上一个命令。
在这种情况下,我们可以使用默认编辑器轻松编辑命令的拼写错误并执行,而无需再次输入。
要编辑最后一个命令并再次重新运行它,请执行以下操作:
$fc
这将在默认编辑器中打开最后一个命令。
如我们在上面的 Screen截图中所见,我的最后一个命令是“ fc -l”。
现在,我们可以在命令中进行任何更改,并在保存并退出编辑器后再次自动重新运行它。
当我们使用冗长而复杂的命令或者参数时,这将很有用。
请注意,这也可能是破坏性的。
例如,如果先前的命令是致命命令,例如“ rm -fr <some-path>”,它将自动执行,并且我们可能会丢失重要数据。
因此,在使用命令之前,请务必小心。
更改默认编辑器以编辑命令
fc的另一个显着选项是“ e”,用于选择其他编辑器来编辑命令。
例如,我们可以使用“ nano”编辑器来编辑最后一个命令,如下所示。
$fc -e nano
此命令将打开nano编辑器(而不是默认编辑器)以编辑最后一个命令。
我们可能会发现对每个命令使用-e选项非常耗时。
要将新的编辑器设置为默认编辑器,只需将环境变量FCEDIT设置为要让fc使用的编辑器的名称。
例如,要将“ nano”设置为新的默认编辑器,请编辑~/.profile或者环境文件:
$vi ~/.profile
添加以下行:
FCEDIT=nano
我们还可以使的完整路径,如下所示。
FCEDIT=/usr/local/bin/emacs
键入:wq保存并关闭文件。
要更新更改,请运行:
$source ~/.profile
现在,我们可以键入“ fc”以使用“ nano”编辑器编辑最后一个命令。
重新运行最后一个命令而不对其进行编辑
我们已经知道如果不带任何参数运行“ fc”,它将使用最新命令加载编辑器。
有时,我们可能不想编辑,而只是执行最后一个命令。
为此,请在末尾使用连字符(-),如下所示。
$echo "Welcome to theitroad" Welcome to theitroad $fc -e echo "Welcome to theitroad" Welcome to theitroad
如我们所见,即使我使用-e选项,fc也不编辑最后一个命令(即回显“ Welcome to theitroad”)。
请注意,某些选项是特定于Shell的。
它们可能无法在其他shell中工作。
例如,可以在zsh shell中使用以下选项。
它们将无法在Bash或者Kshshell中使用。
显示命令执行时间
要查看命令何时运行,请使用-d,如下所示。
fc -ld 1 18:41 exit 2 18:41 clear 3 18:42 fc -l 4 18:42 sudo netctl restart wlp9s0sktab 5 18:42 ls -l 6 18:42 pwd 7 18:42 uname -r 8 18:43 uname -a 9 18:43 cat theitroad.txt 10 18:43 echo "Welcome to theitroad" 11 18:43 more theitroad.txt 12 18:43 wc -l theitroad.txt 13 18:43 cat theitroad.txt 14 18:43 clear 15 18:43 fc -l
现在我们将看到最近执行的命令的执行时间。
我们还可以使用-f选项显示每个命令的完整时间戳。
fc -lf 1 4/5/2016 18:41 exit 2 4/5/2016 18:41 clear 3 4/5/2016 18:42 fc -l 4 4/5/2016 18:42 sudo netctl restart wlp9s0sktab 5 4/5/2016 18:42 ls -l 6 4/5/2016 18:42 pwd 7 4/5/2016 18:42 uname -r 8 4/5/2016 18:43 uname -a 9 4/5/2016 18:43 cat theitroad.txt 10 4/5/2016 18:43 echo "Welcome to theitroad" 11 4/5/2016 18:43 more theitroad.txt 12 4/5/2016 18:43 wc -l theitroad.txt 13 4/5/2016 18:43 cat theitroad.txt 14 4/5/2016 18:43 clear 15 4/5/2016 18:43 fc -l 16 4/5/2016 18:43 fc -ld
当然,欧洲人可以使用-E选项使用欧洲日期格式。
fc -lE 2 5.4.2016 18:41 clear 3 5.4.2016 18:42 fc -l 4 5.4.2016 18:42 sudo netctl restart wlp9s0sktab 5 5.4.2016 18:42 ls -l 6 5.4.2016 18:42 pwd 7 5.4.2016 18:42 uname -r 8 5.4.2016 18:43 uname -a 9 5.4.2016 18:43 cat theitroad.txt 10 5.4.2016 18:43 echo "Welcome to theitroad" 11 5.4.2016 18:43 more theitroad.txt 12 5.4.2016 18:43 wc -l theitroad.txt 13 5.4.2016 18:43 cat theitroad.txt 14 5.4.2016 18:43 clear 15 5.4.2016 18:43 fc -l 16 5.4.2016 18:43 fc -ld 17 5.4.2016 18:49 fc -lf
- 如果不带任何参数运行,fc将在默认文本编辑器中加载最新命令。
- 当使用数字参数运行时,fc将使用具有指定编号的命令加载编辑器。
- 当使用字符串参数运行时,fc将从该指定的字符串开始加载最新的命令。
- 当使用fc的两个参数运行时,这些参数指定命令范围的开始和结束。
有关更多详细信息,请参见手册页。
$man fc