Ubuntu 的终端使用区分大小写的自动完成功能,正如我认为 Linux 所期望的那样。
但我认为使用不区分大小写的名称通常会更方便,以节省您在开始名称时必须准确的情况,并且可能值得额外的误报。是否有可能改变这种行为?
当我使用类似程序svn并在 Gnome 终端中输入时:
svn upd
Run Code Online (Sandbox Code Playgroud)
并点击Tab它自动完成:
svn update
Run Code Online (Sandbox Code Playgroud)
是否可以在我的自定义 bash 脚本中执行类似的操作?
如果我apt-g在 hit 之后开始输入命令tab,shell 会完成命令 to apt-get,但对于命令的第二部分install,如果我输入一些字符,如instahit tab,则不会完成它install。
另一个例子:在我输入后,sudo击打tab并没有完成任何事情。例如:sudo apt-ge[ tab] 什么都没有。
我使用 mini iso(40MB 网络安装程序)安装了 Ubuntu,所以也许我错过了一个配置!
我已将此代码添加到我的.bashrc但仍然不起作用:
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Run Code Online (Sandbox Code Playgroud)
我还检查了 的许可,.bashrc它是-rw-r--r--.
我还.bashrc使用source .bashrc将更改应用于新环境但仍然没有影响。
我使用xfce4-terminal所以我认为它可能是终端而不是 bash。
但编辑:
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml …Run Code Online (Sandbox Code Playgroud) 在某个时刻
apt-get install
Run Code Online (Sandbox Code Playgroud)
自动完成被破坏
通过Tab按查看包名称对我来说非常有用
如何修复此自动完成功能?
我正在尝试对 Ubuntu 11.04 Beta 1 中的命令使用 Tab 补全,运行所有最新更新,但它似乎不起作用。(虽然安装了 bash-completion 包)
选项卡完成仅适用于目录或文件。
任何想法在哪里挖掘?
好吧,我的一所大学刚刚向我展示了你可以做到
sudo apt-get install <type first letters of package> <TAB>
Run Code Online (Sandbox Code Playgroud)
它会自动完成包的名称。仅举个例子...
sudo apt-get install ged<TAB> 结果是 sudo apt-get install gedit
现在我尝试这样做,但这对我不起作用。
我该如何解决这个问题?我必须安装一个包吗?我的大学告诉我他没有为此安装任何额外的东西。
如果我有多个目录,例如:
afoo abar
Run Code Online (Sandbox Code Playgroud)
有时我的终端会在我按下 Tab 键时拒绝自动完成(例如,“cd a”然后是 Tab 键),而是打印目录列表。有时它甚至会发出嘈杂、烦人的声音。知道如何在这种情况下自动完成吗?例如,如果我再次按 Tab,它可以先显示 abar,然后显示 afoo。我在 Windows 中看到了这种情况,或者在 Ubuntu 中看到了一些应用程序
如果我这样做:
alias g='git'
Run Code Online (Sandbox Code Playgroud)
我取消了所有完成规则(例如,当我在键入后点击 TAB 时,分支和遥控器不再自动完成g push o)。
我刚刚遇到了一些真正困扰我的事情。ubuntu 上的自动完成功能就像一个魅力,但是当我以 root 身份登录时,例如su我tab有时会自动完成。
为什么它会这样工作?一个人可以改变吗?
我正在尝试irb使用以下命令从文件中进入具有特定环境变量的会话:
$ env $(cat env.sh) irb
Run Code Online (Sandbox Code Playgroud)
但是当我Tab在输入env.完成后尝试按下时,出现以下错误:
$ env $(cat env.-bash: unexpected EOF while looking for matching `)'
-bash: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
另一个有趣的事情是,如果我以 root 身份登录,则不会发生此错误。
这是输出find ~ -uid 0:
$ find ~ -uid 0
/home/(redacted)/.rpmdb
/home/(redacted)/.rpmdb/Group
/home/(redacted)/.rpmdb/Conflictname
/home/(redacted)/.rpmdb/Installtid
/home/(redacted)/.rpmdb/Sha1header
/home/(redacted)/.rpmdb/Providename
/home/(redacted)/.rpmdb/__db.002
/home/(redacted)/.rpmdb/Requirename
/home/(redacted)/.rpmdb/Sigmd5
/home/(redacted)/.rpmdb/__db.001
/home/(redacted)/.rpmdb/Obsoletename
/home/(redacted)/.rpmdb/.dbenv.lock
/home/(redacted)/.rpmdb/Name
/home/(redacted)/.rpmdb/Basenames
/home/(redacted)/.rpmdb/Triggername
/home/(redacted)/.rpmdb/Packages
/home/(redacted)/.rpmdb/Dirnames
/home/(redacted)/.rpmdb/__db.003
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么会发生这种情况,如果是这样,当我不是 root 用户时如何修复它?