Bash 中自动查找文件参数

Bash 中自动查找文件参数

我一直在尝试构建一种让 bash 自动完成文件参数的方法。这样当您输入vi not[tab][tab]它时,如果它在历史记录或路径内,则会自动完成为 notes.md,否则会给出文件列表。我无法弄清楚如何使用 bash_autocomplete 执行此操作,但能够通过执行创建以下可工作的函数x vi not[enter]。有人知道如何将其转换为自动完成吗:

function x () {
    # last arg is file to find
    FILEARG=${@: -1}
    read -a FILES <<< $(timeout -k 1s 1s \
            find . -maxdepth 4 -name "*${FILEARG}*" -type f \
            -printf "%A@ %p\n"  | sort -nr | awk '{print $2}')
            #A@ access time epoc timestamp
            #C@ status change time
    # use this to only take latest:
    #FILES="${FILES[0]}"

    if [ ${#FILES[@]} -gt 1 ]; then
            select FILE in ${FILES[@]}; do
                    break
            done
    else
            FILE="${FILES[0]}"
    fi

    echo $FILE

    eval ${@:1:$#-1} $FILE
}

相关内容