Passando a saída de um comando para outro em uma linha [duplicado]

1

Eu quero fazer uma captura de tela com import e salvá-la em um arquivo cujo nome é hora atual.

Aqui está o que eu tentei:

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

Por alguma razão, eu quero que este comando seja um one-liner.

Informações de plano de fundo:

Na verdade, estou tentando vincular uma chave a captura de tela com o i3. Aqui está a parte relevante do meu ~/.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

Parece que eu só posso vincular uma chave a um comando que pode caber em apenas uma linha, e é por isso que uma linha é necessária.

    
por nalzok 16.07.2017 / 11:51

2 respostas

1

Você sempre pode usar substituição de comando como a outra resposta sugere, ou use xargs para usar o que o pipe fornece:

$ date '+screenshot-%y%m%d-%H%M%S.png' | xargs -I {} import  {}                                                              

$ ls screenshot-*                                                                                                            
screenshot-170716-042853.png
    
por 16.07.2017 / 12:30
1

desde que import tenha o nome do argumento .png as construa e chame o import . Pense que primeiro o $() será substituto e então será passado como argumento em import

import $(date +'screenshot-%Y%m%d-%H%M%S.png')

por exemplo, com set -xv & echo enable

$ 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
    
por 16.07.2017 / 12:18