我假设你仍然看到STDERR和STDOUT在终端上。你可以去Josh Kelley的答案,但我发现在背景中保持尾巴,输出你的日志文件非常hackish和cludgy。注意你需要保持一个exra FD,然后清除它,杀死它,技术上应该在一个陷阱“…”退出。

有一个更好的方法来做到这一点,你已经发现它:三通。

只有,而不是只使用它为您的stdout,有一个发球台的stdout和一个stderr。你将如何做到这一点?进程替换和文件重定向:

command > >(tee stdout.log) 2> >(tee stderr.log >&2)

让我们分开来解释:

> >(..)

>(…)(过程替换)创建一个FIFO并让Tee监听。然后,它使用> (文件重定向)将命令的STDOUT重定向到您的第一个三通正在侦听的FIFO。

第二个同样的事情:

2> >(tee stderr.log >&2)

我们再次使用进程替换来创建一个从STDIN读取并将其转储到stderr.log中的tee进程。 tee在STDOUT上输出其输入,但由于其输入是我们的STDERR,因此我们要将tee的STDOUT重新定向到我们的STDERR。然后我们使用文件重定向将命令的STDERR重定向到FIFO的输入(tee的STDIN)。

过程替代是那些真正可爱的事情之一,作为选择bash作为你的shell,而不是sh(POSIX或Bourne)的奖励。

在sh,你必须手动做事情:

out="${TMPDIR:-/tmp}/out.$$" err="${TMPDIR:-/tmp}/err.$$"

mkfifo "$out" "$err"

trap 'rm "$out" "$err"' EXIT

tee stdout.log < "$out" &

tee stderr.log < "$err" >&2 &

command >"$out" 2>"$err"

stderr 用法 linux,linux – 如何在使用“tee”时使用管道将stderr写入文件?相关推荐

  1. Linux为什么无法进入文件,Linux系统运维之CentOS下提示“无法打开并写入文件”问题解决...

    当前是root用户,去编辑/etc/ssh/sshd_config 却提示没有权限修改.报错如"/etc/ssh/sshd_config" E212: 无法打开并写入文件. 问题思 ...

  2. linux tee 命令 输出的同时写入文件

    有时候,你会想手动跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考.如果你想寻找这相关的工具,那么恭喜你,Linux 已经有了一个叫做 tee 的命令可以帮助你. tee 命令基 ...

  3. linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr

    基本概念 1. 文件描述符 总览: 当一个程序成功向操作系统请求访问一个打开的文件, 内核会返回一个指向内核中全局文件表(global file table)中的入口点(entry)的文件描述符. 文 ...

  4. linux下tail命令的用法,在Linux命令中tail的用法

    linux中的tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的档案 ...

  5. c语言strTrimed函数用法介绍,linux type命令用法_转

    在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...

  6. linux中chmod命令的用法,【linux】chmod命令详细用法

    功能说明: 变更文件或目录的权限 u:User,即文件或目录的拥有者. g:Group,即文件或目录的所属群组. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围. a:Al ...

  7. linux内核剖析(八)进程间通信之-管道

    管道 管道是一种两个进程间进行单向通信的机制. 因为管道传递数据的单向性,管道又称为半双工管道. 管道的这一特点决定了器使用的局限性.管道是Linux支持的最初Unix IPC形式之一,具有以下特点: ...

  8. 文件名重定向到txt中Linux,Linux上glob用于实现文件名的通配、IO重定向及管道

    Linux中所谓的通配是指,显示以指定条件为条件的文件:即通配的含义是指搜寻以已知条件为前提的目标文件. 常用文件通配符有: 文件通配符 含义 例子 * 任意长度的任意字符 如a*,搜寻所有以a为首的 ...

  9. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

最新文章

  1. 查找nginx安装的路径以及相关安装操作命令
  2. docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接
  3. XAMPP环境下apache无法启动(端口未被占用)的解决方法
  4. OpenCV 玩九宫格数独(二):knn 数字识别
  5. POJ - 3252 Round Numbers(数位dp)
  6. mysql set语句_MySQL Prepared语句简介
  7. JavaScript大杂烩4 - 理解JavaScript对象的继承机制
  8. 数据分箱1——人工手动分箱
  9. EditPlus v2.20 Build 205
  10. 致敬Github那些卓越贡献的大佬和他们的公众号
  11. uniapp使用colorUI 组件
  12. 信息学奥赛一本通1032
  13. 机器视觉最常见的五大典型应用
  14. 税务会计实务【15】
  15. 虚拟内存之TLB加速地址翻译
  16. tiny6410烧录
  17. html css 实现文字竖排模拟古籍排版
  18. 学习jQuery的感受
  19. 台式计算机显示器的分辨率,直观:计算机的一般屏幕分辨率是什么?
  20. android 纳秒级计时器,RDTSC指令实现纳秒级计时器

热门文章

  1. 解决常见接口跨域问题
  2. 是==和!=相互依赖?
  3. 将对象序列化为字符串
  4. Homebrew:无法符号链接,/ usr / local / bin不可写[关闭]
  5. 如何将零填充到字符串?
  6. win11系统卡死怎么办 Windows11系统卡死的解决方法
  7. 在Makefile中进行宏定义-D
  8. 汕头大学计算机英语复试,2020年汕头大学计算机应用技术考研经验分享
  9. linux修改ip配置文件路径,Centos7系统如何修改IP地址
  10. java tostring是什么意思_Java程序员不会用Lombok就落伍了