You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中实现向多个文件描述符重定向?

在Bash中实现同时向多个文件描述符重定向的方法

Bash里没法直接用zsh那种echo "hello" >&1 >&2的写法——因为Bash会按顺序处理重定向,最后只有stderr能拿到输出,而zsh是把每个重定向都绑定到原始输出流。下面是几种可行的实现方式:

用tee命令快速实现

tee的作用是把输入同时输出到指定文件和stdout,利用它指向stderr的设备文件就能实现双输出:

echo "hello" | tee /dev/stderr

这样命令的输出会同时出现在stdout(文件描述符1)和stderr(文件描述符2)里。

通过文件描述符分组控制

如果需要更灵活的重定向逻辑,比如针对一段代码块而非单个命令,可以用分组命令结合重定向:

{ echo "hello"; echo "another line"; } >&1 2>&1

或者用/dev/fd/2(对应文件描述符2)和tee配合,效果和上面一致:

echo "hello" | tee /dev/fd/2

封装成函数方便复用

如果需要频繁使用这个功能,可以写个简单的函数:

multi_print() {
    printf "%s\n" "$*" | tee /dev/stderr
}

之后直接调用multi_print "hello world"就能同时输出到两个描述符。

内容的提问来源于stack exchange,提问作者Amith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:14:54