我想我错过了一些非常愚蠢的东西,请纠正我。
root@fdas:~# mount /dev/sdd1 /b 2>&1 > /tmp/test
mount: you must specify the filesystem type
root@fdas:~# cat /tmp/test
root@fdas:~# mount /dev/sdd1 /b > test
mount: you must specify the filesystem type
root@fdas:~# cat test
root@fdas:~#
我只需要捕获那一行输出......先谢谢你
答案 0 :(得分:2)
看来在标准shell(不是bash / csh)中,您需要先告诉它在哪里重定向stdout
然后再重定向stderr
,这样您只需要交换重定向:
mount /dev/sdd1 /b > /tmp/test 2>&1
在CSH中,您可以使用&
作为Shiplu建议:
mount /dev/sdd1 /b >& /tmp/test
在BASH中&
语法不同:
mount /dev/sdd1 /b &> /tmp/test
BASH也支持CSH &
语法,但不推荐(在man中)
答案 1 :(得分:1)
您想要捕获stderr
。以下将捕获所有。
mount /dev/sdd1 /b >& /tmp/test
答案 2 :(得分:1)
重定向语法取决于shell
有两种类型--bash(或Bourne shell系列)和csh(或C shell系列)
在csh中,使用“cmd>& file”重定向stdout&标准错误,
在bash中,使用“cnd 2>& 1> file”来执行相同的操作
更多信息here