我必须在一组相对较少的顶级目录中更改许多子目录。我想让我的生活更轻松,所以我决定看看我是否可以编写一些东西。所以我写了这个脚本chdirp
:
if [ $# -ne 1 ]; then
echo "USAGE: chdirp direc"
exit 1
fi
cd /some/top/level/directory/$1
现在,由于整个子shell相关的事情,我有义务按如下方式执行此脚本,以实际更改当前的工作目录:
>>> . chdirp somewhere
到目前为止一切顺利。现在,我想让我的生活更轻松一点,并让脚本为我提供可能的子目录的选项卡完成。所以我在互联网上找到了一个完整的脚本并得到了这个:
_codeComplete() {
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(/bin/ls /some/top/level/directory/)" -- $cur))
}
然后我将完成功能分配给我的脚本。问题是虽然在执行>>> chdirp TAB
时标签完成按预期工作但它不适用于>>> . chdirp TAB
。
我真的想结合使用tab完成子目录列表和快速更改子目录的好处。有什么建议我如何解决我目前的问题?
答案 0 :(得分:1)
我建议您将其作为函数放入.bashrc,而不是将代码放入独立的脚本中。这样,你就不需要了。 your_command xxx",你只是" your_command xxx"。
此外,虽然它不完全是您原始问题的答案,但我还是想推荐一篇博文。我认为你实际上正在寻找一种方法来标记多个目录。我碰巧这样做是为了让我的生活更轻松。您可以在http://lgfang.github.io/images/bash-dir-bookmark.png查看相应的bash函数https://github.com/lgfang/dotfiles/blob/master/.bashrc
事实上,我在更改目录之间做了很多工作,这让它变得非常简单。有关详细信息,请访问http://lgfang.github.io/computer/2015/12/18/bash-convenience。