参数后的Bash选项卡补全

尼克:

我最近从Scientific Linux 6转到了CentOS 7,并且在新OS中的bash选项卡完成方面遇到了问题。

软件版本

$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

$ uname -r
3.10.0-229.14.1.el7.x86_64

$ bash --version
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)

我有一个名为bash的脚本(可执行文件)./run_prog.sh,该脚本使用-c选项(或long --config =)在命令行上获取配置文件。

完整命令示例:

./run_prog.sh -c=./config/test-new-feature.conf
## or
./run_prog.sh --config=./config/test-new-feature.conf

在早期版本的bash中,我可以在-c =构造后制表完整的目录和文件名。

预期制表符完成的示例(它在SL6中的工作方式):

./run_prog.sh -c=./conf[TAB]
 ## completes to
./run_prog.sh -c=./config/
 ## then type
./run_prog.sh -c=./config/test-n[TAB]
 ## completes to
./run_prog.sh -c=./config/test-new-feature.conf

在-c = short选项之后,新版本的CentOS 7中的bash不会完成任何文件名。

CentOS 7中的制表符完成中断的示例:

./run_prog.sh -c=./conf[TAB]
 ## doesn't complete anything
./run_prog.sh -c=./conf

但是,如果我用空格分隔-c,则文件名补全按预期工作。

带空格的工作选项卡补全示例:

./run_prog.sh -c ./conf[TAB]
 ## completes to
./run_prog.sh -c ./config/
 ## then type
./run_prog.sh -c ./config/test-n[TAB]
 ## completes to
./run_prog.sh -c ./config/test-new-feature.conf

我如何获得新版本的bash来像完整版本的bash一样制表完整的文件名?

编辑

该脚本的短-c选项的长版本为--config。长版本也不起作用。

./run_prog.sh --config=./conf[TAB]
 ## doesn't complete anything
./run_prog.sh --config=./conf

这让我感到不安的是,bash由于选项开关(-c)和选项值之间缺少间距而感到困惑。

我的旧bash完成目录

$ ls -1 /media/old_hd/etc/bash_completion.d/
bzr
createrepo.bash
dkms
fcoeadm
fcoemon
gdbus-bash-completion.sh
git
gvfs-bash-completion.sh
lldpad
lldptool
perf
phoronix-test-suite
pk-completion.bash
rpmdevtools.bash-completion
subversion
yum.bash
yum-utils.bash

我的新bash_completion目录

$ ls -1 /etc/bash_completion.d/
createrepo
dkms
fcoeadm
fcoemon
genpkgmetadata.py
git
lldpad
lldptool
mergerepo
mergerepo.py
modifyrepo
modifyrepo.py
redefine_filedir
scl.bash
yum
yummain.py
yum-utils.bash
尼克:

谷歌搜索(并在朋友的帮助下)之后,我找到了解决方案!

要修复文件名自动完成功能,请在~/.bashrc文件中添加以下内容

complete -D -o default

参考:参数中路径的Bash完成(存在等号)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash选项卡补全在=字符后无法正常工作

bash选项卡补全如何工作?

Bash选项卡补全删除文本

选项卡自动补全命令的选项

自定义bash选项卡补全显示可能的补全,但未实际完成输入

Bash参数扩展以删除选项卡

首个选项卡补全增强

zsh cd选项卡补全匹配

选项卡补全不适用于某些命令的文件参数

使用PowerShell进行类似Bash的,不可旋转的文件名选项卡补全

Bash选项卡补全在以前没有时将“〜”扩展为“ / home / ___”

bash选项卡补全在图形shell中不起作用

Bash选项卡补全:'-bash:寻找匹配`)时出现意外的EOF -bash:语法错误:文件意外结束

用 bash 中的选项卡文件值填充参数

Editline选项卡补全应该起作用吗?

jshell选项卡补全非实例方法

git分支的选项卡补全显示旧/过时的条目

/ proc / self / fd /的选项卡补全显示与列出内容相比不同的补全

禁用bash选项卡完成

刷新bash选项卡完成

Material UI 选项卡:在选项卡之间切换后,选项卡中的更改被丢弃

Emacs + ipython选项卡补全不起作用(“不匹配”)

tcsh中的选项卡自动补全和历史记录

在zsh选项卡补全中使用冒号作为文件名分隔符

“ git checkout”的选项卡补全与“ git cherry-pick”冲突

修改cd选项卡自动补全以显示类似ls -la

关闭子选项卡后关闭父选项卡

更改选项卡后,从链接禁用引导程序打开的选项卡

单击选项卡后,Angular Bootstrap选项卡更改URL