Io-Redirection

將 stdout / stderr 輸出重定向到帶有時間戳的日誌文件

  • April 18, 2020

我正在嘗試將 stdout 和 stderr 重定向到日誌文件。文件名應使用目前時間戳動態創建。

我可以使用以下命令創建文件名:

$ date +%Y-%m-%d_%H-%M-%S.txt
2018-04-10_16-55-55.txt

所以我想做這樣的事情:

mycommand &> (date +%Y-%m-%d_%H-%M-%S.txt)

但這不起作用(-bash: syntax error near unexpected token(’`)

是的,您需要使用命令替換:

mycommand &> "$(date +%Y-%m-%d_%H-%M-%S.txt)"

哪個是bash-speak for

mycommand  >"$(date +%Y-%m-%d_%H-%M-%S.txt)" 2>&1

這與

mycommand  >"$(date +%F_%H-%M-%S.txt)" 2>&1

%F與 相同%Y-%m-%d

命令替換 ,$(...)將被內部命令的輸出替換。

您使用的是子外殼,(...). 子外殼不能接受這樣的重定向。

試試這個:

today=`date +%Y-%m-%d_%H-%M-%S`; mycommand > ${today}.txt 2>&1

引用自:https://unix.stackexchange.com/questions/436784