基于这个非常有用的答案启动时启动 KeePassXCkeepassxc
我几乎已经获得了登录时 解锁的预期结果。
但是,我(以及另一位回答评论同一问题的用户)还有一个问题,导致它无法使用。也就是说,根据链接的答案,我给出命令...
secret-tool lookup keepass <database_name> | keepassxc --pw-stdin <path-to-your-database>.kbdx
...这在keepassxc
启动时有效...但我在命令后的下一行收到此提示
Database password:
并且脚本挂起等待输入。
剧本的各个部分都有效……我可以发布
secret-tool lookup keepass <database_name>
我输入了正确的密码。
我可以发出
echo <password> | keepassxc --pw-stdin <path-to-your-database>.kbdx
并且它启动keepassxc
并登录...但我仍然收到提示并且脚本挂起。
如果我做
echo <password> | keepassxc --pw-stdin <path-to-your-database>.kbdx &
我仍然收到提示并挂起,但我可以点击enter
并且它可以工作。
所以看起来我需要以enter
某种方式提供?
- Ubuntu 版本:18.04
- keepassxc 版本:2.6.4
答案1
简短回答
您所看到的是正常行为。只有在 KeePassXC 终止后,终端才会被释放。
长答案
Database password:
你在终端上看到的提示是你给选项提供的选项的结果。--pw-stdin
由于keepassxc
有一个管道,标准输入不是你的键盘,而是前一个命令的输出echo
。
只要 KeepassXC 正在运行,您的提示就会被阻止。这是正常现象,任何其他程序都会发生这种情况。例如,尝试nautilus
从终端启动。
您可以通过将该进程移至后台来释放提示符:按Ctrl+ Z,然后键入bg
以继续在后台运行该进程。fg
将使其再次移至前台。这是“传统”终端做法。
当进程处于前台时,当您退出 KeePassXC 时,终端将被释放(无论是在图形用户界面中退出,还是在终端中按Ctrl+) 。C
当您没有从终端仿真器(例如从桌面启动器或快捷键绑定,甚至没有使用Alt+F2运行对话框)运行命令时,这种行为是不会被注意到的。