使用 Linux 终端让我烦恼的一件事是,当我必须输入一个不可见的密码时,例如运行ssh 时。有时我打错了一个或多个字母,然后我不得不按几次退格键以确保我擦除了所有内容以重新开始。
我知道这没什么大不了的,但是因为前几天我发现按 CTRL+L “清除”了终端,我想知道是否有办法清除/擦除不可见的密码而不依赖退格键或按回车键再试一次。
我将 Raspberry Pi 与 Chromium(信息亭模式)结合使用来显示一些统计信息。Pi 没有连接的键盘,所以我搜索了一种解决方案,将按键从终端发送到 Chromium (tab) 进程。正常输入确实有效,但如何F5
通过此解决方案发送类似(特殊键:浏览器刷新)的内容?
# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0
Run Code Online (Sandbox Code Playgroud) 我需要记录每个击键并存储在用户目录中的文件中~,使用我的帐户时,我不是 sudoer 并且我无法以任何方式安装程序(如logKeys)。我怎么能用终端这样做?
注意:这个问题不是另一个提及问题的重复;在这个问题中,我询问了每次击键,而在另一个问题中,询问者询问了终端会话中的击键。
我终于设法归结了一个我已经挣扎了几个星期的问题。我使用带有“授权密钥”的 SSH 远程运行命令。一切都很好,除非我在 while 循环中进行。循环在使用 ssh 命令完成任何迭代后终止。
很长一段时间我都认为这是某种 ksh 的怪异行为,但我现在发现 bash 的行为实际上是相同的。
一个重现问题的小示例程序。这是从一个更大的实现中提炼出来的,它拍摄快照并在集群中的节点之间复制它们。
#!/bin/bash
set -x
IDTAG=".*zone"
MARKER="mark-$(date +%Y.%m.%d.%H.%M.%S)"
REMOTE_HOST=sol10-target
ZFSPARENT=rpool
ssh $REMOTE_HOST zfs list -t filesystem -rHo name,mounted $ZFSPARENT | grep "/$IDTAG " > /tmp/actionlist
#for RMT_FILESYSTEM in $(cat /tmp/actionlist)
cat /tmp/actionlist | while read RMT_FILESYSTEM ISMOUNTED
do
echo ${RMT_FILESYSTEM}@${MARKER}
[ "$ISMOUNTED" = "yes" ] && ssh $REMOTE_HOST zfs snapshot -r ${RMT_FILESYSTEM}@${MARKER}
echo Remote Command Return Code: $?
done
Run Code Online (Sandbox Code Playgroud)
(请注意,根据 zfs list "-H" 选项的行为定义,grep 搜索表达式中有一个 TAB 字符。)
我的示例有一些 ZFS …
如何以编程方式暂时“冻结”键盘和鼠标,以便没有人干扰系统?
有几种可能是有用的。例如,我有一台笔记本电脑,我想确保在我离开时没有人使用它,即使有人知道密码或可以猜到它(例如妻子或孩子),以及压抑小偷的胃口(因为它似乎不- 运作)。或者我正在远程执行某些操作,因此我想确保计算机上的用户不会打扰。
我有新的耳机,准确地说是 AKG K318,他们有一个这样的遥控器。在智能手机(例如 Android 手机或 iPhone)上,按钮映射到音乐播放器上的操作,例如播放/暂停、音量增大/减小、跳过、上一个,您明白了。
我想知道如何在我的计算机上复制相同的功能。
我想这个过程包括让 X 识别输入,然后以某种方式映射这些输入以供应用程序使用。
“设备”(将通过声音插孔连接)未在 中列出xinput
,按钮也不会触发常规键盘事件。
如何将插入输出声音插孔的耳机用作 X 键输入?
我正在尝试将击键注入输入守护程序,以模拟从 Bash 脚本输入。这可能吗,如果可以,我该如何实现?
这主要是出于好奇,我试图了解事件处理是如何在低级别上工作的,所以请不要将我引用到可以为我完成的软件。
例如,如果我想用 C/C++ 编写一个对鼠标点击做出反应的程序,我假设我需要使用系统调用将某些函数挂接到内核,或者您可能只需要不断检查鼠标的状态,我不知道。
我认为这是可能的,因为在 C/C++ 中几乎所有事情都是可能的,因为级别如此之低,我最感兴趣的是它的工作原理,尽管我可能永远不必自己实现它。
问题是它在 linux 中是如何工作的,是否有某些系统调用、c 库等?
我只是偶然发现CTRL+ 4 关闭stdin
从命令行读取输入的程序。
这是我 在程序阅读中键入CTRL+4或CTRL+时的样子/stdin
$ cat
wefwef
wefwef
^\Quit
$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
^\Quit
$
Run Code Online (Sandbox Code Playgroud)
我得到^\Quit
显示,然后程序关闭。这与使用^C
or相比有什么区别^D
?有什么作用^\Quit
?
编辑:发现CTRL+\做了同样的事情。
我系统上的所有东西(需要它)都支持 UTF-8 就好了。
当您想要输出时,这一切都很好...但是如果您想要轻松输入怎么办?
目前,我可以轻松输入的唯一非 ASCII 字符是像 é 这样的字符,使用AtlGr.
但是对于像 ? ² ? ? ? 目前我必须:
我正在寻找的是一个可以做这样的事情的程序:
简而言之:是否有支持非 ASCII UTF-8 的虚拟键盘程序?
实际上......我已经对任何改进我的方法感到满意。
编辑: 对于其他人在这里结束并且不想自己阅读所有答案(或添加已经给出的答案):
这些是已经提到的选项+答案链接+专业人士和反对者。
随意在下面添加额外的解决方案(在提供它们作为详细答案之后):
ibus
(通常与CtrlShiftE)?无法让它在 Cinnamon 上工作onboard
? pro:似乎可以做我需要的一切 + 支持片段,con:只有(默认情况下)包含非拉丁布局用于数学,其他具有流行 UTF-8 字符的布局必须手动创建gucharmap
? 亲们:字符的很多,易于搜索CON:不容易前台/后台之间跳转(大概可以用肉桂本身就是一个解决办法来处理)kcharselect
? 相同的利弊gucharmap