我想运行命令
foo --bar=baz <16 zeroes>
Run Code Online (Sandbox Code Playgroud)
如何有效地输入 16 个零*?如果我持有Alt并按下1 6 0它会重复接下来的事情160倍,这是不是我想要的。在 emacs 中,我可以使用Alt-[number]或Ctrl-u 1 6 Ctrl-u 0,但在 bash 中会Ctrl-u杀死当前正在输入的行,而下一个零只是在该行中添加一个 0。
如果我做
foo --bar=baz $(printf '0%.0s' {1..16})
Run Code Online (Sandbox Code Playgroud)
然后history
完全显示上述内容,而不是foo --bar=baz 0000000000000000
; 即 bash 的行为不像我想要的那样。(编辑:重点是,我想在不使用$(...)
命令替换的情况下输入一些零)
(*) 我猜“高效”的技术定义是“使用 O(log n) 次击键”,最好是击键次数等于 16 中的位数(对于所有 16 值)加上一个常数;根据这个定义,emacs 示例是有效的。
我有一个正在运行的系统,它使用 scp(1) 将文件从一台主机复制到另一台主机。系统正在处理一系列文件,但卡在其中一个文件上:也就是说,它昨天启动了一个今天仍在运行的 scp 命令。
运行 strace 表明 scp 正在等待读取管道文件,该文件连接到其 ssh 子进程的 stdout;这个孩子正在等待阅读 fd 4,即/dev/tty
.
一个 ssh 目标具有与known_hosts
源主机上的主机密钥冲突。我在长期运行的 scp 启动时摆弄了它;现在known_hosts
一切都设置好了,我可以从源到所有目的地 ssh,而不会被提示输入任何内容。
我的假设是,ssh
遇到了一个小的计时窗口,并向用户提供了一个未知的主机密钥,并且正在等待确认 ( "yes\n"
) 继续进行。
有什么方法可以让我按照用户输入read
的ssh
方式完成呼叫yes
(如果是,如何输入)?
当(在另一台机器上)我echo foobar > /dev/tty
在 xterm 中时,它会foobar
在我的控制台上写入。不出所料,如果 Iecho foobar > /proc/<pid>/fd/4
是/dev/tty
. 那么如何将输入输入到 ssh 中呢?
如果有人知道如何测试我的假设ssh
和/或使其以不同的方式进行,我也很高兴听到这个消息。