![bash 选项卡补全在 >& 重定向中不起作用](https://linux22.com/image/108233/bash%20%E9%80%89%E9%A1%B9%E5%8D%A1%E8%A1%A5%E5%85%A8%E5%9C%A8%20%3E%26%20%E9%87%8D%E5%AE%9A%E5%90%91%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
当我在命令之后的参数上使用制表符完成时,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 重定向到文件的首选语法。
制表符补全将 ( >&
) 视为其他语法,并且不显示文件。