![如何在 bash 中使用“fc”编辑并执行最后两个命令](https://linux22.com/image/1543730/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E2%80%9Cfc%E2%80%9D%E7%BC%96%E8%BE%91%E5%B9%B6%E6%89%A7%E8%A1%8C%E6%9C%80%E5%90%8E%E4%B8%A4%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
我刚刚了解了fc
bash 的内置命令。我想用它来编辑和执行前面两个命令,包括最近的命令。
我可以编辑并执行两个命令但不包括带有 的最新命令fc -2 0
。这就是我想要的,除了偏移量为 1 以包含最新命令。
history
一个可行但令人讨厌的解决方案是检查(或)的输出fc -l
,找到绝对命令编号,并以绝对值给出命令范围。例如,如果fc -l -2
输出以下内容:
502 echo hello
503 echo goodbye
…然后我可以说fc 502 503
。这就是我想要的,只是我不想要检查历史输出的额外步骤。(我知道,我很挑剔。)
有没有什么方法可以做到这一点,而不涉及(1)手动检查历史记录或(2)使用一次性命令将感兴趣的命令从最近的位置移出?
我正在 macOS 上运行GNU bash version 3.2.57
,不管它有什么价值。
答案1
人们期望fc -2 -1
它能工作,但选项和以 开头的位置参数之间似乎存在混淆-
。然而,使用标准--
将选项与参数分开似乎提供了一个解决方案:
fc -- -2 -1
bash
请注意, 4.3 之前的版本还存在其他与fc
命令相关的问题,包括fff.
这里,其中历史线选择可能会有错误。
答案2
这将获取最新 2 个命令的 id,并再次运行它们
fc -l -2 | cut -f1 | fc -s