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