在shell中,“ 2>&1 ”是什么意思?
技术问答
532 人阅读
|
0 人回复
|
2023-09-12
|
在 Unix shell 中,如果我想合并的话stderr并stdout进入stdout我可以在命令结束时添加以下内容:2 @' Q) X7 ~ d ~0 z4 m
所以,如果我想的话head使用 输出g ,我可以这样做:
5 w6 Q( z# r- q9 e" B% J8 rg 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
考虑>&作为重定向合并运营商。 |
|
|
|
|
|