小编Rob*_*b I的帖子

文件名模式或目录的 bash 补全

我正在尝试设置 bash 完成脚本,但遇到了一些麻烦。

我想设置它,以便列出的补全是匹配特定扩展名的文件或目录(可能包含也可能不包含该扩展名的文件)。

我遇到的问题是,我可以获得包含文件目录的-o plusdirs -f -X '!*.txt'补全的唯一方法是使用类似的东西,但是当我让 bash 完成其中一个目录时,它只会在末尾添加一个空格,而不是削减。

_xyz()
{
  local cur=${COMP_WORDS[COMP_CWORD]}
  local prev=${COMP_WORDS[COMP_CWORD-1]}

  #COMPREPLY=( $( compgen -f -X '!*.txt' -- $cur ) )
  #COMPREPLY=( $( compgen -f -G '*.txt' -- $cur ) )
  #COMPREPLY=( $( compgen -o filenames -f -X '!*.txt' -- $cur ) )
  #COMPREPLY=( $( compgen -o dirnames  -f -X '!*.txt' -- $cur ) )
  COMPREPLY=( $( compgen -o plusdirs  -f -X '!*.txt' -- $cur ) )
  return 0
} …
Run Code Online (Sandbox Code Playgroud)

bash tab-completion bash-scripting

13
推荐指数
1
解决办法
9942
查看次数

标签 统计

bash ×1

bash-scripting ×1

tab-completion ×1