我注意到,对于我在 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
由于多种原因,这比您最初概述的方法更好,并且是社区用来为您提供此功能的方法。