【问题标题】:linux terminal output redundant contentlinux终端输出冗余内容
【发布时间】:2021-11-06 02:10:52
【问题描述】:

我的Linux是Arch,我的配置如下:

Kernel: 5.13.13-arch1-1
Packages: 490 (pacman)
Shell: zsh 5.8
WM: dwm
Terminal: st
Terminal Font: Source Code Pro

当我使用C输出语句时,例如printfputchar('A');,如果我没有在末尾添加\r或\n,我会在终端上得到一个额外的'%'字符。

$ ./a.out
A%
$

这个问题困扰了我很久,以至于不知道是谁的问题,用dwm?用嘘?用zhs?

【问题讨论】:

  • 不要将代码/文本粘贴为图像
  • 如果您在末尾添加'\n',问题就消失了吗?最好在最后加上'\n'。许多 实用程序 将 line 解释为“由 并包含 换行符的一堆字符”
  • 请将纯文本作为(格式化)文本直接添加到您的问题中,而不是显示纯文本的控制台图片。
  • od 输出表示来自./a.out1 字节,其八进制值为000101,即A (65),因此额外的字符不是来自您的可执行文件。跨度>
  • @tstanisl:在这种情况下,终端窗口文本的图像是相关且适当的,因为着色和更改的背景传达了有关各种文本的来源或性质的信息,问题转到显示文本,而不是其内容本身。例如,% 的黑底白字与黑底白字A 的对比表明% 不是程序输出的。

标签: c arch


【解决方案1】:

这是 zsh 的一项功能,用于显示程序何时结束而没有最后的换行符,并将 zsh 的命令提示符与程序输出区分开来。

You can disable it with the zsh command PROMPT_EOL_MARK=''.你也可以设置成别的,比如PROMPT_EOL_MARK=' -- The program did not end with a newline.'

【讨论】:

  • 非常非常非常非常非常非常非常感谢
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
相关资源
最近更新 更多