今天,在写shell的时候,需要读取一个sh文件的内容,然后给予拼接字符串后执行这个字符串,出现换行的情况,于是,经过苦心查找,原来是读取vi编辑文件的后面有换行符,通过php的trim对其做了处理,OK,以前一直没有注意,原来Linux的vi一直都在干这个事情,哈哈哈,特别写下这个记录!
----------------------------------------------------------------------------------------------------------------------------------------------------
Linux下vi一个jackxiang.txt,然后,sz下来,用编辑器:FlexHEX.ext打开Jackxiang.txt,换行符的查看:
换行符(\n) 相当于ASCII 换行字符(十六进制0A),
因此,在文本模式下打开的文件作为新行字符读入CR/LF 对,并且作为CR/LF 写入新行字符。
原来是vi编辑器自己在行尾加了个\n换行符。用od命令可看的很清楚:od -A d -t c jackxiang.txt
PHP用trim去掉换行符,即可! "\n" (ASCII 10 (0x0A)), a new line (line feed).
补充学问:
vi test.txt
输入abc三个字符
但,ls -l可看到test.txt占了3个字节
为什么会这样呢?
原来是vi编辑器自己在行尾加了个"\n"换行符。
用od命令可看的很清楚:
od -A d -t c text.txt
得到输出如下(0000000/0000004是偏移量):
0000000 a b c \n
0000004
其实并不是linux文件都会有\n换行符在末尾,比如echo -n "abc" > test1.txt
test1.txt的末尾就不会又换行符。
附:linux od(octal dump) 命令详解
Linux指令:od
示例用法:od -c hello
Linux指令:od
od命令
用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
语法:od [选项] 文件…
命令中各选项的含义:
- A 指定地址基数,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值
- t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d 有符号十进制数
f 浮点数
o 八进制(系统默认值为02)
u 无符号十进制数
x 十六进制数
除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
----------------------------------------------------------------------------------------------------------------------------------------------------
Linux下vi一个jackxiang.txt,然后,sz下来,用编辑器:FlexHEX.ext打开Jackxiang.txt,换行符的查看:
16进制:6A 61 63 6B 78 69 61 6E 67 0A
原文:jackxiang
原文:jackxiang
换行符(\n) 相当于ASCII 换行字符(十六进制0A),
因此,在文本模式下打开的文件作为新行字符读入CR/LF 对,并且作为CR/LF 写入新行字符。
原来是vi编辑器自己在行尾加了个\n换行符。用od命令可看的很清楚:od -A d -t c jackxiang.txt
Onecent:/usr/local/tads/htdocs/*****_2010/bin # od -A d -t c jackxiang.txt
0000000 j a c k x i a n g \n
0000010
0000000 j a c k x i a n g \n
0000010
PHP用trim去掉换行符,即可! "\n" (ASCII 10 (0x0A)), a new line (line feed).
补充学问:
vi test.txt
输入abc三个字符
但,ls -l可看到test.txt占了3个字节
为什么会这样呢?
原来是vi编辑器自己在行尾加了个"\n"换行符。
用od命令可看的很清楚:
od -A d -t c text.txt
得到输出如下(0000000/0000004是偏移量):
0000000 a b c \n
0000004
其实并不是linux文件都会有\n换行符在末尾,比如echo -n "abc" > test1.txt
test1.txt的末尾就不会又换行符。
附:linux od(octal dump) 命令详解
Linux指令:od
示例用法:od -c hello
Linux指令:od
od命令
用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
语法:od [选项] 文件…
命令中各选项的含义:
- A 指定地址基数,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值
- t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d 有符号十进制数
f 浮点数
o 八进制(系统默认值为02)
u 无符号十进制数
x 十六进制数
除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3516/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2010-9-22 14:28
评论列表