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
$()
引用符をエスケープする必要がないように、新しい引用文脈を作成します。これが$()
好ましい理由の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
テキストの並べ替えは、この形式を使用する日付に適しています。