拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何在 Linux 中使用 Tee 命令

如何在 Linux 中使用 Tee 命令

白鹭 - 2022-01-16 2333 44 0

如果您曾经在 Linux shell 中使用过管道和重定向,有时您需要使用 tee 实用程序。

Tee 持有什么?

类似ls的命令会显示当前目录的内容。换句话说,它将这些内容显示到标准输出(标准输出)中,通常是您的屏幕,或者更准确地说是虚拟终端屏幕。

类似ls >的命令file123 不会在屏幕上显示任何内容。这是因为 > 符号将所有输出重定向到文件,而不是将其显示为标准输出。现在 file123 将被之前屏幕上显示的内容填充。

要在屏幕上显示文件夹的内容并将其写入文件,您必须使用两个命令。但是使用 tee ,您可以同时做到这两点。

 ls | tee file123 

当你可以运行两次类似的命令时,为什么要使用 Tee?

在上面的例子中,很明显如果可以正常执行ls就不需要tee了,然后重做并将输出重定向到文件。但是,您会遇到输出是唯一的情况。想象一下您试图诊断问题的情况。你跑:

 诊断 | tee error.log 

你得到的错误可能是独一无二的。您希望它们显示在屏幕上,以便在检查所有内容时可以看到发生了什么。但您也希望将这些错误保存在一个文件中,以便稍后查看或将输出粘贴到论坛中并就此咨询人们。

您可能需要 tee 的另一种常见情况是,您希望将命令的输出带到只有 root 用户可以阅读或写。以下命令不起作用:

 /sbin/blkid >/root/somefile 

那你可能会想,就用 sudo 吧!但是当这个命令也不起作用时,你会感到惊讶:

 sudo blkid >/root/somefile 

那是因为在sudo blkid 执行后,你仍然以非root 用户登录。您的 shell(通常是 bash)会尝试使用您的常规用户信息写入 /root/somefile。要解决这个问题,您可以使用 tee

 /sbin/blkid | sudo tee/root/somefile 

附加文本和重定向错误

Tee 是一个简单但有用的命令。一个命令| tee somefile 基本命令| tee somefile 通常足以满足大多数情况。但是,在 2 种情况下您需要这些提示。

首先要知道的是 tee ,默认情况下,总是覆盖文件。如果你运行:

 ls | tee somefile 

然后运行:

 ls/tmp | tee somefile 

第二个命令会覆盖somefile的内容,你只会看到最后执行的命令的内容。要更改此行为,您可以创建链接 tee 的文本,而不是覆盖。为此,只需使用 -a 切换命令。

 ls | tee-a somefile 

第二件要知道的是,并不是所有的输出都是一样的。错误消息的处理方式不同,尽管它们出现在屏幕上,但它们不被视为标准输出,而是被视为标准错误,而不由 tee 处理。以下是 grep 的示例。

 grep-r L2TP/etc | tee somefile 

显示的结果如下图所示:

Linux中如何使用Tee命令的图1

通知Permission denied被写入stderr。唯一写入标准输出的是突出显示的文本。这就是为什么您会注意到 'somefile' 的内容如下图所示:

Linux中如何使用Tee命令的图2

在这种情况下,grep 用于搜索文本,并且在错误消息未重定向到文件时很有用。错误消息只会用不必要的信息填充文件。您只想查看找到的结果。但是当您需要错误消息时,请使用 2>&1 ,将 stderr 重定向到 stdout。

 grep-r L2TP/etc 2>&1 | tee somefile 

使用此命令,您会注意到 somefile 现在也包含错误消息。

希望本指南包含充分利用 tee 所需的一切。但是如果你在使用 tee 遇到一些困难的情况,请在下面的评论部分留下评论,供大家分享。

祝你使用成功的tee命令!

标签:

44 评论

author

urenrjrjkvnm

Vikiyij

2023-08-15

author

Novost

Margaretyso

2023-08-13

author

Novost

Robsox

2023-08-09

author

Novost

Margaretrfj

2023-08-08

author

Cinema

Viktorigsi

2023-08-05

author

Novost

Margaretrsg

2023-08-05

author

Novost

Robfot

2023-08-04

author

Ilushikxfq

2023-08-03

author

Cinema

Viktoriath

2023-08-03

author

Ilushikvyl

2023-08-01

author

Cinema

Viktoriqnc

2023-07-31

author

coin

Eldarseq

2023-07-31

author

Ilushikfzg

2023-07-28

author

coin

Eldarfoi

2023-07-28

author

coin

Daviddog

2023-07-28

author

coin

Eldarogq

2023-07-27

author

coin

Davidrkn

2023-07-27

author

Ilushiklbr

2023-07-26

author

urenrjrjkvnm

Vikivmk

2023-07-24

author

Novost

Vilianaqra

2023-07-23

author

urenrjrjkvnm

Irinzek

2023-07-22

author

Novost

Vilianayhf

2023-07-21

author

urenrjrjkvnm

Irinquu

2023-07-19

author

Novost

Vilianaiii

2023-07-17

author

Med

Evawgi

2023-07-16

author

Julikfm

2023-07-16

author

Life

Veronaeld

2023-07-14

author

Life

Veronarul

2023-07-14

author

Life

Veronawvm

2023-07-13

author

Julifsp

2023-07-12

author

urenrjrjkvnm

Leonigb

2023-07-12

author

Life

Veronavos

2023-07-10

author

urenrjrjkvnm

Veronalei

2023-07-10

author

urenrjrjkvnm

Leonzhk

2023-07-09

author

coin

Serzkoe

2023-07-09

author

urenrjrjkvnm

Veronaolm

2023-07-08

author

Novost

Sergpgp

2023-07-08

author

coin

Serzlng

2023-07-06

author

coin

Serzgxr

2023-07-04

author

urenrjrjkvnm

Svetlanakon

2023-07-04

author

Novyny

Svetlsch

2023-07-03

author

Ukraine

Igorpvx

2023-06-29

author

urenrjrjkvnm

Svetlanajyv

2023-06-29

author

Novyny

Svetlgwr

2023-06-17

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *