Eli*_*gne 5 bash ssh putty clipboard here-document
我有一个带有制表符分隔数据的字符串,如下所示:
h1 h2
a1 b1
a2 b2
Run Code Online (Sandbox Code Playgroud)
我在 Windows 上用记事本制作了它。我创建了制表符分隔的数据,确保使用制表符而不是空格。

我使用 PuTTY 通过 SSH 连接到 Linux 服务器。我想将文件写入/tmp/test.txt并保留选项卡。所以我跑cat <<EOF >/tmp/test.txt。我从记事本复制文本并将其粘贴到腻子会话中。然后我输入EOF。

但是,这会生成一个没有选项卡的文件,其中包含以下内容:
h1h2
a1b1
a2b2
Run Code Online (Sandbox Code Playgroud)
我发现这有效:
sed 's/\\t/\t/g' > /tmp/test.txt << EOF
h1\th2
a1\tb1
a2\tb2
EOF
Run Code Online (Sandbox Code Playgroud)
但是,它要求我将输入字符串更改为使用 '\t' 而不是实际的制表符。什么是更优雅/简单的解决方案,它允许我从 Windows 按原样获取字符串文字并将其写入远程 Linux 机器上的文件?
我通过 putty 从 Windows SSH 连接到 Linux 服务器。服务器是:
当您在 shell 中键入内容时,shell 将某些字符识别为命令。例如,回车符(按键发送的字符Enter)使 shell 执行命令。制表符使 shell 执行完成操作。当您将某些内容粘贴到 PuTTY 终端窗口时,从 shell 的角度来看,这与您键入这些字符是一样的。因此,在粘贴制表符时,shell 会执行完成操作,但不会插入制表符。
\n\n复制文件而不进行转换的最简单方法是使用 PuTTY\ 的配套程序 PSCP 或 PSFTP 来复制文件。从概念上讲,这是最简单的方法,但它确实有运行另一个程序、身份验证、选择目录等的开销。
\n\n如果您想要内联内容,可以直接粘贴到 中cat,而不是粘贴到此处的文档中。然后,您将粘贴到终端的行编辑器中,而不是粘贴到 shell 的行编辑器中。由于终端的行编辑器非常原始,只有少数控制字符具有特殊含义,不包括制表符。在行首按Ctrl+可终止输入。D
\n[darkstar /]$ cat >text.txt\n Paste\n Ctrl+ D\n[darkstar /]$ \n\n\n
如果您想通过解释控制字符的介质传输任意数据,您可以将其编码为仅使用 \xe2\x80\x9ctame\xe2\x80\x9d 字符的形式。Base64就是其中之一;它不使用任何控制字符并忽略空格和换行符。GNU coreutils 是 Linux 和 Cygwin 上基本安装的一部分,包含一个base64命令. 在发送方,运行base64 <file-to-decode,例如
base64 c:/path/to/test.txt在 Windows 上:从 Cygwin 终端运行base64。| 归档时间: |
|
| 查看次数: |
4897 次 |
| 最近记录: |