如何让 BASH 在 Enter 键上尝试自动完成

如何让 BASH 在 Enter 键上尝试自动完成

我注意到,对于我在 bash 中使用的许多命令,我实际上已经了解了在按 [TAB] 之前必须输入多少个命令字母才能让 bash 成功自动完成命令。例如,当打开 chromium 时,我通常不会输入整个命令,而是输入

$ chrom[TAB][ENTER]

在我按下 [ENTER] 键之前,bash 成功地自动完成了命令chromium。有没有办法让自动完成功能工作而不必按下 [TAB]?我一般的想法是,如果我输入

$ chrom[ENTER]

bash 可以检查并发现这chrom不是一个有效的命令,但自动完成它是有意义的,chromium因为这是唯一以chrom

答案1

这只是一个想法,因为我觉得 TAB 并不是那么难达到,肌肉记忆是一件了不起的事情。

但如果我们追求最大程度的反常:

BASH shell 有一个涉及“command_not_found_handler”函数的功能,该函数在许多情况下通常用作“未找到命令”通知程序,它会告诉您在哪里可以找到有关您输入错误的更多信息。这是经常预装在 Ubuntu 中。

当然,在 BASH 手册页中可以轻松找到更多信息,尝试搜索“not_found”。

可以被打得服服帖帖,并用来实现你的“失败时完成 tab 键^H^H^Henter”愿望。实际代码留给读者练习。

我完全同意上面的@Marco,我真的希望看到/知道我输入的内容和我得到的内容基本相似。

听起来更像是微软创新真的。

答案2

别名在这里绝对是你的朋友,例如我有:

alias code='cd ~/Dropbox/97_2012/work/ror/code'
alias docs='cd ~/Dropbox/97_2012/work/setups'

所以我只需输入

$ code

或者

$ docs

我将被放置在适当的目录中。

您将这些内容放在.bash_aliases您的主目录 (“ ~”) 的一个文件中。

你可以使用以下命令将其(并且该代码很可能已经存在)包含在你的.bashrc文件中:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

.bashrc如果你添加了它们并且想要立即看到它们,可以启动一个新的 shell 会话或者在当前终端会话中运行,例如. ~/.bashrc,甚至只是单独运行别名,. ~/.bash_aliases

由于多种原因,这比您最初概述的方法更好,并且是社区用来为您提供此功能的方法。

相关内容