用于转换 Windows 和 UNIX 的换行符,通常在windows系统中开发的源码文件,换行符是\r\n,二linux中的文件的换行符是\n。如果不转行可能会出错。
在windows记事本写一个hello world源码.
- #include
-
- int main(void)
- {
- printf("hello world\n");
- return 0;
- }
使用十六进制工具打开,看到0d 0a,如下所示,就是'\r\n';
使用dos2unix命令转换:
- $ dos2unix haha.c
- dos2unix: converting file haha.c to Unix format ...
- e$
如下所示,0d 0a变成0a了。
当前文件大小是512字节:
- lkmao@ubuntu:/mnt/hgfs/share$ ls -lsh haha.c
- 512 -rwxrwxrwx 1 root root 75 11月 24 20:45 haha.c
- lkmao@ubuntu:/mnt/hgfs/share$
再使用unix2dos转换回去:
- lkmao@ubuntu:/mnt/hgfs/share$ unix2dos haha.c
- unix2dos: converting file haha.c to DOS format ...
- lkmao@ubuntu:/mnt/hgfs/share$
转换后的十六进制视图:
查看文件大小:如下所示,文件变成了81字节,增加了6字节,使用wc -l,看到文件就6行,每行的0a 变成了0d 0a,每行增加一个字节。
- lkmao@ubuntu:/mnt/hgfs/share$ ls -lsh haha.c
- 512 -rwxrwxrwx 1 root root 81 11月 24 20:48 haha.c
- lkmao@ubuntu:/mnt/hgfs/share$ wc -l haha.c
- 6 haha.c
- lkmao@ubuntu:/mnt/hgfs/share$
批量dos2unix:这个还挺难敲,注意中间的空格别整没了。
find trans/ -type f -exec dos2unix {} \;
- lkmao@ubuntu:/mnt/hgfs/share$ find trans/ -type f -exec dos2unix {} \;
- dos2unix: converting file trans/haha.c to Unix format ...
- dos2unix: converting file trans/hehe.c to Unix format ...
- lkmao@ubuntu:/mnt/hgfs/share$
批量dos2unix:
- lkmao@ubuntu:/mnt/hgfs/share$ find trans/ -type f -exec unix2dos {} \;
- unix2dos: converting file trans/haha.c to DOS format ...
- unix2dos: converting file trans/hehe.c to DOS format ...
- lkmao@ubuntu:/mnt/hgfs/share$