在单行代码中间通过管道传送到另一个程序

在单行代码中间通过管道传送到另一个程序

我正在尝试创建一个简单的 bash 一行脚本,该脚本允许我选择屏幕上可见的特定条形码,并将其作为剪贴板上的文本提供。为此,我编写了一个 bash 脚本,旨在将屏幕的一部分捕获为gnome-screenshotPNG 文件,检查该文件zbarimg并使其输出的任何内容都可以粘贴xclip

这是我写的:

tfile=$(mktemp -u -p ~).png &&  gnome-screenshot -a -f $tfile &&  zbarimg -q --raw $tfile | xclip; rm $tfile

就在我运行这个脚本之后,它确实要求我捕获屏幕的一部分(正是gnome-screenshot应该做的),屏幕截图文件被创建,但之后似乎xclip永远运行并等待输入,就好像zbarimg没有一样输出任何东西。

有人有解决这个问题的建议吗?

答案1

对于鼠标中键单击:

tfile=$(mktemp -u -p ~).png &&  gnome-screenshot -a -f $tfile ; cat <(zbarimg -q --raw $tfile) | xclip ; rm $tfile

对于鼠标右键单击:

tfile=$(mktemp -u -p ~).png &&  gnome-screenshot -a -f $tfile ; cat <(zbarimg -q --raw $tfile) | xclip -selection clipboard ; rm $tfile

相关内容