bash - 为 compgen 指定另一个目录以自动完成目录,而不是使用 pwd

标签 bash bash-completion compgen

compgen -d -- $cur只会建议 pwd 中目录的补全吗?

我可以让它在另一个目录中时为某个目录建议目录完成吗?

例如。如果我在 /curr_dir ,我想为 /other_dir 生成目录完成我该怎么办?如何将其指定为 compgen , 这样我就不需要去 /other_dir

在我的 bash 完成函数中,我尝试执行 cd在调用之前到那个目录 compgen但是在按下 <Tab> 之后我就留在了另一个目录中.

最佳答案

compgen -d -- $cur will suggest completions for the directories in pwd only right?

不,它将完成 $cur,假设内容是一个路径。自己试试吧,输入 命令直接进入你的shell。示例:

$ compgen -d -- "/"
/run
/lib64
/usr
[...]

所以你唯一要做的就是使用“$other_dir”而不是“$cur”。 另外,请记住引用字符串,否则 shell 可能会拆分目录名称:

compgen -d -- "$foo" # good
compgen -d -- $foo   # bad

关于bash - 为 compgen 指定另一个目录以自动完成目录,而不是使用 pwd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23700011/

相关文章:

macos - 如何使 bash 制表符完成功能像 Windows 的 cmd.exe 一样工作?

bash - 使用 compgen 获取另一个命令的自动完成功能,使用哪个标志?

linux - 如何为路径上的所有可执行文件编写 bash 完成脚本?

regex - 无法使用 sed/regex 删除字符串中的最后一个字符

bash - Shell 脚本模板

Bash 补全因短选项而中断

bash - 可以以编程方式调用 bash 完成吗?

bash - 在 bash 中列出文件中的所有变量

bash - 可以在此代码中使用 eval 完成代码注入(inject)吗?

bash - 在 MacOS 中使 ZSH 默认 Shell