【问题标题】:Spaces and suffixes in bash complete()bash complete() 中的空格和后缀
【发布时间】:2014-02-25 13:07:34
【问题描述】:

compgen shell 内置有两个困难。 我尝试用简单的 bash _filedir-like(使用 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

此代码仅作为示例。

【问题讨论】:

    标签: bash autocomplete compgen


    【解决方案1】:

    -o 无空间

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

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 2021-02-07
      • 2011-03-12
      • 2012-08-15
      • 1970-01-01
      • 2017-05-02
      • 2020-12-31
      • 1970-01-01
      相关资源
      最近更新 更多