假设我有一个文件格式,我希望将数据库备份保存到这样:
echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql"
现在如何将此结果指定为shell中输出的文件名?
mysqldump my_db > ....?
顺便说一下: shell将嵌套的echo命令的结果解释为可执行的命令/文件。所以看起来似乎是:
mysqldump my_db > $(echo "something")
不起作用。相反,shell会查找名为something
的文件并尝试执行它?
答案 0 :(得分:4)
无需使用嵌套回声。你可以避免它:
mysqldump my_db > ~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql
答案 1 :(得分:-1)
$(echo"某事")不是问题,而〜是。 如果您使用完整路径,它可以正常工作:
echo 'hello world' > $(echo "/home/root/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql")
如果您对如何使用〜:
感兴趣eval "echo 'hello world' > $(echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql")"
答案 2 :(得分:-1)
我认为回答这个问题的可能性更大: How to name a file with current time? [重复]
-
您可以使用其他实用程序在bash中创建文件
使用触摸
root@ubuntu:~/T/e/s/t# touch $(date +"%T") //you can format time as per your need
使用编辑器
root@ubuntu:~/T/e/s/t# vi $(date +"%T")
使用重定向
root@ubuntu:~/T/e/s/t# echo "Input for file" > $(date +"%T")
时间格式
您可以使用自己的时间格式代替%T
请参阅:http://man7.org/linux/man-pages/man1/time.1.html