Linux 重定向器不记录错误。Linux 是否有与 Windows 的 2>&1 等效的功能?

Linux 重定向器不记录错误。Linux 是否有与 Windows 的 2>&1 等效的功能?

我使用重定向器运行以下文件> log.log,但它没有捕获错误。

#!/bin/bash

echo ************************BEGIN LOG******************************
date +"%m/%d/%Y %H:%M:%S $HOSTNAME"
cp -f /scripts/original/clamscans.log /scripts
find /public/public/clamscans/. -exec grep -n FOUND /dev/null {} \;>>clamscans.log
mail [email protected] < clamscans.log
tar cvf dailyresults.tar /public/public/clamscans/*.txt
gzip -f dailyresults.tar
mv -f /public/public/clamscans/*.txt /scripts/lastnite
echo end log entry

当我从终端窗口运行文件时会出现以下错误,但它们并未写入log.log

tar: /public/public/clamscans/*.txt: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
mv: cannot stat `/public/public/clamscans/*.txt': No such file or directory

我做错了什么?我知道在 Windows 中可以添加来2>&1捕获错误数据。Linux 有这样的功能吗?

答案1

文件描述符 1 是 stdout,2 是 stderr。这适用于 Linux 和 Windows。使用 ">logfile",您将 stdout 重定向到文件“logfile”,但您实际上想要的是重定向 stderr。在 Windows 和 Linux 上,可以使用“2>filename”或“2>&1”(与 ">logfile 结合使用)来完成此操作,但请注意顺序可能很重要,因此应该是“command >logfile 2>&1”,而不是相反。

答案2

您可以将标准错误重定向到这样的文件:

mycommand 2> error.log

您可以使用以下语法来重定向标准输出和标准错误保存到文件:

mycommand &> file

或者

mycommand > file-name 2>&1

相关内容