从两个来源,文件夹和键击败来自数组

  • 本文关键字:数组 文件夹 两个 bash
  • 更新时间 :
  • 英文 :


我正在尝试定义bash函数, mycd。此功能使用关联数组mycdar。如果键存在在数组中,则函数将将目录更改为密钥的相应值。如果键不存在,它将更改为命令行中提供的DIR。

我想做的是从关联数组的两个键或当前目录中的文件夹中完成此功能的完成。

谢谢。

构建我自己的cd功能

使用关联阵列存储一些路径。

首先命令:

mycd() { [ -v mycdar["$1"] ] && cd "${mycdar[$1]}" || cd "$1"; }

第二个完成命令

_mycd() {
    local cur;
    _cd ;
    _get_comp_words_by_ref cur;
    COMPREPLY=($(
        printf "%sn" "${!mycdar[@]}" |
            grep ^$cur)
        ${COMPREPLY[@]});
    }

一个数组:

declare -A mycdar='(
     ["docs"]="/usr/share/doc"
     ["home"]="$HOME"
     ["logs"]="/var/log"
     ["proc"]="/proc"
     ["root"]="/"
     ["tmp"]="/tmp"
)'

比最终结合:

complete -F _mycd -o nospace mycd

或允许标准路径构建行为:

complete -F _mycd -o nospace -o plusdirs mycd

,事实证明,有一个选项可以完全执行所要求的操作:

complete -o plusdirs -o nospace -F _mycd mycd

在这种情况下,_mycd只是从关联数组的键返回匹配元素。

相关内容

  • 没有找到相关文章

最新更新