3

我无法使用简单的 bash 自动完成功能。我需要从预定义的目录中自动完成文件名,所以它看起来像这样:

$ cmd log<TAB><TAB>
file1.log file2.log file3.log   

文件来自哪里/var/log/app

4

3 回答 3

2

当 shell 可以单独列出文件时,我看不到使用的意义ls,所以这里只使用 shell。

_cmd() {
    local files=("/var/log/app/$2"*)
    [[ -e ${files[0]} ]] && COMPREPLY=( "${files[@]##*/}" )
}
complete -F _cmd cmd
于 2012-07-15T08:28:28.103 回答
-1

将它们放入~/.bashrc

_cmd() { COMPREPLY=($(ls /var/log/app)); }    
complete -F _cmd cmd

要编写功能齐全的自动完成功能,
请查看/etc/bash_completion.d/python.

于 2012-06-12T09:14:44.070 回答
-1

我发现这可以根据需要工作:

COMPREPLY=( $(compgen -W "$(ls /var/log/app/)" -- $cur) )

感谢https://unix.stackexchange.com/questions/28283/autocomplete-of-filename-in-directory中的 dogbane !

于 2012-06-12T14:30:28.740 回答