从某个文件夹自动完成命令

从某个文件夹自动完成命令

我正在尝试编写一个 bash 脚本,自动完成某个文件夹中的文件夹名称。这是我到目前为止所拥有的:

function go {
  cd "/path/to/folder/$@"
}

目标是具有自动完成功能,因此键入go pro并按 Tab 键会自动完成文件或文件夹,例如/path/to/folder/project/

答案1

使用complete你可以实现你想要的:


添加到您的.bashrc

if [[ -f /path/to/your/script ]]; then
  . /path/to/your/script
fi

然后从您的主目录运行:

. .bashrc

创建脚本/path/to/your/script,使其可执行chmod +x /path/to/your/script。把这个内容:

#!/bin/bash

# check that the function doesn't already exist
[[ ! -z "$(compgen -c | grep "^go$")" ]] \
  && echo "The command 'go' already exists." \
  && exit

go() {
 cd /your/dir/"$1"
}

cd_my_dir() {
 cd /your/dir
}

complete -d -F cd_my_dir go

类型 goTab两次

go <Tab> <Tab>

将出现可能的目录列表:

foo/
bar/

开始输入名称的开头,它会自动完成:

go f <Tab> → go foo/

相关内容