背景知識】
^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
【如何消除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