为什么我在运行 cat file cmd 时看到 % 作为行尾

为什么我在运行 cat file cmd 时看到 % 作为行尾

这真的让我很困惑,当我执行 cat cmd 时,我总是在文件末尾看到类似 % 的内容,但是如果我在编辑器或 sublime 上打开文件,它就会消失。那么如何确保我的文件格式正确,例如运行 cmdcat -e test.txt

abc$
sdf$
adg$
adsf$
afg%

答案1

它是zsh 显示文件以未终止行结尾的方式。您会看到与fishshell 类似的东西,它(令人困惑地)使用字符来代替可用或^J其他字符。

对于大多数其他 shell(或者如果您关闭此功能,则使用 zsh),您会afg在同一行后立即看到提示,并且对于某些 shell,会出现显示故障,因为 shell 期望提示位于左边距。

通常,在类 Unix 系统上,换行符是行终止符:每行必须以换行符结尾。文本文件由一系列行组成,因此非空文本文件始终以换行符结尾。 (这与 Windows 不同,在 Windows 中换行符序列 (CR+LF) 通常是行分隔符,因此文本文件通常不以换行符结尾。)

如果文件的最后一行没有以换行符终止,某些文本处理工具将无法正确处理文件的最后一行,尽管大多数现代程序会自动添加最后一个换行符(如果缺少换行符)。缺少最后的换行符可能会产生令人惊讶的后果;例如,如果将该文件与另一个文件连接,afg则将与另一个文件的第一行连接,而不是在其自己的行上。

许多编辑器会自动以换行符结束文件,以便它们是有效的文本文件。默认情况下不系统地执行此操作的系统通常可以配置为执行此操作。

相关内容