在Linux中重复上次命令
今天,我将教你如何在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参数,但不是整个命令。
我们现在知道如何重复最后一个命令而无需在终端中键入它。
如果要查看最后一个命令的输出而无需实际重新键入它们,则这些方法将有所帮助。