1

[Wed Aug 05 20:49:43 deppfx@localhost:~] $xdotool type password

password[Wed Aug 05 20:50:51 deppfx@localhost:~] $password

我怎样才能避免这种情况?有人可以解释一下这种行为吗?

4

3 回答 3

0

它实际上并没有输入两次。它在控制终端的同时进行输入,然后 shell 提示符返回并重新格式化在终端输入的内容。尝试输入不同的 xterm(例如xdotool selectwindow type password),您应该只会看到一个副本。

于 2015-08-06T04:26:19.467 回答
0

@Wnoise 是对的!

但如果你坚持你可以这样做:

stty -echo && xdotool type password && stty echo
于 2016-03-13T21:29:48.363 回答
0

这个线程“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

这不会删除前一行,但至少可以防止您的提示增长太长时间被重复的命令占用。

于 2019-07-17T20:15:33.067 回答