【发布时间】:2017-04-06 17:48:22
【问题描述】:
我有这个 bash 完成文件
#/etc/bash_completion.d/mycommand
_mycommand()
{
local cur
COMPREPLY=()
_init_completion || return
#Variable to hold the current word
cur="${COMP_WORDS[COMP_CWORD]}"
#array variable COMPREPLY
dirs=('Rootdir/
Secondrootdir/
Rootdir/Subdir/
Secondrootdir/Anothersubdir/
Secondrootdir/Thirdsubdir/
Secondrootdir/Anothersubdir/Subsubdir/'
)
COMPREPLY=($(compgen -W "$dirs" "$cur"))
}
#Assign the auto-completion function _mycommand for our command mycommand.
complete -F _mycommand mycommand
当我有多项选择并按两次 TAB 时,我看到以下内容:
$ mycommand Secondrootdir/
Secondrootdir/
Secondrootdir/Anothersubdir/
Secondrootdir/Anothersubdir/Subsubdir/
Secondrootdir/Thirdsubdir/
但我只想查看当前输入的Secondrootdir
的一级深层子目录像这样:
$ mycommand Secondrootdir/
Anothersubdir/ Thirdsubdir/
cd 命令做得很好
$ cd Music/
kattymusic/ Playlists/ Relax/
但我不明白 cd 自动完成是如何工作的。
有人可以帮帮我吗?
【问题讨论】:
-
没有。他们在远程服务器上。而且我只能使用 API 接收它们的列表。
-
谢谢。很好的例子,但我想要相反的东西。
-
我会为此付出更大的努力,希望我能成功。
-
问题是 - 如果我将计算输入斜杠的数量,并在数字+1 斜杠之后修剪输出字符串,那么当我点击制表符时,自动完成将停止。
标签: linux bash shell ubuntu bash-completion