首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么只有一个“cat”命令的输出带有行间隔?

为什么只有一个“cat”命令的输出带有行间隔?
EN

Stack Overflow用户
提问于 2020-01-08 16:17:12
回答 1查看 214关注 0票数 0

由于我的声誉太低,无法发布图片,所以我将复制我的问题来源的终端输出:

代码语言:javascript
复制
username@computer:/run$ cat rsyslogd.pid 
599username@computer:/run$ cat acpid.pid 
636
username@computer:/run$

cat acpid.pid附带了一个行间隔,而cat rsyslog.pid没有。

但是,如果我打开两个文件,就没有明显的区别(例如,文件acpid.pid没有额外的空行)

问题是:为什么一个.pid 文件带有一个行间隔,而另一个没有?

附加信息:我的操作系统是Ubuntu18.04.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-08 16:34:46

rsyslogd.pid文件可能不会以换行符(ASCI0x0A)结尾。

您没有提到如何打开文件,但是,我怀疑您使用了一个文本编辑器,它不会显示不可打印的字符(比如换行符和后置空间)。与其使用文本编辑器,不如使用十六进制工具查看原始文件。然后将十六进制值与ASCII表进行比较。我想你会发现599和636之后的不可打印字符是不同的.

代码语言:javascript
复制
hexdump -C rsyslogd.pid
hexdump -C acpid.pid

下面的命令序列再现您的输出。关键是使用回显命令的-n标志来创建一个文件,最后没有换行符。

代码语言:javascript
复制
$ echo -n test > file_no_new_line.txt
$ echo test > file_with_new_line.txt
$ cat file_no_new_line.txt
test$ cat file_with_new_line.txt
test
$

下面是我的示例中显示的两个文件的十六进制输出。

代码语言:javascript
复制
$ hexdump -C file_no_new_line.txt
00000000  74 65 73 74                                       |test|
00000004
$ hexdump -C file_with_new_line.txt
00000000  74 65 73 74 0a                                    |test.|
00000005
$

命令输出(在本例中是cat的命令输出)和shell提示符($)相互连接也是shell依赖的。如果无法用上述步骤再现行为,请尝试另一个shell (例如/bin/sh)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59649902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档