我不太明白为什么在使用 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
使用这种格式,文本排序可以很好地处理日期。