amorfis Asked: 2009-08-14 14:35:00 +0800 CST2009-08-14 14:35:00 +0800 CST 2009-08-14 14:35:00 +0800 CST Bash - 如何将两个命令输出到文件? 772 我想将两个命令输出到一个文件。我希望每 5 分钟记录一次准确的时间(日期)和温度(传感器)。我知道如何将一个命令输出到文件,但是两个?如何编写这样的脚本? bash 7 个回答 Voted Best Answer retracile 2009-08-14T14:44:14+08:002009-08-14T14:44:14+08:00 像这样的东西?(在循环、cron 或您当前使用的任何内容中。) (date; my_sensor_command) >> log_file hlovdal 2009-08-14T14:44:47+08:002009-08-14T14:44:47+08:00 将所有命令分组在括号中,因为这将在一个子 shell 中执行它们,您可以轻松地从以下位置重定向输出: while sleep 5m do (date +%Y-%m-%d_%H:%M | tr -d '\012'; echo -n ' '; \ /etc/rc.d/init.d/lm_sensors status | grep '^CPU Temp') >> /your/log/file done Clinton Blackmore 2009-08-14T14:43:03+08:002009-08-14T14:43:03+08:00 如果我正确理解您的问题-您想将两个值输出到同一个文件-那么这可能就是您要查找的内容: TIME="`date`" SENSOR="56" echo "$TIME $SENSOR" >> /path/to/a/file Alex 2009-08-14T16:01:38+08:002009-08-14T16:01:38+08:00 也许我误解了这个问题,但看起来所有答案都附加到一个文件中。我读到您的问题是您希望在 2 个文件中获得相同的输出。如果那是您正在寻找的东西,则 tee 是一种实现方式: echo "要输出的东西"|tee -a file1 file2 Ali Mezgani 2009-08-14T18:15:51+08:002009-08-14T18:15:51+08:00 参考 hlovdal 帖子,您可以像这样设置 cron: $ crontab -e */5 * * * * (echo date +%Y%m%d%H%M%S | tr -d '\012'; echo -n ' '; sensors | grep "CPU Temp:" | awk '{ print $3 }' )>> /var/log/sensors.log Blockchain Office 2022-08-27T04:32:44+08:002022-08-27T04:32:44+08:00 我知道这是旧帖子,但我需要将 10 多个命令的结果输出到一个文件中,以使用该文件并使用@retracile回答我做到了这一点(简单易行): #!/bin/bash ( command1 command2 command3 MORE COMMANDS ) > OUTPUT_FILE cat OUTPUT_FILE # WORK WITH OUTPUT_FILE ... Stygge 2022-08-28T22:20:28+08:002022-08-28T22:20:28+08:00 假设您希望日期和值在同一行: sepChar='_' #Separator character, for later processing echo "$(date '+%Y%m%d %H%M%S')$sepChar$(mySensorCmd)" >> outputFile.log
像这样的东西?(在循环、cron 或您当前使用的任何内容中。)
将所有命令分组在括号中,因为这将在一个子 shell 中执行它们,您可以轻松地从以下位置重定向输出:
如果我正确理解您的问题-您想将两个值输出到同一个文件-那么这可能就是您要查找的内容:
也许我误解了这个问题,但看起来所有答案都附加到一个文件中。我读到您的问题是您希望在 2 个文件中获得相同的输出。如果那是您正在寻找的东西,则 tee 是一种实现方式:
参考 hlovdal 帖子,您可以像这样设置 cron:
我知道这是旧帖子,但我需要将 10 多个命令的结果输出到一个文件中,以使用该文件并使用@retracile回答我做到了这一点(简单易行):
假设您希望日期和值在同一行: