终端中的选择性命令历史记录?


9

在终端中,当您按键盘上的时,您会看到按顺序分配给它的过去命令。我想知道过去是否有一种方法只能查看以-开头的命令,例如“ ls -l”。这样,如果命令列表为:

  1. ls -l -a
  2. cmake
  3. cd〜/桌面
  4. cmake

一种只写“ ls”和制表符或任何击键组合的方法,弹出弹出以“ ls”开头的终端的命令

谢谢,

Answers:


14

它不会仅显示以开头的内容ls,但是您可以Ctrl-R ls通过历史进行向后搜索。重复Ctrl-R查找下一个匹配项。


感谢您的CTRL+R快捷命令。
Kleber S.

8

有时候这很有用...

使用ssh连接到另一台机器:

开始打字

ssh

使用PgUp键,您的ssh会以您上次使用的键结束。PgUp再次按,它会显示下一个,依此类推。喜欢它?

您可以使用此:

编辑您的.bashrc(vi /home/<yourfolder>/.bashrc)并添加以下内容:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

这只会在您的用户终端上添加此功能。您还必须编辑其中的一个以使其具有相同的内容:您可以从Wiki上遵循本教程,这是不可能做错的,还有很多额外的东西可以改善您的终端体验...


您甚至可以将其绑定到上/下箭头键:bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward',使其更加直观。
Fritz

5

要查看命令历史记录,请使用可以使用:

$ history

如果您只想查看过去的命令以“ ls”开头,我认为我使用:

$ history | grep ls

当然,输出将包含命令以外的内容,但包含“ ls”字符,但我认为它可以提供帮助。


2

实现您想要的最简单的方法是!<whatever-command>。例如ls,要执行最后执行的操作,可以执行!ls。查看以下日志,看看这是否是您所需要的:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI

1
这会在不显示命令的情况下运行命令,是否有替代方法可以根据请求的OP显示该命令?
布鲁诺·佩雷拉

在zsh中,您可以setopt HIST_VERIFY将命令放置在输入缓冲区中,您可以在其中按Enter接受它或对其进行编辑。
poolie 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.