将输出重定向到命令结果给出的文件名

时间:2013-04-01 05:03:58

标签: linux bash shell

假设我有一个文件格式,我希望将数据库备份保存到这样:

echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql"

现在如何将此结果指定为shell中输出的文件名?

mysqldump my_db > ....?

顺便说一下: shell将嵌套的echo命令的结果解释为可执行的命令/文件。所以看起来似乎是:

 mysqldump my_db > $(echo "something")

不起作用。相反,shell会查找名为something的文件并尝试执行它?

3 个答案:

答案 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