小编YMG*_*sis的帖子

date 命令在 bash 别名中没有正确解析

我试图建立对我来说,只需要输入的方式newjournal,并任命了新的日记帐分录year-month-date-time.txt中创建year的子目录~/documents/journals

我已使用以下命令将其设置为别名:

alias newjournal='nano /home/username/documents/journals/'$(date +%Y)'/'$(date +%F-%k%M).txt''
Run Code Online (Sandbox Code Playgroud)

所以 year 子文件夹可以正确解析,而 date 命令的前半部分似乎也是如此。尝试用 附加别名sudo,没有帮助。

问题:出于某种原因,当我执行此命令时,时间值 ( %k) 解析为几分钟前...或者也许是 nano 上次运行此文件名时,也许它被称为旧缓冲区?

当我注销时,它会生成正确的文件,然后我保存,等待几分钟再试一次,它会编辑旧文件而不是创建新文件。即使我删除了旧文件,它也会使用旧文件名(时间不正确)创建一个新文件。

这是我要解释的内容的屏幕截图。在这里,我创建了一个新日志,在执行命令后的一两秒内保存在 nano 中,打印正确的日期/时间,列出创建的文件。请注意不正确的文件名时间(1249,与 13:11 并列):

截屏

无论如何,它可能很简单,但是我在别名中尝试了不同的方法,例如在整个事物周围加上双引号并正确转义,单引号,转义和空格等。

感谢阅读/帮助。Ubuntu 16.04 服务器。

编辑:这是最终有效的别名:

alias newjournal='nano /home/user/journals/"$(date +%Y)"/"$(date +%F-%H%M).txt"'
Run Code Online (Sandbox Code Playgroud)

需要在整个单引号别名中对日期命令加双引号。

bash nano alias date

3
推荐指数
1
解决办法
2222
查看次数

标签 统计

alias ×1

bash ×1

date ×1

nano ×1