当我在命令之后的参数上使用制表符完成时,ls
它可以工作,但是当我在某些脚本参数之后使用它时(请参见下面的第二个示例),它不起作用。我已经检查过选项卡补全已启用。如何使所有命令都运行制表符补全?
screen
注意:如果重要的话,我会在会话中(在 Ubuntu 上)运行它。
user$ echo $SHELL
/bin/bash
user$ grep completion ~/.bashrc
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
user$
user$ ls test[TAB]
test.log1
test.log2
test.log4
test.log5
user$ ./script.sh >& test[TAB] <-- "no output"
Bash 版本:GNU bash,版本 4.3.11(1)-release (x86_64-pc-linux-gnu)
答案1
尝试等效的:
$ ./script.sh &> test[TAB]
这&>
是将 stdout 和 stderr 重定向到文件的首选语法。
制表符补全将 ( >&
) 视为其他语法,并且不显示文件。