php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号
【整理】如何取消Linux下,vi中显示的^M符号
【背景知识】
^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13。
对于换行这个动作,unix下一般只有一个0x0A表示换行,windows下一般都是0x0D和0x0A两个字符。
另外:^L 是ascii 0x0C '\f', 换页控制符。
而对于Linux 的vi,有些版本,比如我当前开发板里面的vi,是用busybox编译出来的,不能识别windows下面编辑的,带0x0D的那些文本文件,所以,你在windows下面编辑一个普通的文本文件,如果里面有换行,那么在Linux的vi里面,对应的那个0x0D就会显示出一个^M,比如:
1. led on & off^M
eg.^M
echo none > /sys/class/leds/led_green/trigger^M
echo 1 > /sys/class/leds/led_green/brightness^M
echo > /sys/class/leds/led_green/brightness^M
Note: the default switch of trigger is [none]^M
2. heartbeat flash^M
eg.^M
echo heartbeat > /sys/class/leds/led_green/trigger^M
3. timer flash^M
eg.^M
echo timer > /sys/class/leds/led_green/trigger^M
echo 5 > /sys/class/leds/led_green/delay_on^M
echo 5 > /sys/class/leds/led_green/delay_off^M
每行最后都有一个^M,很是难看,所以想要去掉。
注:普通PC版本的Linux,好像可以很好地识别了,比如我的Linux服务器,OpenSUSE下面的某个版本vi的,可以很好地显示那些windows下面编辑的,带0x0D的回车换行符,不能出现^M。
此外,关于ASCII字符,Linux下面有个简要的介绍:
[crifan@linux-41lh wi-fi]$man ascii
ASCII(7) Linux Programmer's Manual ASCII(7)
NAME
ascii - the ASCII character set encoded in octal, decimal, and hexadecimal
DESCRIPTION
ASCII is the American Standard Code for Information Interchange. It is a 7-bit code. Many 8-bit codes (such as ISO8859-1, the Linux default character set) contain ASCII as their lower half. The international counterpart of ASCII isknown as ISO 646.
The following table contains the 128 ASCII characters.
C program '\X' escapes are noted.
Oct Dec Hex Char Oct Dec Hex Char
------------------------------------------------------------------------
000 0 00 NUL '\0' 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
。。。。。。。。。。。
【如何消除vi中的^M】
我刚开始去用sed命令:
sed 's/^M//g' file_old > file_new
不成功,输出的文件,用vi打开,还是带^M。
后来到网上搜到了可以用的办法,用tr命令:
tr -d "\015" < myfile.txt > myfile_new.txt
可以把符号^M(即"\015")去掉,并另存为新文件myfile_new.txt
【后记】
根据别人的建议,知道了还有个专门的工具dos2unix和unix2dos,用于处理这方面的事情,详情参考:
【转】dos2unix和unix2dos命令使用
其用法很简单,直接使用即可:
dos2unix file_name
这样就可以把该文件里面的0x0D去掉了,只保留0x0A。
【引用】
1。如何取消vi中显示的^M符号
2。Linux 下用程序新建的文件中出现^M字符,如何消除??
http://www.linuxforum.net/forum/printthread.php?Cat=&Board=program&main=32848&type=thread
3。[请教]用vi编辑文本时出现的^M和^L代表什么?
http://www.linuxsir.org/bbs/thread305370.html
php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号相关推荐
- linux配置apache文件大小,linux下apache中httpd.conf文件配置参数说明
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 linux下的apache服务器,我想大家都不陌生吧,前面我也有讲过apache服务器的配置及注意,今天57号网络技术分享平台的小编将为大家带来apach ...
- c++字符加密_linux安全Linux下RAR加密解密
网络拓扑:Linux下RAR加密解密主机用户名:root 密码:123456第一步.打开网络拓扑,进入H-xclient-rar--1虚拟机. 第二步.创建实验文件test.txt,文件内容&qu ...
- linux下vi修改文件用法
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置 ...
- linux vi命令操作实例,Linux下Vi替换字符命令操作实例
在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的替换操作也是非常的频繁.本文以一个实际的文件为例,详细 在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的 ...
- linux 下vi进行文件编辑
用 vi 进行文件编辑 原地址:http://hi.baidu.com/guolele17080/item/8f36bc09d2803e14acdc7055 使用 vi vi 编辑器几乎在所有 Lin ...
- linux中用vi读文件夹,linux下vi与vim编辑器的简单区别及VI详细使用方法
vi与vim一样都是编辑器,不同的是vim更高级一些,可以理解是vi的高级 版本.vi就像Windows中的计事本,而vim则可以算的上是 office中的word.vi主要用来编辑一些文件,vim是 ...
- Linux下ll 命令显示的文件类型
Linux下可以用ll 命令来判断文件类型,主要是根据每行的首个字符来判断. -rw-r-r- "-"开头的都是普通文件: drw-r-r- "d"开头 ...
- linux下Makefile中包含有shared library动态链接库文件时候的简单例子
如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...
- dat文件打开乱码_5.2 实战1:解决在Linux下打开Windows汉字文本的乱码问题
今天MK继续来分享linux的学习文章,今天讲的主要是实战部分. 1.实验环境:CentOS 7.5 现在系统默认使用的语言是汉语.(系统中必须安装好中文包). 2.在windows系统上编辑名字为& ...
最新文章
- 现场丨李开复、李飞飞等大佬集聚达沃斯,解读中国的AI优势
- 新科技快速指南系列之“量子计算”:历史、现在与未来
- 有关IList 、List 使用Contains的问题
- CAPEX与OPEX
- websocket心跳链接代码_Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送
- docker d盘_windows修改docker的默认存放位置
- 微软Azure storage account的connection string
- python 判断时间是否大于6点_python中判断时间间隔的问题
- 【转】ARC下dealloc过程及.cxx_destruct的探究
- 【ElasticSearch 学习笔记】Java API
- OpenCV——读取图片的数据类型必须是int8类型吗?
- visual studio 设计器不显示_嫦娥上升器为什么不设计成月球勘测器?
- 【Spark】sparksql中使用自定义函数
- 深度学习笔记(三)——GAN入门实现MNIST数据集
- 基于springboot的高校(学生)评教系统
- Android Studio开启DDMS查看手机文件
- hyper-v 网桥_使用网桥简化网络-使FIO ActionTec MI424-WR成为网桥
- Hapi.js 起步 - 写给前端开发的 Node Web 框架入门
- python游戏代码怎样才能玩好英雄联盟_怎样才能玩好英雄联盟-百度经验
- golang内幕之for-go-statement