3>&1是否暗示4>&3 5>&3等?

问题描述 投票:5回答:1

我希望

echo foo | tee /proc/self/fd/{3..6} 3>&1

由于诸如[[/ proc / self / fd / 4:无此类文件或目录]之类的错误而失败,但是令我惊讶的是,它输出foo foo foo foo foo

就像3>&1导致以下所有描述符都重定向到stdout。但是,如果我将3更改为其他名称,例如[>]

echo foo | tee /proc/self/fd/{3..6} 4>&1

echo foo | tee /proc/self/fd/{4..6} 4>&1

我在man procman dup等中寻找解释;用谷歌搜索我能想到的所有单词组合,但是找不到任何东西。这在某处有记录吗?

我希望echo foo | tee /proc/self/fd/{3..6} 3>&1因/ proc / self / fd / 4之类的错误而失败:没有这样的文件或目录等,但令我惊讶的是,它输出foo foo foo foo foo foo就像3&...

linux bash shell io-redirection proc
1个回答
5
投票
[strace显示此系统调用序列:

openat(AT_FDCWD, "/proc/self/fd/3", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4 openat(AT_FDCWD, "/proc/self/fd/4", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 5 openat(AT_FDCWD, "/proc/self/fd/5", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 6 openat(AT_FDCWD, "/proc/self/fd/6", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 7

© www.soinside.com 2019 - 2024. All rights reserved.