6. 使用 fc 编辑命令历史记录


列出历史中的所有命令:

history

列出历史记录中的最后 10 个命令:

history 10

清除历史记录。 这将从历史列表中删除所有命令:

history -c

从历史记录中删除特定行号(以下示例删除历史记录行项目 #15):

history -d 15

将当前历史记录写入默认文件,如下所示。(通常,仅当您注销时,当前会话的历史记录才会写入默认历史记录文件;-w强制立即写入)。默认文件是 ~/.bash_history

history -w

将命令添加到历史记录中而不真正执行它:

history -s "tar cvf /tmp/newfile.tar file"

使用fc您可以列出历史命令。 这就像history命令一样,但具有更多控制权。 但fc命令的强大之处在于您还可以执行历史记录中的命令。

列出历史命令 2 到 5 行:

fc -l 2 5

列出历史命令 2 到 5(不带行号):

fc -ln 2 5

列出历史命令 2 到 5(按相反顺序,不带行号):

fc -lnr 2 5

如果没有将命令发送到屏幕的-lfc将在编辑器中打开它们(默认使用 vi 编辑器)。 您可以对命令进行适当的更改,当您保存并退出编辑器时,新命令将在命令行中自动执行。

在默认编辑器 vi 中打开历史命令 2 到 5:

fc 2 5

nano 编辑器中打开历史命令:

fc -e nano 2 5

如果使用得当,接下来显示的fc -s选项将非常强大,但要小心! 您可能最终会运行历史记录中的一些您确实不想重复的命令。

以下示例在命令历史记录中搜索模式 "ls" 并执行与该模式匹配的上一个命令。 在此示例中,它找到ls -altr并自动执行它。

$ fc -s ls
ls -altr

您还可以替换历史记录中的特定模式; 这对于使用之前使用过的参数执行不同的命令很有用。

让我们假设您从命令行执行了以下ls命令:

$ ls ~/.inputrc
/home/ramesh/.inputrc

以下示例搜索包含关键字 "ls" 的上一个命令,并在执行之前将该模式更改为cat。 因此,以下命令执行cat ~/.inputc,因为历史记录中的上一个命令是ls ~/.inputrc

$ fc -s ls=cat
cat ~/.inputrc