标签: tee

“tee”的目的是什么?

tee我见过的所有用法都是这样的:

 do_something | tee -a logfile
Run Code Online (Sandbox Code Playgroud)

或者:

do_something_else | tee logfile
Run Code Online (Sandbox Code Playgroud)

tee为那些不知道你可以用 shell 管道重定向做同样的事情的人发明的吗?如:

do_something >> logfile
Run Code Online (Sandbox Code Playgroud)

或者:

do_something_else > logfile
Run Code Online (Sandbox Code Playgroud)

它实际上是一样的,而且打字所需的键盘敲击次数更少。我没有看到哪些隐藏功能tee

shell tee

96
推荐指数
9
解决办法
3万
查看次数

在管道到 T 恤时保留颜色

ls -l --color=auto | tee output.log
Run Code Online (Sandbox Code Playgroud)

没有管道/三通,它是彩色的。我怎样才能使它在使用时保持着色tee(只能在屏幕上着色,我不关心日志中的颜色)。

pipe tee

87
推荐指数
3
解决办法
4万
查看次数

替代不带 STDOUT 的 tee 命令

我正在使用| sudo tee FILENAME能够写入或附加到经常需要超级用户权限的文件。

尽管我理解为什么它在某些情况下很有用,但它tee也会再次将其输入发送到 STDOUT,但我从未真正将其tee用于任何有用的部分。在大多数情况下,如果我不采取额外的步骤并使用tee 1> /dev/null.

我的问题:是否有一个命令 arround,它的作用与 完全相同tee,但默认情况下不向 STDOUT 输出任何内容?

linux command-line posix tee

47
推荐指数
4
解决办法
3万
查看次数

PowerShell 和 T 恤

我使用此命令查看控制台和文件中的输出:

powershell -command "my_command_1 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"  
powershell -command "my_command_2 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"
# etc
Run Code Online (Sandbox Code Playgroud)

它的效果没有我预期的那么好,我有一些问题:

  1. 如何将 stderr 也重定向到文件?
  2. 输出工作非常奇怪。对于某些命令,在打印文本和更新控制台/文件之间存在巨大的延迟。对于其他一些命令,输出似乎在打印文本时更新(我运行没有 tee 的命令,我知道它应该打印什么)。这种延迟使这款 T 恤几乎毫无用处 - 如果将打印一些严重错误,因此我需要停止该命令,但我什么也看不到,直到为时已晚怎么办?

    对于某些命令,仅在完成完整命令后才会打印输出。

  3. 此外,即使命令要求用户输入,控制台/文件输出也是空的!对于那个命令,我知道它期望什么并盲目地打印所需的文本并且它起作用了,但是对于其他人 - 如果没有输出,我将无限等待某些事情发生,而命令将等待我的输入!

这些问题有解决方案吗?如果没有,PowerShell 中的这个 tee 东西是完全没用的。

powershell stderr tee

10
推荐指数
1
解决办法
7439
查看次数

tee:“--ignore-interrupts”选项究竟有什么作用?

标题基本上说明了一切。tee有一个选项--ignore-interrupts

-i, --ignore-interrupts   ignore interrupt signals
Run Code Online (Sandbox Code Playgroud)

谁能解释/举一个例子,在哪种情况下这很重要?谢谢!

linux tee

9
推荐指数
1
解决办法
3564
查看次数

你能在用 tee 写的每一行前面加上当前日期和时间吗?

我使用“tee”命令来将长 bash 命令的结果捕获到文件中。

我用 tee 发出的文件可以以某种方式在每行前面加上写入该行时的时间戳吗?我正在寻找一种解决方案,其中每行都有不同的日期时间值...而不是每行上的前缀相同的值。

我想要这个的原因是,当我阅读文件以了解慢速区域在哪里时,了解每行何时发出将非常有用。

bash logging tee

9
推荐指数
1
解决办法
6680
查看次数

使用 netcat 作为代理记录流量

我想使用 netcat 作为代理来记录 http 请求和对文件的响应,然后跟踪这些以检查流量。想想wireshark。

尝试了以下其中“fifo”是命名管道,“in”和“out”是文件,端口 8080 上的 netcat 代理,端口 8081 上的服务器。

虽然是真的;做猫fifo | nc -l -p 8080 | tee -a in | nc 本地主机 8081 | tee -a out 1>fifo; 完毕

问题:

  • Netcat 在第一次请求后停止响应(忽略循环?)。

  • localhost [127.0.0.1] 8081 (tproxy) : Connection refused如果服务器在 8081 上不可用,Netcat 将失败并显示 msg 。 问:是否可以在发出请求时“延迟”连接到 8081?即我不想让 8081 在 netcat 启动时运行。

linux bash netcat tee named-pipe

7
推荐指数
2
解决办法
1万
查看次数

Tee 脚本以在其自身内归档

我熟悉使用 tee,我知道我可以简单地记录输出

script.sh | tee file.log
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个无缝的用户界面。有没有办法在 script.sh 中像上面那样运行 tee ?在这个脚本中,有数百个回声和许多其他正在运行的脚本,很难将每个脚本单独附加到文件中。

bash tee

6
推荐指数
1
解决办法
3450
查看次数

如何同时打印和管道日志文件?

我用它来检查日志文件的日志行,直到发生特定事件(取自此答案“监视文件直到找到字符串”):

(tail -f -n 0 test.log &) | grep -q 'SPEFICIC LOG MESSAGE'
Run Code Online (Sandbox Code Playgroud)

这可行,但我还希望在等待事件时将日志行打印到标准输出。我正在寻找类似的东西tee,但我想同时打印和管道。

我尝试了这个答案来管道并观察管道输出?, 导致:

(tail -f -n 0 test.log &) | tee /dev/fd/2 | grep -q 'SPEFICIC LOG MESSAGE'
Run Code Online (Sandbox Code Playgroud)

但随后该命令永远不会退出,大概是因为在找到匹配项时grep无法中断,因此继续将数据传送到?tailtailtee

bash grep tee

5
推荐指数
1
解决办法
1506
查看次数

如何开球到标准错误?(一个管道中有多个汇)

some_source | (tee /dev/stderr | sink_1) 2>&1 | sink_2
Run Code Online (Sandbox Code Playgroud)

好像失败了。

如何在没有任何临时性的情况下做到正确?

linux bash stderr tee

4
推荐指数
1
解决办法
1416
查看次数

我可以在创建文件时计算其校验和吗?

我正在创建一个大型tar档案,我也想创建档案的校验和。我可以这样实现:

$ tar cfz archive.tar.gz files
$ sha256sum archive.tar.gz > archive.tar.gz.sha256sum
Run Code Online (Sandbox Code Playgroud)

但是存档文件很大并且在慢速媒体上,所以我不想在写出来后重新读一遍。

我可以构建一个在写入文件时对文件进行哈希处理的管道吗?我想也许我可以使用该tee实用程序来做到这一点,但这只会写入文件,而不是写入另一个命令的标准输入。

checksum tar tee

4
推荐指数
1
解决办法
3014
查看次数

标签 统计

tee ×11

bash ×5

linux ×4

stderr ×2

checksum ×1

command-line ×1

grep ×1

logging ×1

named-pipe ×1

netcat ×1

pipe ×1

posix ×1

powershell ×1

shell ×1

tar ×1