Linux 基础命令(01): dos2unix 搞定 Linux 和 Windows 换行符的噩梦
2023-06-13 09:17:20 时间
Linux 基础命令(01): dos2unix 搞定 Linux 和 Windows 换行符的噩梦
大家好, 我是老麦 原文链接: https://tangx.in/posts/2022/12/28/dos2unix-and-unix2dos/
不同操作系统 换行符 标准不统一, 秦始皇听了都要落泪。 多少年前, 我曾也被这东西坑过无数次, 往事不堪回首。
事情是这样的, 今天群里面一个朋友被换行符坑了。
windows-newline-ifs
看到这个问题, 我依旧一身冷汗。
不同操作系统的 换行符
不同操作系统采用不同的换行符:
- Linux:
\n
- Windows:
\r\n
- Mac OS X
- 老系统:
\r
- 新系统:
\n
- 老系统:
dos2unix
拯救一切
dos2unix
是一组命令集合, 可以在 mac,linux,windows 之间相互转换换行符。
以 ubuntu
系统为例, 安装命令如下
$ sudo apt -y install dos2unix
安装之后, 你将得到 这些命令
# ls -al /usr/bin/ | grep unix
-rwxr-xr-x 1 root root 51288 Aug 16 2021 dos2unix
lrwxrwxrwx 1 root root 8 Aug 16 2021 mac2unix -> dos2unix
-rwxr-xr-x 1 root root 51288 Aug 16 2021 unix2dos
lrwxrwxrwx 1 root root 8 Aug 16 2021 unix2mac -> unix2dos
名字非常直观。
换行符是不可见字符
换行符是不可见字符, 在 Linux 中, 可以通过命令 cat -A
查看
$ cat demo.txt
my name is zhangsan # 换行符不可见
$ cat -A demo.txt
my name is zhangsan$ # 注意尾部结尾是 $
可以确认, cat -A
尾部是 $
符号。这个符号并不是我们文件中的可见字符。
使用 unix2dos
换行为 Windows 换行符
# unix2dos
$ unix2dos demo.txt
unix2dos: converting file demo.txt to DOS format...
$ cat -A demo.txt
my name is zhangsan^M$ # 注意尾部结尾是 ^M$
# dos2unix
$ dos2unix demo.txt
dos2unix: converting file demo.txt to Unix format...
$ cat -A demo.txt
my name is zhangsan$
使用 file
查看换行符
使用 file
命令, 可以更直观查看文件使用的换行符。
$ dos2unix demo.txt
$ file demo.txt # linux
demo.txt: ASCII text
$ unix2dos demo.txt
$ file demo.txt # windwos
demo.txt: ASCII text, with CRLF line terminators
# 追加 Linux 换行符
$ echo 1231232 >> demo.txt
$ cat -A demo.txt
my name is zhangsan^M$
1231232$
## 查看结果
$ file demo.txt
demo.txt: ASCII text, with CRLF, LF line terminators
可以看到, 经过 dos2unix
转换前后, file
命令结果所有不同,
- 如果是 Linux 换行符, 没有提示。
- 如果是 Windows 换行符结果有
CRLF
的提示。 - 如果是混合换行符, 提示
CRLF
和LF
都存在。
真的很棒。
相关文章
- Linux系统基础:开启新的学习之旅(linux系统基础教程)
- Linux系统下网卡参数配置指南(linux网卡配置)
- 程序Linux下构建Java应用:从入门到精通(linux下开发java)
- Linux系统:实现多种用途的利器(linux系统用途)
- 让0基础也能自学Linux(0基础自学linux)
- 学习Linux:掌握基础应用之道(linux基础应用)
- Linux文件查找和替换实战指南(linux查找文件并替换)
- Linux下OD命令使用指南(linux的od命令)
- Linux安装SDL:一步步指南(linux安装sdl)
- 传输文件:从Windows到Linux虚拟机(传文件到虚拟机linux)
- Linux发展史:从基础分支到发展新版本(linux的分支)
- 如何自学Linux操作系统(怎么自学linux)
- Linux发展史:从基础分支到最新发展(linux的分支)
- 学习Linux脚本,培养基础能力(linux脚本基础)
- Linux 终端的加速键——快速提升效率(linux终端快捷键)
- 小白也能学会!零基础学习Linux,轻松掌握操作系统的基本知识!(零基础学习linux)
- Linux 环境实现视频采集的精彩之旅(linux 下视频采集)
- Linux关闭MySQL服务:一步一步操作指南(linux关闭mysql)
- Linux系统基础:学会使用基本命令(linux系统基本命令)
- 快速导出MYSQL数据库:Linux下的简便指南(linux导出mysql数据库)
- Linux将文件传输到Windows系统中(linux传文件到windows)