【问题标题】:How to specify a file within script that has just been timestamped?如何在脚本中指定刚刚加时间戳的文件?
【发布时间】:2019-01-30 05:29:28
【问题描述】:

我用谷歌搜索和搜索,我在任何地方都找不到任何关于我的问题的帮助或相关帖子......

如何指定一个刚刚在 bash 脚本中添加时间戳的文件?非常感谢您的宝贵时间。

基本示例:

  #!/bin/sh
  touch $(date +'%Y-%m-%d_%H-%M-%S').log
  program --start --output /home/user/.logs/the_above_timestamped_file.log

具体例子:

下面的代码是一个不工作的bash脚本,程序写入时间戳日志文件没有成功,或者程序找不到时间戳日志文件?或者它可能不知道要写入哪个文件,因为时间戳文件是日志目录中的许多文件之一。希望我知道如何解决这个问题...

  #!/bin/sh
  # start the logkeys service
  # create a timestamped file
  # append key logging to that file

  LOG_FILE_NAME=$(date +'%Y-%m-%d_%H-%M-%S')_key.log
  touch "/mnt/WDRED6TBHDD/text/keylog/$LOG_FILE_NAME"
  sudo logkeys --start --output "/mnt/WDRED6TBHDD/text/keylog/$LOG_FILE_NAME"

【问题讨论】:

    标签: linux bash scripting timestamp command


    【解决方案1】:

    使用日期字符串创建一个变量并重复使用它。

    #!/bin/sh
    DATE_STR=$(date +'%Y-%m-%d_%H-%M-%S')
    touch "$DATE_STR.log"
    program --start --output "/home/user/.logs/$DATE_STR.log"
    

    或整个文件名。

    #!/bin/sh
    LOG_FILE_NAME=$(date +'%Y-%m-%d_%H-%M-%S').log
    touch "$LOG_FILE_NAME"
    program --start --output "/home/user/.logs/$LOG_FILE_NAME"
    

    【讨论】:

    • 绝对引用变量名。感谢@glennjackman 的提醒,我在输入答案时有点仓促。
    • 嘿,我尝试了两种 bash 代码方法,但都不适合我。我正在运行 Linux Manjaro 17.1.7。我最初试图运行“logkeys”程序,因此您可以将“program”替换为“logkeys”来测试是否需要。任何想法为什么这不起作用?它所做的只是在我的主目录中创建带时间戳的文件,logkeys 没有写入任何内容。但是,如果你“触摸 test.log,然后”logkeys --start --output test.log”,效果很好。不知道为什么这不起作用?我已经用我当前的代码更新了我的帖子,但似乎没有工作。非常感谢您的宝贵时间。
    • 我没有看到任何明显的东西,请尝试将 set -x 添加到脚本中以跟踪它正在运行的命令,以确认它们看起来正确。
    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2012-06-25
    • 2018-06-05
    • 1970-01-01
    • 2015-08-21
    • 2014-05-14
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多