如何在 bash 中使用“fc”编辑并执行最后两个命令

如何在 bash 中使用“fc”编辑并执行最后两个命令

我刚刚了解了fcbash 的内置命令。我想用它来编辑和执行前面两个命令,包括最近的命令

我可以编辑并执行两个命令但不包括带有 的最新命令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

相关内容