在Linux中重复上次命令

时间:2020-03-21 11:42:26  来源:igfitidea点击:

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

注意一词:当我们尝试以下方法时,将立即运行先前执行的命令。
只需确保最后一个命令并不像格式化分区或者删除文件,文件夹或者任何其他重要数据一样有害。

如何在Linux中重复上次命令

让我们先运行一些命令。

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

正如我之前提到的那样,我们可以通过简单地按向上箭头来执行最后一个命令并按ENTER键。
这是许多用户使用的最常用方式来执行先前的命令。
此方法将在所有shell上工作,无论我们使用的Linux分发如何。

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

现在,让我展示如何使用一些实际示例执行最后一个命令。

方法1使用感叹号标记:

要执行任何上次执行的命令,只需键入双倍声音标记,然后点击输入:

$!!

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

uname -r
5.3.0-40-generic

在"!!"前面添加"sudo"要将最后一个命令执行为如下面的root用户。

$sudo !!

此命令还将执行上一个命令:

$su -c "!!"

示例输出:

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

凉,不是吗?
我们无需完全键入最后一个命令。
当我们已经执行了一个非常长的命令时,它可能是有用的,并且不想完全重新键入相同的命令。

方法2重复第n个命令:

我们可能已经运行了这么多的命令,并希望重复一个特定的命令。
你会怎么做?
简单的!我们可以通过键入先前命令的特定单词来执行此操作。

要重复以特定字/字母开头的先前命令,例如UN,只需键入:

$!un

上面的命令将执行以字母"UN"开头的最后一个命令。

上述命令的示例输出将是:

!un
uname -r
5.3.0-40-generic

如上所述,我们不需要键入整个命令(i.e 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

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

方法3使用反向搜索:

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

看看以下示例。
在以下示例中,我搜索了"OST",它在包含"OST"字样的历史记录中显示了"sudo netctl重新启动onitoadjio"。
然后,我立即按Enter键执行命令或者右箭头键完成命令并按Enter键执行它。

(reverse-i-search)`ost': sudo netctl restart theitroadjio

刚刚,在执行之前,我们要编辑/修改最后一个命令,只需按向左箭头键,然后编辑最后一个命令并按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"命令用于列出,编辑和重新运行先前输入的命令。

要使用FC重复最后一个命令,简单运行:

$fc -s

示例输出:

uname -r
5.3.0-40-generic

方法7 - 使用Alt键

由于我们的读者之一在注释部分中表示,我们也可以使用Alt +。
键(按Alt,然后按。
)以检索最后一个命令而不运行它。
但是,有一个限制。
击中Alt +。
只能检索命令中的最后一个参数。
例如,如果先前命令是"uname -R",则会带回-r参数,但不是整个命令。

我们现在知道如何重复最后一个命令而无需在终端中键入它。
如果要查看最后一个命令的输出而无需实际重新键入它们,则这些方法将有所帮助。