zsh
não suporta a sintaxe do descritor de arquivo em movimento como bash
ou ksh
. Portanto, 1>&3-
significa redirecionar a saída padrão e o erro padrão para o arquivo denominado 3-
:
$ echo -n '<'; zsh -c 'ls 3>&2 2>&1 1>&3-'; echo '>'
<>
$ ls
3- a b
Para obter o mesmo comportamento de descritor de arquivo em movimento, como bash
e ksh
, em qualquer shell POSIX:
sh -c 'ls 3>&2 2>&1 3>&1 3>&-'
Isso é o que o 1>&3-
em bash
e ksh
faz internamente, o descritor de arquivo duplicado 3 para o descritor de arquivo 1 e, em seguida, fecha o descritor de arquivo 3.