在 Linux 中重复上一个命令的不同方法

今天,我将教你如何在 Linux 中重复上一个命令。 您不必在 Shell 中重新键入先前执行的命令。 当然,我们使用 向上箭头 键选择最后执行的命令,然后按 ENTER 执行它们。 但是,还有其他几种方法可以做到这一点。 在类 Unix 系统中可能有很多方法可以重复最后的命令,但这些是我现在知道的唯一方法。 所有这些命令都在我的 Arch Linux 和带有 BASH shell 的 Ubuntu 桌面上进行了测试。

提醒一句: 当您尝试以下方法时,之前执行的命令将立即运行。 只是 确保您的最后一个命令没有任何危害 例如格式化分区或删除文件、文件夹或任何其他重要数据。

内容

  1. 在 Linux 中重复最后一个命令
    1. 方法 1 – 使用感叹号
    2. 方法 2 – 重复第 N 个命令
    3. 方法 3 – 使用反向搜索
    4. 方法 4 – 使用带有命令前缀数字的连字符
    5. 方法 5 – 使用 CTRL+p 和 CTRL+o
    6. 方法 6 – 使用 fc 命令
    7. 方法 7 – 使用 ALT+句号键

在 Linux 中重复最后一个命令

让我们运行一些命令。

$ ls -l
$ pwd
$ date
$ uname -r

正如我之前提到的,我们可以通过简单地按 向上 箭头和击中 进入 钥匙。 这是很多用户执行上一条命令最常用的方式。 无论您使用哪种 Linux 发行版,此方法都适用于所有 SHELL。

但是,就像我已经说过的那样,还有其他一些方法可以做到这一点。

现在,让我通过一些实际示例向您展示如何执行最后一个命令。

方法 1 – 使用感叹号

要执行任何最后执行的命令,只需键入双感叹号,然后按 ENTER:

$ !!

这将执行最后一个命令。 示例输出为:

uname -r 5.3.0-40-generic

添加 sudo 在…前面 !! 执行最后一个命令 root 像下面这样的用户。

$ sudo !!

您还可以使用以下命令执行前面的命令 sudo 用户:

$ su -c "!!"

样本输出:

su -c "uname -r" Password:  5.3.0-40-generic

酷,不是吗? 您不需要完全键入最后一个命令。 当您已经执行了很长的命令并且不想再次重新键入相同的命令时,它可能会很有用。

方法 2 – 重复第 N 个命令

您可能已经运行了很多命令,并且想要重复特定的命令。 你会怎么做? 简单的! 您可以通过键入上一个命令的特定单词来执行此操作。

重复上一个以特定单词/字母开头的命令,例如 un,只需键入:

$ !un

上面的命令将执行最后一个以字母开头的命令 “一个”.

样本输出:

!un uname -r 5.3.0-40-generic

正如您在上面的示例中看到的,您不需要键入整个命令(即 uname -r)。 相反,只需键入命令的几个字母,任何先前包含单词的命令都会运行。

此外,如果您知道完整的命令名称,只需键入如下:

$ !uname

它将执行最后一个命令。

如果您不想重复上一个命令,而只是显示它怎么办。 有时,您不想运行命令,而只是从历史记录中检索它。 如果是这样,请找到您要运行的命令的前缀号:

$ history | grep -i "source"

样本输出:

1664 source googler_at 1678 source googler_at  1685 source ~/.bashrc 2037 history | grep -i "source"

假设您要检索 第 1685 届 命令,但不想立即运行它,添加 :p 在命令旁边,如下所示。

$ !1685:p

这将显示历史记录中的第 1685 个命令,但不会执行它。

另一种方法是使用搜索您的命令行历史记录 CTRL+R. 按 CTRL+R 键来搜索命令行历史。 我个人更喜欢这种方法。 它以交互方式搜索历史,我认为这比盲目地从 BASH 历史中执行命令更安全。

看看下面的例子。 在以下示例中,我搜索了 "ost", 显示最后一条命令 “sudo netctl restart ostechnixjio” 在包含这个词的历史中 "ost". 然后,我按 ENTER 立即执行命令或右箭头键完成命令并按 ENTER 键执行它。

(reverse-i-search)`ost': sudo netctl restart ostechnixjio
搜索 bash 历史

以防万一,您想在执行前编辑/修改最后一个命令,只需按 左箭头键,然后编辑最后一个命令并按 ENTER 执行它。 某些命令可能以相同的字母开头。 在这种情况下,请继续点击 CTRL+R 键带回您要运行的命令。

方法 4 – 使用带有命令前缀数字的连字符

这是运行上一个命令的另一种方法。

$ !-1

样本输出:

uname -r 5.3.0-40-generic

相似地, !-2 将运行倒数第二个命令, !-3 将运行倒数第三个命令,依此类推。

方法 5 – 使用 CTRL+p 和 CTRL+o

我不想手动输入任何命令。 有没有办法通过简单地按下我键盘中的特定键来重复最后一个命令? 当然是!

CTRL+P 切换到最后一个命令,然后按 CTRL+O 执行它。 这将创造奇迹。 无需配置! 您可以使用 CTRL+O 您想继续重新执行最后一个命令的次数。

方法 6 – 使用 fc 命令

这是重复上次执行命令的另一种方式。 这 fc command 用于列出、编辑和重新运行之前输入的命令。

要使用 fc 重复上一个命令,只需运行:

$ fc -s

样本输出:

uname -r 5.3.0-40-generic

建议阅读:

  • 带有初学者示例的 fc 命令教程
  • 将标签应用于 Linux 命令以轻松从历史记录中检索它们
  • 使用 Apropos 轻松回忆被遗忘的 Linux 命令
  • Pet – 一个简单的命令行片段管理器
  • 如何 Save 命令并按需使用它们
  • 为 Linux 命令添加书签以便于重复调用

方法 7 – 使用 ALT+句号键

正如我们的一位读者在评论部分所说,我们也可以使用 ALT+. 键(按 ALT+句号)检索最后一个命令而不运行它。 但是,有一个限制。 打 ALT+. 只会检索命令中的最后一个参数。 例如,如果您之前的命令是 "uname -r",它只会带回 -r 参数,但不是整个命令。

就这样。 您现在知道如何在不输入终端的情况下重复上一个命令。 如果您想查看最后一个命令的输出而无需实际重新键入它们,这些方法将有所帮助。

如果您知道任何其他方法,请在下面的评论部分告诉我。 我将相应地检查并更新指南。

您现在知道如何重复先前执行的命令。 你如何重复一个 Linux 命令或程序直到它成功? 嗯,这很容易! 有关详细信息,请参阅以下指南。

  • 如何在 Linux 中重复一个命令直到它成功

希望这可以帮助。

BASH 命令行LinuxLinux 基础Linux 命令Linux 技巧在Linux 中重复上一个命令