它能最大限度地在命令行上更快的工作是Unix的系统管理员的从未改变目标之一。而做到这一点的方法之一是找到简单的方法来重用命令,你以前输入 - 特别是如果这些命令是复杂或棘手的记忆。一些我们这样做的方式,还可以把命令脚本,使之成为别名。另一种方法是重新发出命令,你已经从你的命令历史记录拉他们和有无变化重用他们最近进入。
重新发出命令的最简单,最直观的方法是使用键盘上的上下箭头键在先前输入的命令来滚动。追溯多久可以滚动,将取决于你的历史缓冲区的大小。大多数人设置他们的历史缓冲区100级1000的命令,但除此之外,一些去路之间保持的东西。击中向上箭头732倍可能会尝试你的耐心,但也有幸运的是简单的方法来得到你需要的不戴出你的指尖!为了让这个帖子有点更容易理解,我使用的是温和的HISTSIZE设置。您可以使用下面所示的命令查看当前历史队列大小
$ echo $HISTSIZE 1000
使用命令历史记录最简单的方法是重复以前的命令。要么按向上箭头,要么打字!!重复做那个。然而,大多数时候,这个小技巧并不是最有用的。
日期:美国东部时间2016年9月30日星期五11:46:06 $ !!日期:美国东部时间2016年9月30日星期五11:46:08
您也可以重新运行以前的命令,而是通过指定这样的抑扬(^)标记之间旧的和新的字符串的变化:
$ du -sk bin 9168 temp $ ^temp^bin^ du -sk bin 36 bin
当您希望重用的命令很长且很复杂时,这个技巧特别有用。
你可以按向上箭头键盘上多次回到以前的命令,但是,如果您输入的命令你想重用是一个1234命令前,它可能更容易使用的第一部分命令后感叹号是这样的:
(to root) shs on pts/0 9月30日15:57:54 ip-172-33-0-28 su: (to root) shs on pts/0
只需输入!cat就可以重新运行最后一个cat命令,输入!grep就可以重新运行最后一个grep命令,通过sudo发出的最后一个命令就可以重新运行!sudo。
$ sudo的须藤尾-12在/ var / log / messages中!|grep的结合年09月30 14点44分44秒的ip-172-30-0-28 dhclient的[1848]:结合到172.30.0.28 - 更新于1568年秒。09月30日15时10分54秒的ip-172-30-0-28 dhclient的[1848]:结合到172.30.0.28 - 更新1459秒。09月30日15点35分十五秒IP-172-30-0-28 dhclient的[1848]:结合到172.30.0.28 - 更新于1705秒。09月30日16时03分42秒的ip-172-30-0-28 dhclient的[1848]:结合到172.30.0.28 - 更新于1712秒。
您需要键入多少将取决于自目标命令以来您键入了多少命令以及该命令的独特程度。如果您希望重用的命令是几天前发出的命令,那么您可能需要重新输入更多的命令,以确保重复正确的命令。
您还可以通过输入重新发出历史缓冲区中的任何命令!后面跟着命令号。
$ history 2 echo 4 3 echo 5回声6回声8回声9回声10 9历史10 vi .bashrc 11历史$ !7回声9 9
尽管! !可以方便地重复前面的命令,还可以通过指定想要返回的历史记录的时间来重新运行前面的命令。通过输入!-2,将重新运行上一个命令之前的命令。
$ who ec2-user pts/0 2016-09-30 12:02 (192.161.76.108) $
如果你还记得什么命令您键入11,123,或其他一些数量的命令前,你是一个在很多更好比我对大多数人来说,它可能是一个更容易使用历史找到你想要的命令重用,然后用它的命令数在重新运行。
$历史|grep的须藤12须藤尾-4的/ var / log / messages中13历史|!grep的须藤$ 12须藤尾-4的/ var /日志/消息09月30日15时57分54秒的ip-172-33-0-28 SU:上PTS(根)SHS / 0 09月30日16时03分四十秒IP-172-33-0-28 dhclient的[1848]:DHCPREQUEST在eth0到172.33.0.1端口67(XID = 0x7e717059)09月30日16时03分40秒的ip-172-33-0-28 dhclient的[1848]:DHCPACK从172.33.0.1(XID = 0x7e717059)09月30日16时03分42秒的ip-172-33-0-28 dhclient的[1848]:结合到172.33.0.28 - 更新于1712秒。
您还可以重新运行包含特定字符串的最后一个命令 - 可能是文件名或用户名 - 由该字符串与前面!?。
美元! ?message sudo尾部-12 /var/log/messages | grep绑定
例如,当您想对同一个文件发出多个命令时,这个特殊的技巧就非常有用。
一种用于从先前的命令重用仅第一个参数的语法是有点麻烦,但here'a一个例子。在这个命令序列,我们运行一个命令,然后使用一个历史伎俩重用只是在另一个命令的第一个参数:
$触摸文件1文件2文件3 $猫触摸!^猫文件1一:一:1个B:二:2 C:三:3
如您所见,我们将您要查找的字符串放在!和:^。
我们可以使用syntx !命令对第2、3等参数执行类似的操作:#,其中#是您希望重用的参数的编号。
a:一:1 b:二:2 c:三:3 d:四e:5 e:5 $ tail .这个文件是空的
通过历史技巧重用命令来节省大量时间是很好的,但是你必须记住一些语法,这些语法一点也不明显。
这个故事,“Unix的提示:通过重复记录保存时间”最初发表《计算机世界》 。