小编Jon*_*ker的帖子

如何以交互方式在 bash 中输入 n 个重复的数字

我想运行命令

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 示例是有效的。

command-line bash command-history line-editor

20
推荐指数
2
解决办法
1044
查看次数

将输入提供给 /dev/tty 以使 ssh 继续

我有一个正在运行的系统,它使用 scp(1) 将文件从一台主机复制到另一台主机。系统正在处理一系列文件,但卡在其中一个文件上:也就是说,它昨天启动了一个今天仍在运行的 scp 命令。

运行 strace 表明 scp 正在等待读取管道文件,该文件连接到其 ssh 子进程的 stdout;这个孩子正在等待阅读 fd 4,即/dev/tty.

一个 ssh 目标具有与known_hosts源主机上的主机密钥冲突。我在长期运行的 scp 启动时摆弄了它;现在known_hosts一切都设置好了,我可以从源到所有目的地 ssh,而不会被提示输入任何内容。

我的假设是,ssh遇到了一个小的计时窗口,并向用户提供了一个未知的主机密钥,并且正在等待确认 ( "yes\n") 继续进行。

有什么方法可以让我按照用户输入readssh方式完成呼叫yes(如果是,如何输入)?

当(在另一台机器上)我echo foobar > /dev/tty在 xterm 中时,它会foobar在我的控制台上写入。不出所料,如果 Iecho foobar > /proc/<pid>/fd/4/dev/tty. 那么如何将输入输入到 ssh 中呢?


如果有人知道如何测试我的假设ssh和/或使其以不同的方式进行,我也很高兴听到这个消息。

ssh terminal tty files

5
推荐指数
1
解决办法
994
查看次数

标签 统计

bash ×1

command-history ×1

command-line ×1

files ×1

line-editor ×1

ssh ×1

terminal ×1

tty ×1