[Wed Aug 05 20:49:43 deppfx@localhost:~] $xdotool type password
password[Wed Aug 05 20:50:51 deppfx@localhost:~] $password
我怎样才能避免这种情况?有人可以解释一下这种行为吗?
[Wed Aug 05 20:49:43 deppfx@localhost:~] $xdotool type password
password[Wed Aug 05 20:50:51 deppfx@localhost:~] $password
我怎样才能避免这种情况?有人可以解释一下这种行为吗?
它实际上并没有输入两次。它在控制终端的同时进行输入,然后 shell 提示符返回并重新格式化在终端输入的内容。尝试输入不同的 xterm(例如xdotool selectwindow type password
),您应该只会看到一个副本。
@Wnoise 是对的!
但如果你坚持你可以这样做:
stty -echo && xdotool type password && stty echo
这个线程“xdotool type duplicates”解释了原因:
那不是两次。要解释为什么会出现这种情况,需要对 shell 和终端的行为方式进行一些详细说明。
您可以通过运行以下命令,通过正常的键盘输入自己观察到这一点:
% 睡眠 5
在 sleep 运行时,在同一终端中键入“hello world”。当 sleep 退出并返回到 shell 提示符时,您将看到如下内容:
夜幕降临(~) % 睡眠 5
hello worldnightfall(~) % hello world
发生的事情是您在 sleep 运行(或 xdotool)时输入终端, sleep 不会从 stdin 读取,因此当 shell 再次获得控制权时,它会读取您的击键(在输入缓冲区中)并将它们打印在屏幕上显示你在上面看到的。
我目前的解决方法是添加一个额外的echo
,例如:
xdotool type password; echo
哪个输出:
[Wed Aug 05 20:49:43 deppfx@localhost:~]$ xdotool type password; echo
password
[Wed Aug 05 20:49:43 deppfx@localhost:~]$ password
这不会删除前一行,但至少可以防止您的提示增长太长时间被重复的命令占用。