首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用tee重定向文件描述符3

用tee重定向文件描述符3
EN

Stack Overflow用户
提问于 2011-02-16 03:36:04
回答 2查看 2.2K关注 0票数 4

几个月前我写了这个剧本,现在再读一遍,我无法理解这句话的意思:

代码语言:javascript
复制
sudo rsync -xPRSaz --rsync-path='sudo rsync' maeve@macbook:/ macbook/ 3>&1 1>&2 2>&3 | tee macbook.log

我找不到对sudorsynctee的文件描述符3的任何特殊处理。在重定向之后,我目前猜测情况如下:

代码语言:javascript
复制
now fd points to old fd
     0    -->         0
     1    -->         2
     2    -->         1
     3    -->         1

  • 是将这些重定向应用于sudo,还是应用于rsync,以及到什么目的?
  • 是文件描述符3未关闭或以任何“坏”方式挂起的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-16 03:44:15

你猜得对。交换标准输出和标准错误是一个相当巧妙的技巧。回答你的问题:

  • ,这些重定向是由shell捕获的,因此它们适用于管道的这一部分(即sudo)。sudo进程本身将检测所有参数并将它们传递给它的子命令(rsync),但是重定向在此之前已经捕获并执行:sudo从未看到它们。
  • 文件句柄3不会被挂起。它将在进程结束时关闭。
票数 1
EN

Stack Overflow用户

发布于 2011-02-21 14:19:26

请注意,悬空文件描述符3可以与3>&-一起关闭,下面是包含以下内容的完整行:

代码语言:javascript
复制
sudo rsync -xPRSaz --rsync-path='sudo rsync' maeve@macbook:/ macbook/ 3>&1 1>&2 \
2>&3 3>&- | tee macbook.log
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5012280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档