我正在尝试编写一个 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
类型 go
和按Tab两次
go <Tab> <Tab>
将出现可能的目录列表:
foo/
bar/
开始输入名称的开头,它会自动完成:
go f <Tab> → go foo/