Linux下,想执行一条或多条以前输入过的命令怎么办?很多人会想到使用向上和向下箭头来查找历史记录中输入的命令。这当然是可能的。除了这种方法,本文还介绍了另外5种方法来实现这种效果。在正式开始之前,我们先随便执行几条命令,以备后面的演示。为了节省篇幅,暂时不列出执行结果。$ls-l$pwd$date$uname-a方法一:!!是的,两个感叹号也是一个命令,它会重复上次执行的命令。$!!该命令相当于如下效果:$!!uname-aLinuxVM_0_16_centos3.10.0-514.26.2.el7.x86_64#1SMPTueJul415:04:05UTC2017x86_64x86_64x86_64GNU/Linux如果需要root权限,在前面加上sudo即可。$须藤!!方法二:!un如果我们在运行的时候输入了很多条命令,现在需要重复执行其中一条,怎么办?有一个简单的方法,就是用上下箭头来搜索,但是如果之前输入的命令太多,可能要找很久。这时候!un命令就发挥作用了。记住,这个un不是固定的,它代表你要重复的命令的前几个字符。比如在这个例程中,我们要重复执行uname-a命令,就这样执行:$!ununame-aLinuxVM_0_16_centos3.10.0-514.26.2.el7.x86_64#1SMPTueJul415:04:05UTC2017x86_64x86_64x86_64GNU/Linux如果之前输入如果有多个以un开头的命令,您可能需要多输入几个字符。$!uname方法三:!-1更灵活,!-1表示重复最后一条命令,!-2表示重复倒数第二条命令,!-n表示重复倒数第二n条命令。$!-1uname-aLinuxVM_0_16_centos3.10.0-514.26.2.el7.x86_64#1SMPTueJul415:04:05UTC2017x86_64x86_64x86_64GNU/Linux$!-3#注意前面的!-1也是一条指令,所以倒数第三条指令是date,而是ofpwddateSunMay1918:30:26CST2019方法四:ctrl+rctrl+r这个快捷键可以搜索你之前输入过的所有命令。其实梁旭更喜欢这个快捷键,因为它会让你看到即将执行的命令。如果是!!命令,它直接执行最后一条命令。如果这个命令是安全的还好,但是如果是rm-rf/*这样的命令就悲剧了。如果我现在想重复执行uname-a,我们可以先按ctrl+r组合键,然后依次输入'u''n''a'。如果之前输入的命令比较少,基本上我们只需要输入Au或n就会找到你要输入的命令。(reverse-i-search)`u':找到uname-a后,再次回车,重复你要输入的命令。如果您想对找到的命令进行一些小的更改,只需点击向左或向右箭头即可。方法五:ctrl+porctrl+n和ctrl+o如果你是懒癌晚期,不想敲任何字母,只想找到你要的命令执行,你是怎么做到的?如前所述,查找历史输入命令,可以使用向上和向下箭头。但这并不是最高效的,我们可以使用ctrl+p和ctrl+n达到同样的效果。这样效率更高,因为您的手不必抬起并移动到箭头处。通过ctrl+p/n的组合找到想要的命令后,我们就可以按ctrl+o来执行这条命令了。这个组合键和回车不一样,因为它除了回车外还跳到最后一个命令。通过不断地ctrl+p/n,然后ctrl+o,你可以高效地重复你想要执行的命令。总结重复以前执行的命令在我们的工作中经常使用。命令比较短的话还好,再敲一遍也用不了多少时间。而且如果命令很长,重复输入会花费更多的时间,效率也比较低。除了使用上下箭头,我们还有很多方法可以达到同样的效果。掌握这些技巧,绝对能大大提高你的工作效率!本文经授权转载自公众号「良墟Linux」。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!
