Linux 命令输出重定向到文件和终端

Linux 命令输出重定向到文件和终端,linux,bash,redirect,Linux,Bash,Redirect,我还试图将命令输出抛出到file plus控制台。这是因为我想在文件中保存输出记录。我正在执行以下操作,并将其附加到文件中,但不在终端上打印ls输出 $ls 2>&1 > /tmp/ls.txt 是的,如果重定向输出,它将不会出现在控制台上。使用tee ls 2>&1 | tee /tmp/ls.txt 如果有人需要追加输出而不是重写,可以使用“tee”命令的“-a”或“-append”选项: ls 2>&1 | tee -a /tmp/ls.

我还试图将命令输出抛出到file plus控制台。这是因为我想在文件中保存输出记录。我正在执行以下操作,并将其附加到文件中,但不在终端上打印
ls
输出

$ls 2>&1 > /tmp/ls.txt

是的,如果重定向输出,它将不会出现在控制台上。使用
tee

ls 2>&1 | tee /tmp/ls.txt

如果有人需要追加输出而不是重写,可以使用“tee”命令的“-a”或“-append”选项:

ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt

值得一提的是,2>&1意味着标准错误也将与标准输出一起重定向。所以

someCommand | tee someFile
只提供文件中的标准输出,但不提供标准错误:标准错误将仅显示在控制台中。要获取文件中的标准错误,也可以使用

someCommand 2>&1 | tee someFile
(来源:)。最后,上述两个命令都将截断文件并开始清除。如果您使用一系列命令,您可能希望一个接一个地获取所有命令的输出和错误。在这种情况下,您可以使用-a标志来“tee”命令:


它是否同时写入stderr和stdout??在这种情况下,错误被合并到输出中(
2>&1
),因此下一个使用管道的进程将把它们都视为常规输入(简而言之:是)。不管我找到它——append,-aHow,在上面的命令中给出ls.txt文件的大小,这样它就不会超过给定的大小。一旦超过最大大小,如何在同一目录中创建新文件(例如:ls1.txt、ls2.txt…)请注意,您将失去
ls
的退出状态。如果要保留
ls
的退出状态,或者更准确地说,要确定管道中是否存在故障,尽管
tee
是管道中的最后一个(很可能是成功的)命令,您需要使用
set-o pipefail
someCommand 2>&1 | tee -a someFile