6. 使用 fc 编辑命令历史记录
history
命令
列出历史中的所有命令:
history
列出历史记录中的最后 10 个命令:
history 10
清除历史记录。 这将从历史列表中删除所有命令:
history -c
从历史记录中删除特定行号(以下示例删除历史记录行项目 #15):
history -d 15
将当前历史记录写入默认文件,如下所示。(通常,仅当您注销时,当前会话的历史记录才会写入默认历史记录文件;-w
强制立即写入)。默认文件是 ~/.bash_history
。
history -w
将命令添加到历史记录中而不真正执行它:
history -s "tar cvf /tmp/newfile.tar file"
fc
命令
使用fc
您可以列出历史命令。 这就像history
命令一样,但具有更多控制权。
但fc
命令的强大之处在于您还可以执行历史记录中的命令。
列出历史命令 2 到 5 行:
fc -l 2 5
列出历史命令 2 到 5(不带行号):
fc -ln 2 5
列出历史命令 2 到 5(按相反顺序,不带行号):
fc -lnr 2 5
如果没有将命令发送到屏幕的-l
,fc
将在编辑器中打开它们(默认使用 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