![grim 文件名中出现意外的引号](https://linux22.com/image/176013/grim%20%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%84%8F%E5%A4%96%E7%9A%84%E5%BC%95%E5%8F%B7.png)
我不太明白为什么在使用 grim/slurp 时尝试生成屏幕截图文件名时会出现一些奇怪的行为。
如果我这样做:
grim -g "$(slurp)" "$HOME/screenshot-$(date).png"
我得到:
screenshot-Sat 27 Jun 2020 06:02:36 PM EDT
除了时间没有在我的文件夹中排序之外,这都可以。所以,我尝试了这个:
grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"
但在那种情况下我得到这个:
screenshot-"200627_19:35:39.png"
有人可以解释为什么整个日期字符串周围出现引号(表达式中没有引号),以及如何消除它们?
答案1
$()
创建一个新的引用上下文,因此您不需要转义其中的引号。这就是为什么$()
首选 的原因之一``
,其中混合嵌套和引号会导致一场噩梦。
用于比较:
$ echo "screenshot-$(date +\"%y%m%d_%T\").png"
screenshot-"200701_14:56:19".png
$ echo "screenshot-`date +\"%y%m%d_%T\"`.png"
screenshot-200701_14:56:27.png
您可以省略反斜杠并仅使用"screenshot-$(date +"%y%m%d_%T").png"
.或者,由于%
其他的并不特殊,只需将内部引号完全省略即可:
$ echo "screenshot-$(date +%y%m%d_%T).png"
screenshot-200701_14:57:23.png
答案2
只需删除反斜杠即可。不是这个:
grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"
但是这个:
grim -g "$(slurp)" "$HOME/screenshot-$(date +"%y%m%d_%T").png"
但关于你的评论:我的文件夹中的时间没有排序
我建议您使用:FullYear - Moth - Day 或%Y%m%d_%T
或只是%F_%T
使用这种格式,文本排序可以很好地处理日期。