回答

收藏

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

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

在 Unix shell 中,如果我想合并的话stderr并stdout进入stdout我可以在命令结束时添加以下内容:2 @' Q) X7 ~  d  ~0 z4 m
    2>&11 c  ]3 A1 H- ~; }
所以,如果我想的话head使用 输出g  ,我可以这样做:
5 w6 Q( z# r- q9 e" B% J8 r
    g   lots_of_errors 2>&1 | head
    / W5 X& J+ S7 E7 q# n$ Z
所以我只能看到前几个错误。6 h: Y7 @. o$ w+ K. [% i' F
我总是很难记住这一点,而且我必须经常去查找它,这主要是因为我不完全理解这个特殊技巧的语法。4 L! M. ~5 G6 t" V
有些人可以打破这一点,并逐字解释什么2>&1 意思吗?/ Y6 @. W0 n$ z2 _
                                                                + S6 d6 |5 V3 Y* `' U7 _& Y
    解决方案:                                                                & g6 n' k: S' _' d
                                                                文件描述符 1 是标准输出 ( )stdout)。
, n$ Z+ S& q& a+ W; `& N9 c" L4 K文件描述符 2 标准错误 ( stderr)。
! Y2 }/ g5 F4 Q9 h, N0 O这是一种记住结构的方法(尽管它不完全准确):起初,2>可能看起来像重定向stderr到stdout.但它实际上被解释为重定向stderr到一份名为1的文件。&表示后面和前面是文件描述符,而不是文件名。因此,结构变成:2>&1., B: g8 P$ F6 L# r- c
考虑>&作为重定向合并运营商。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则