首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在shell脚本中记录带有时间戳的echo语句

如何在shell脚本中记录带有时间戳的echo语句
EN

Stack Overflow用户
提问于 2018-04-16 15:38:37
回答 3查看 10.1K关注 0票数 2

我目前正在使用下面的命令来记录stdout和stderr。我想记录echo语句和时间戳。

代码语言:javascript
运行
复制
exec 3>&1 1>>${LOG_FILE} 2>&1

我如何使用shell实现它?

EN

回答 3

Stack Overflow用户

发布于 2018-04-16 19:03:16

根据确切的预期行为,您可能需要ts实用程序。

代码语言:javascript
运行
复制
% echo message | ts
Apr 16 10:56:39 message

你也可以给echo起别名。

代码语言:javascript
运行
复制
% sh
$ alias echo='echo $(date)'
$ echo message
Mon Apr 16 10:57:55 UTC 2018 message

或者将其设置为shell函数。

代码语言:javascript
运行
复制
#!/bin/sh

echo() {
    command echo $(date) "$@"
}

echo message
票数 6
EN

Stack Overflow用户

发布于 2018-04-16 16:19:34

在这里,我使用了一个函数来简化这一行,但主要要查找的是进程替换,即>(log_it)语法。REPLYread使用的默认变量。

代码语言:javascript
运行
复制
logit() {
    while read
    do
        echo "$(date) $REPLY" >> ${LOG_FILE}
    done
}

LOG_FILE="./logfile"

exec 3>&1 1>> >(logit) 2>&1

echo "Hello world"
ls -l does_not_exist

该示例将放入logfile

代码语言:javascript
运行
复制
Mon 16 Apr 2018 09:18:33 BST Hello world
Mon 16 Apr 2018 09:18:33 BST ls: does_not_exist: No such file or directory

您可能希望更改裸$(date)以使用更好的格式。如果您运行的是bash4.2或更高版本,则可以使用printf,这将比使用echo更高效

代码语言:javascript
运行
复制
# -1 means "current time"
printf "%(%Y-%m-%d %T)T %s\n" -1 "$REPLY"  >> ${LOG_FILE}

提供:

代码语言:javascript
运行
复制
2018-04-16 09:26:50 Hello world
2018-04-16 09:26:50 ls: does_not_exist: No such file or directory
票数 3
EN

Stack Overflow用户

发布于 2020-09-22 21:26:26

聪明,谢谢@cdarke!我现在使用类似下面的东西,以便在脚本的主要部分有更细粒度的控制-它记录我想要的一切,并且我仍然看到stdout:

代码语言:javascript
运行
复制
logouts() {
    while read
    do
        printf "%(%T)T %s\n" -1 "stdout: $REPLY"  | tee -a ${LOG_FILE}
    done
}
logerrs() {
    while read
    do
        printf "%(%T)T %s\n" -1 "stderr: $REPLY"  >> ${LOG_FILE}
    done
}
LOG_FILE="./logfile"

main()
{
    echo "Hello world" 1>> >(logouts) 2>> >(logerrs)
    ls -l does_not_exist 1>> >(logouts) 2>> >(logerrs)
}
main "$@"

(向@cdarke道歉:我无法将此内容格式化为评论-如果您觉得这很有用,请向上投票@cdarke回答。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49851882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档