我想在 fzf 中选择一些东西,然后将该选择输入为我可以编辑并最终调用的命令。解决方案可能如下所示:
seq 5 | sed "s/^/echo Testing /" | fzf | xargs -I{} xdotool type "{}"
但终端上的输出看起来像:
[me@~~~_09:40:22 ~]$ seq 5 | sed "s/^/echo Testing /" | fzf | xargs -I{} xdotool type "{}"
echo Testing 3[me@~~~_09:40:26 ~]$ echo Testing 3
它可以工作,但可能会打印两次长命令。它更像是 xdotool 的“问题”。它在调用命令完成之前键入文本,这就是为什么首先编写它,然后命令完成并且所写的内容在提示符中“重复”。
我想知道是否有可能启动这个演示命令来获得:
[me@~~~_09:40:22 ~]$ seq 5 | sed "s/^/echo Testing /" | fzf | xargs -I{} xdotool type "{}"
[me@~~~_09:40:26 ~]$ echo Testing 3
我试图玩延迟,嵌套命令,但我无法弄清楚。有人可以帮忙吗?
每当在终端中输入任何内容时,它都会被回显。这就是所看到的。当 bash 重新启动时,它将终端设置为 raw 以处理所有特殊字符和编辑等,因此也会关闭 echo。然后它会读取
xdotool
输入的内容,并尽职尽责地回应它。您可以通过在运行之前关闭 echo 来解决此问题
xdotool
,例如:xdotool
请注意,您也可以使用 ioctl代替ioctlTIOCSTI
。有几个 C 源代码和 perl 脚本可以做到这一点。这是一个stty
包含的:如果你把它放在一个文件中
pushtype
,你可以避免xargs
and just...fzf|pushtype
。