【问题标题】:Why cat redirect somtimes uses CR and sometimes LF for line end为什么 cat redirect somtimes 使用 CR 有时使用 LF 作为行尾
【发布时间】:2020-10-06 22:16:21
【问题描述】:

当我将以下内容粘贴到控制台时:

cat >test
test1
test11

生成的文件有 CR (0x0d) 作为换行符 如果我这样做了

cat >test

然后粘贴内容:

test1
test11

我得到 LF (0x0a) 作为换行符。

谁能告诉我为什么这些行为不同 我正在使用 ubuntu 20.04 并尝试了不同的终端(不确定这是否会有所不同) 通过 ssh 使用其他主机时也会发生这种情况。

【问题讨论】:

    标签: bash newline io-redirection


    【解决方案1】:

    问题不是cat,而是字符串输入。这是因为您没有使用任何 here-doc (为了正确表示具有多行的字符串)并且您终止该行或进行一些换行。输出通常总是等于输入……就像 EnterShift+Enter 一样。只需将其粘贴到任何能够显示不可打印字符的文本编辑器中,您就会看到。

    【讨论】:

    • 当我显示带有不可打印内容的文本时,我看到了控制字符(即 0x0d 和 0x0a),但在这两种情况下,我都会粘贴多行字符串,在第一种情况下包含要执行的命令在第二个中,我手动调用命令,但一次性粘贴整个多行内容。在您发表评论后,我意识到这不是猫的问题,并且我知道如何使用 here-doc 但是我仍然不明白为什么如果将这个字符串作为两部分复制而不是一个部分来处理。
    • 这可能来自终端必须如何表示换行和中断(没有在第一行之后执行命令),没有 here-doc(这也是他们甚至想出了here-docs)。不确定是否有任何文档说明为什么它是这样实现的,到目前为止,我只是假设这是一个“给定的”现实。
    猜你喜欢
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多