我想用 截屏import
,并将其保存到名称为当前时间的文件中。
这是我尝试过的:
sunqingyao:~$ date '+screenshot-%y%m%d-%H%M%S.png'
screenshot-170716-173336.png
# OK
sunqingyao:~$ import screenshot-170716-173336.png
sunqingyao:~$ ls -l screenshot-170716-173336.png
-rw-rw-r-- 1 sunqingyao sunqingyao 250556 Jul 16 17:35 screenshot-170716-173336.png
# OK
sunqingyao:~$ date '+screenshot-%y%m%d-%H%M%S.png' | import
import: missing an image filename `import' @ error/import.c/ImportImageCommand/1293.
# Not OK
出于某种原因,我希望这个命令是一行命令。
背景资料:
实际上我正在尝试绑定一个按键来使用 i3 进行屏幕截图。这是我的相关部分~/.config/i3/config
:
# Take a screenshot upon pressing $mod+x (select an area)
# https://i3wm.org/docs/userguide.html#keybindings
bindsym --release $mod+x exec --no-startup-id date '+screenshot-%y%m%d-%H%M%S.png' | import
似乎我只能将一个键绑定到只能容纳一行的命令,这就是为什么需要单行的原因。
答案1
您始终可以按照其他答案的建议使用命令替换,或者使用xargs
管道给出的内容:
$ date '+screenshot-%y%m%d-%H%M%S.png' | xargs -I {} import {}
$ ls screenshot-*
screenshot-170716-042853.png
答案2
因为import
将采用作为参数的名称.png
来构造它并调用import
.认为首先将$()
替换,然后将作为参数传递import
import $(date +'screenshot-%Y%m%d-%H%M%S.png')
例如使用set -xv
&echo
启用
$ echo $(date +'screenshot-%Y%m%d-%H%M%S.png')
echo $(date +'screenshot-%Y%m%d-%H%M%S.png')
++ date +screenshot-%Y%m%d-%H%M%S.png
+ echo screenshot-20170716-131720.png
screenshot-20170716-131720.png