1行のコマンド出力を別のコマンドに渡します。

1行のコマンド出力を別のコマンドに渡します。

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

何らかの理由で、私はこのコマンドを1行のコマンドにしたいと思います。

背景情報:

実際、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行にしか入力できないコマンドにのみキーをバインドできるようです。これが一行が必要な理由です。

ベストアンサー1

xargs他の回答で示唆されているように、常にコマンド置換を使用するか、パイピングとして提供されるものを使用できます。

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

$ ls screenshot-*                                                                                                            
screenshot-170716-042853.png

おすすめ記事