bash中的空格和后缀完成()

时间:2014-02-25 13:07:34

标签: bash autocomplete compgen

我有两个compgen shell内置的困难。 我尝试用简单的bash _filedir显示它 - 就像(使用ls)代码:

_myfiledir(){
  path="$cur"
  prefix=`echo /$path | grep -o "[0-9a-Z\-+_/]*/"`
  sufix=`echo /$path | grep "/[0-9a-Z\-+_]*$" | grep -o "[0-9a-Z\-+_]*$"`
  res=`ls -p $prefix`
  COMPREPLY=($( compgen -o nospace -W "$res" -- $sufix ))
}

在这种情况下cur=="usr/li"然后prefix=="/usr/"sufix=="li"

我有两个困难。有空间和更换。例如:

$ script usr/li[TAB]

我明白了:

$ script lib/  <- additional space here

我需要:

$ script usr/lib/ <- no space here

此代码仅供参考。

1 个答案:

答案 0 :(得分:0)

-o nospace

此选项在compgen上下文中不起作用。使用compopt更改选项。 在您的情况下compopt -o nospace对空白问题有用,compopt -o filenames对文件名有用。 请注意文件名,您需要将$prefix添加到$res变量。选项filenames仅在向用户显示自动完成时切断部分完整路径。