在BASH中使用mv向文件名添加时间戳
好吧,我是linux新手,我在使用简单的bash脚本时遇到了问题。
我有一个程序可以在运行时添加到日志文件中。随着时间的流逝,日志文件变得越来越大。我想创建一个启动脚本,该脚本将在每次运行之前重命名并移动日志文件,从而为程序的每次运行有效地创建单独的日志文件。到目前为止,这是我得到的:
糊盒
DATE=$(date +"%Y%m%d%H%M")mv server.log logs/$DATE.log
echo program
运行时,我看到以下内容:
: command not foundprogram
当我CD到logs目录并运行dir时,我看到以下内容:
201111211437\r.log\r
这是怎么回事?我假设我缺少一些语法问题,但似乎无法弄清楚。
更新:由于下面的Shellter评论,我发现问题是由于我正在Windows的Notepad
++中编辑.sh文件,然后通过ftp发送到服务器,然后通过ssh运行文件。在文件上运行dos2unix后,它可以工作。
新问题:如何首先正确地保存文件,以避免每次重新发送文件时都必须执行此修复程序?
回答:
您从脚本中发布的几行对我来说还不错。它可能更深一些。
您需要找到哪条线给您这个错误。添加set -xv
到脚本的顶部。这将打印 出行 号和正在执行到 STDERR
的命令。这将帮助您确定在脚本中哪个位置出现此特定错误。
顺便说一句,您的脚本顶部有一个shebang吗?当我看到这样的东西时,通常我希望它与Shebang有关。例如,如果您#!
/bin/bash位于顶部,但bash解释器位于中/usr/bin/bash
,则会看到此错误。
编辑
新问题:如何首先正确地保存文件,以避免每次重新发送文件时都必须执行此修复程序?
两种方式:
- 编辑文件时,选择“ _编辑”- >“ EOL转换”->“ Unix格式”_菜单项。一旦具有正确的行尾,Notepad ++将保留它们。
- 要确保所有新文件的行尾都正确,请转到“ 设置”- >“首选项”_菜单项,然后拉起“ _首选项” 对话框。选择“ 新文档/默认目录” 选项卡。在“ 新建文档 和 格式”下 ,选择“ Unix” 单选按钮。单击 关闭 按钮。
以上是 在BASH中使用mv向文件名添加时间戳 的全部内容, 来源链接: utcz.com/qa/432634.html