设为首页 加入收藏

TOP

shell中的trailing newline
2014-11-24 11:22:45 来源: 作者: 【 】 浏览:0
Tags:shell trailing newline

最近在学shell脚本,发现很多的shell命令都涉及到一个trailing newline的东西,例如wc -l。


man wc,找到-l发现解释如下:


print the newline counts


即打印出newline 的个数,那newline 到底是什么东西呢?翻了翻词典,发现是结尾换行符的意思,那是不是结尾的时候按下回车的时候产生的换行符呢?


在百度搜索资料,发现了一篇文章,原来“很多软件或命令都会自动加上一个trailing newline,也就是c语言里的\n,ascii码为10”。


自己动手验证下:


#vi test


输入如下内容 :


abcd 1234


#wc -l test,


发现返回值为1.


#vi test2


输入如下内容:


abcd


1234


#wc -l test2


而这次的返回值变成了2!。两次的内容的唯一的差别就是我多敲了一个回车,而wc -l选项是统计newline即回车符的个数的,所以才会导致两次的结果变化。


写到这里忽然想起来一个疑问:


#ls


#ls | wc -l


18


问题来了,为什么返回值是18?ls返回的结果只有三行,不是应该有三个换行符吗 那接过应该是3呀。


#ls > t


#cat t


Desktop
Documents
Downloads
examples.desktop
fcitx-4.0.0
fcitx-4.0.0.tar.gz
hello.c
helloword
Music
nus
nusers
Pictures
Public
t
Templates
test
Ubuntu One
Videos


我把输入重定向之后发现每一个字符后面都跟有一个换行符,应该是ls命令在每个字符的后面都有跟着换行符来分割字符,只是输出到终端的时候删掉了一部分。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇TQ2440 查询法实现按键LED的功能 下一篇Java并发编程总结---Hadoop核心源..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)
·关于 MySQL 数据库学 (2025-12-26 23:20:16)
·SOLVED: Ubuntu 24.0 (2025-12-26 22:51:53)
·Linux 常用命令最全 (2025-12-26 22:51:50)