AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 451776
Accepted
mjktfw
mjktfw
Asked: 2018-06-26 06:23:25 +0800 CST2018-06-26 06:23:25 +0800 CST 2018-06-26 06:23:25 +0800 CST

我粘贴的输入在哪里?

  • 772

我正在将 shell 命令序列复制并粘贴到我的终端模拟器中,我对这种行为感到困惑。

  • 当我粘贴单行时ssh user@remote "echo foo"; echo baz,计算机会执行我期望的操作。它运行 SSH 命令,然后在我完成 SSH 会话后回显某些内容。
  • 但是,当我粘贴与多行命令相同的内容时,不会发生这种情况。
    ssh user@remote "echo foo"
    回声巴兹
    我仍然得到 SSH 会话,但echo baz完全消失了。没有命令运行。
  • 至少,这似乎与 SSH 有关。因为用其他东西替换 SSH 会产生我实际期望的行为。当我粘贴这个时,这两个命令都会运行,例如:
    回声富
    回声巴兹

那么发生了什么?粘贴的输入去哪里了?为什么 echo 命令没有被任何东西执行?这与 SSH 有什么关系?

(顺便说一句:我知道Ctrl+ X,Ctrl+E方法,但有时,尤其是在 Windows 上使用终端仿真器时,这不会开箱即用。)

ssh clipboard
  • 1 1 个回答
  • 91 Views

1 个回答

  • Voted
  1. Best Answer
    Kusalananda
    2018-06-26T11:24:20+08:002018-06-26T11:24:20+08:00

    尝试粘贴:

    ssh user@host 'read foo; echo ">>$foo<<"'
    echo bar
    

    您将看到服务器上的>>echo bar<<输出。echo

    这意味着ssh它将在其标准输入上吃掉粘贴的数据,就好像你已经完成了一样

    echo 'echo bar' | ssh user@host 'read foo; echo ">>$foo<<"'
    

    除了从不将 shell 命令粘贴到终端来运行它们之外,解决此问题的方法是使用ssh -n,它将重定向/dev/null到ssh:

    ssh -n user@host 'echo foo'
    echo bar
    

    不幸的是我不知道粘贴的机制,所以我不能说为什么粘贴的数据最终会出现在标准输入流上ssh,但我猜这与从交互式继承的流有关shell(从标准输入读取命令)。


    使用ssh -n也是问题的解决方案(或至少是解决方案)

    while read something; do
        ssh user@host 'somecommand'
    done <inputfile
    

    在这里,循环只会运行一次,因为ssh从inputfile.

    • 1

相关问题

  • 为什么 ssh 实用程序被视为 pty?

  • Auto-SSH 手动工作,但不在后台工作

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • rsync 端口 22 和 873 使用

  • SCP突然中止:管道损坏,消息验证码不正确

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve