回答

收藏

在shell中,“ 2>&1 ”是什么意思?

技术问答 技术问答 475 人阅读 | 0 人回复 | 2023-09-12

在 Unix shell 中,如果我想合并的话stderr并stdout进入stdout我可以在命令结束时添加以下内容:! d! i) [1 W, q
    2>&13 H8 k8 x" b: ?
所以,如果我想的话head使用 输出g  ,我可以这样做:+ u+ X5 m7 P; W, G7 y
    g   lots_of_errors 2>&1 | head
    . F2 m4 h6 [. R, E
所以我只能看到前几个错误。
$ q& T0 W, c# m我总是很难记住这一点,而且我必须经常去查找它,这主要是因为我不完全理解这个特殊技巧的语法。4 `, G( Z2 i0 _
有些人可以打破这一点,并逐字解释什么2>&1 意思吗?
9 Y5 s- ^$ @- _6 y                                                                ) z. I# l2 y; l6 S
    解决方案:                                                                7 t; n/ @% H: G) X( m+ ^' }
                                                                文件描述符 1 是标准输出 ( )stdout)。$ g: V9 o$ }9 q# s
文件描述符 2 标准错误 ( stderr)。2 R. e- H+ d7 k' R8 w; C+ }2 ?
这是一种记住结构的方法(尽管它不完全准确):起初,2>可能看起来像重定向stderr到stdout.但它实际上被解释为重定向stderr到一份名为1的文件。&表示后面和前面是文件描述符,而不是文件名。因此,结构变成:2>&1.
" O( X, r. D( J0 J# h$ J考虑>&作为重定向合并运营商。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则