位于命令行末尾时,I/O 重定向快捷方式不起作用

位于命令行末尾时,I/O 重定向快捷方式不起作用

我已经习惯了 I/O 重定向。我已经意识到&>的捷径了2>&1。我相信它也可以作为>&.可能存在我不知道的细微差别。

使用它时,它必须位于命令行的中间:

ls test.txt missing &> output.txt

但是,当使用长格式时,它必须位于命令行的末尾:

ls test.txt missing > output.txt 2>&1

当尝试将快捷方式放在末尾时,会导致错误:

ls test.txt missing > output.txt &>
-bash: syntax error near unexpected token `newline'

为什么是这样?是什么使快捷方式有所不同,以至于它必须内联使用,而不是像长格式方法一样在行尾使用?

答案1

&>word:

semantically equivalent to

>word 2>&1

它是不是和独自一人一样2>&1。就像重定向一样输出word(目标)部分是必需的。2>&1实际上是使用一个不同的运营商,并且它还需要目的地word(这里是“ 1”)。

重定向按顺序应用,并且允许重定向多次。您可以将命令更改为:

ls test.txt missing > output.txt &>tmp.txt

&>并提供一个查看效果的目的地。这就是它认为您正在尝试编写的内容,并且错误表明它希望看到第二个文件名但没有找到它。

相关内容