You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何tail -c3命令在管道与文件场景下输出结果不同?

差异原因解析

核心问题出在echo命令的默认行为上:当你执行echo 987654321时,它会自动在输出字符串的末尾追加一个换行符(ASCII码0x0A)。

管道场景的实际情况

通过管道传递给tail -c3的完整内容是987654321\n(总计10字节),tail取最后3字节时,得到的是21\n。其中换行符是不可见的控制字符,输出到终端时只会触发换行动作,所以你看到的可见结果是21。

文件场景的实际情况

你直接写入test_tail.sh的内容是987654321,没有额外的换行符,总计9字节。此时tail -c3取最后3字节就是321,完全符合手册中“显示文件最后NUM字节”的描述。

验证方法

  • 用echo -n 987654321 | tail -c3执行,-n参数会禁止echo添加换行符,此时输出结果就是321,和文件场景一致。
  • 用hexdump -C可以直观查看字节内容:
    • 执行echo 987654321 | hexdump -C,能看到末尾多了0x0a的换行符字节;
    • 执行hexdump -C test_tail.sh,只会看到9个数字对应的字节。

内容的提问来源于stack exchange,提问作者Yongwu Xiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:14:54