对于某些项目,我经常输入几个命令,例如:
cd an/extremely/long/path/in/which/I/have/some/kinda/project
和
./runmyproject --with some --command line --options set
由于我很懒,我尽量避免一遍又一遍地完整输入这些命令。因此,我当然可以经常使用向上键来找回这些命令,但通常,中间还有太多命令,以至于搜索它比直接输入它花费的时间还要多。
我现在想知道是否有某种实用程序可以在我尚未输入全部命令时建议我经常使用的完整命令。这样我就可以例如输入“cd an/”,并且它已经建议了路径的其余部分,因为我过去一个月使用过很多次。
我确实找到了一种名为 Bash Smart Complete 的东西。但这有点“愚蠢”,因为它不会查看我之前使用过的命令。我还发现这个答案,这意味着将我经常使用的命令放在一个文件中。然而,这不够灵敏,因为每次我开始新项目或更改文件夹或程序参数时,我都需要为其创建一个新文件。
有人知道其他实用程序或其他方法可以实现此目的吗?或者,有人知道我如何更改 Bash Smart Complete,以便它可以查看我在过去一个月中使用的命令并完成适合且在过去一个月中使用最多的命令吗?
[编辑] 以下是一些非常棒的答案。我还没有将任何一个标记为确定的答案。不是因为我不喜欢这些答案,我喜欢,而是因为它们都不是绝对的赢家。我认为 Finalterm 是一个很棒的项目。不幸的是,它仍然有些粗糙。例如,它还不支持复制粘贴。不过,我会继续关注这个项目,因为当它成熟时,我认为它会成为一个很棒的终端应用程序。至于其他答案;他们要么建议创建一个别名,这不是我想要的,因为它会增加额外的工作而不是减少工作,要么建议使用 Ctrl+R,这是一个绝妙的(我不知道它!)。有几个人建议使用 Ctrl+R,所以我真的无法突出一个答案而不是另一个。
所以现在我肯定会使用 Ctrl+R,将来我可能会使用 Finalterm。
感谢大家的精彩回答!
答案1
如果命令经常使用,它们会被记录在 bash 的命令历史轨道中.bash_history
。
现在来介绍一下诀窍:你可以反向搜索此历史记录,然后按以下方式重新执行命令:CTRL-r。
在反向历史搜索模式下,bash 显示,实时输入,历史记录中以您输入的命令开头的最新命令。然后按 Enter 接受并执行建议的命令。继续按 CTRL-R 可循环到具有相同前缀的较早命令。
这是 bash 内置的,无需定制脚本或安装软件 :) 我认为,这是 bash 最有用的功能之一。
答案2
将以下内容粘贴(Ctrl-Shift-V)到终端屏幕:
echo '"\e[A": history-search-backward' > ~/.inputrc
echo '"\e[B": history-search-forward' >> ~/.inputrc
echo 'set show-all-if-ambiguous on' >> ~/.inputrc
echo 'set completion-ignore-case on' >> ~/.inputrc
退出(Ctrl-D)终端屏幕,然后再次打开终端。
现在,您只需输入前几个字符,然后按“向上”或“向下”即可滚动浏览筛选后的列表
答案3
最后期限
有一款非常有前途的终端应用程序叫做最后期限。除了众多功能外,它还具有记忆命令的历史记录,以便您随后可以选择它。以下是其他一些功能:
您可以在此处阅读更多相关信息文章。
这是创作者的网站。http://finalterm.org/
安装它
sudo add-apt-repository ppa:versable/finalterm-daily
sudo apt-get update
sudo apt-get install finalterm
警告
我说过它很有前途。唯一的问题是它处于 0.1 版本。因此,像vim
和nano
这样的功能还不能很好地工作。我还注意到它还不支持拖放和复制粘贴。但它确实具有您要求的功能。随着软件的成熟,它将成为桌面上最好的终端之一。
截屏
该函数的实际运行情况如下:
希望这可以帮助。
*我在 Saucy 上,这就是为什么我有 Salamander 背景 :)
答案4
当我发现自己经常需要更改到这样的目录时:
cd an/extremely/long/path/in/which/I/have/some/kinda/project
我只会做一次:
ln -s an/extremely/long/path/in/which/I/have/some/kinda/project ~/project
从那时起,使用:
cd ~/pr[tab]
到那个时刻:
./runmyproject --with some --command line --options set
我会使用 bash 历史搜索。在命令提示符下,只需按 Ctrl-R 并输入“runmy”。瞧,整个命令以及上次输入的所有选项都在那里,可以重新输入。如果我不喜欢上次使用的选项并想查看之前的命令,我会继续按 Ctrl-R 循环浏览所有包含“runmy”的先前命令。
如果您不喜欢符号链接的想法,Ctrl-R 历史搜索也可以帮助“cd”命令。[Ctrl-R]/项目很可能会带回您用来 cd 到该目录的最后一条命令。
我总是喜欢学习使用专为解决此类问题而设计的 bash 功能,而不是添加别名或切换到特殊 shell。这样,我就可以在远程机器上使用相同的功能,或者当我必须坐在同事的终端前时也可以使用相同的功能。