我正在构建一个带有可执行文件别名的源文件(这些工作正常)并将目录分配给变量,以便更快地到达目录,减少输入。例如,如果我源example.source:
#!/usr/bin/bash
mydir="/path/to/some/dir"
我可以使用
到达/path/to/some/dir
cd $mydir
但是,我无法使用tab complete来浏览其他子目录,就像输入完整路径一样。我的意思是,如果我使用tab键来完成变量我得到cd $mydir
但不是cd $mydir/
(我必须删除最后一个空格字符并手动键入斜杠/以查看下一个子目录) 。希望这是一个可以理解的问题。有没有解决方法呢?
编辑:我正在使用的Linux发行版是Slackware Linux 3.2.31.c x86_64 GenuineIntel GNU / Linux
EDIT2: GNU bash,版本4.2.37(2)-release
答案 0 :(得分:1)
显然这个功能已经开始在bash 4.3,2014年2月26日09:25发布。
在bash 4.3中阅读NEWS文件我发现了这个:
我。单词完成代码检查文件名是否为 包含一个 shell变量扩展为目录名,并在单词后附加“/” 作为适当的。相同的代码扩展了命令名称中的shell变量 执行命令完成时。
不幸的是我无法重新安装bash(因为我在服务器上工作),但我希望这可以帮助其他人。
答案 1 :(得分:0)
如果我理解了您的问题,那么我相信可以通过将其放在example.source
的顶部来解决。这将在您每次cd时列出您的内容。
#!/usr/bin/bash
# Make cd change directories and then list the contents
function cd() {
builtin cd $*;
ls;
}
mydir="/path/to/some/dir"
cd $mydir
我的另一个建议是尝试将cd放在你的别名中。像这样:
mydir="cd /path/to/some/dir"
$mydir