Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M

news2025/1/12 9:05:17

title: Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M / The Past and Present of Line Break Symbols in Windows, macOS, Linux: How to Deal with ^M at the End of Text Files
categories:

  • 极客实用技巧 / Geek Practical Skills

我们在Windows创建文本文件,默认使用的换行标识为CRLF

🌈When we create a text file in Windows, the default line break symbol is CRLF.

这种CRLF文件在Linux系统中打开,则会在换行的位置显示^M

🌈When this CRLF file is opened in the Linux system, ^M will be displayed at the line break.

为什么会出现^M / Why Does ^M Appear?

Windows换行使用的CRLF标准,CRLF模仿了老式打字机,在老式打字机中,Carriage Return\r,回车)的功能是将打印头移回行首,而 Line Feed\n,换行)的功能是将纸张向上移动一行。因此,为了开始新的一行,需要先执行回车操作,然后执行换行操作。

🌈Windows uses the CRLF standard for line breaks, which imitates old typewriters. In old typewriters, the function of Carriage Return (\r, return) is to move the print head back to the beginning of the line, while Line Feed (\n, line break) moves the paper up one line. Therefore, to start a new line, you need to first perform a return operation and then a line break operation.

而Linux系统则简化了操作,使用单独的 LF 作为行尾标记,多出来的CR 则被显示为^MCR在 ASCII 表中的值是 13, ^ 是控制字符的前缀,M 是 ASCII 表中第 13 个字符)

🌈On the other hand, the Linux system has simplified this process by using a single LF as the end-of-line marker. The extra CR is displayed as ^M (CR has a value of 13 in the ASCII table, ^ is the prefix for control characters, and M is the 13th character in the ASCII table).

无用的知识 / Useless Knowledge

最骚的是,Mac OS X以前的版本(也就是2001年之前的版本)采用CR作为换行符,和Windows的CRLF与Linux的LF都不一样,古早时期的程序员们跨操作系统写脚本真的备受折磨。

🌈What’s interesting is that versions of Mac OS X prior to 2001 used CR as the line break symbol, which is different from Windows’ CRLF and Linux’s LF. Programmers from the old days really suffered when writing scripts across different operating systems.

Mac OS X以及之后的版本(Mac OS X先后改名为, OS XmacOS),最后采用了LF的换行标准,算是和Linux达成了一致,这也是程序员偏爱macOS系统的原因,程序员写的程序会放到服务器运行,而服务器大多运行Linux

🌈Mac OS X and its subsequent versions (which were renamed OS X and then macOS) eventually adopted the LF line break standard, which is consistent with Linux. This is why programmers prefer the macOS system, as the programs they write will be run on servers, and most servers run Linux.

如何消除^M? / How to Eliminate ^M?

方法1: 使用VScode消除(适合少量文件)

🌈Method 1: Use VScode to eliminate (suitable for a small number of files)

在Windows中,^M 是换行的一部分,不需要消除;如果你使用专业代码编辑器VScode,也可以手动指定换行方式,如果你的文本文件已经采用了 CRLF 编写,也可以通过VScode直接转换为LF换行。

🌈In Windows, ^M is part of the line break and does not need to be eliminated. If you use a professional code editor like VScode, you can also manually specify the line break method. If your text file has already been written using CRLF, you can also convert it directly to LF line breaks through VScode.

方法2: 使用dos2unix转换(适合大量文件转换)

🌈Method 2: Use dos2unix for conversion (suitable for a large number of file conversions)

# 安装dos2unix / Install dos2unix
sudo apt install dos2unix -y 

保留旧文件,转换单个文件

🌈Keep the old file and convert a single file

# 保留原文件转换 dos2unix -n oldfile newfile / Keep the original file for conversion dos2unix -n oldfile newfile
dos2unix -n  newline-character-换行符.txt newline-character-换行符-for-unix.txt

不保留旧文件,直接转换单个文件

🌈Do not keep the old file, directly convert a single file

# 单个文件 / Single file
dos2unix file

不保留旧文件, 批量转换文件夹内的文件 (谨慎起见,请提前复制文件夹做好备份)

🌈Do not keep old files, batch convert files in the folder (to be cautious, please copy the folder in advance for backup)

# 转换某文件夹内的所有文件 / Convert all files in a folder
find /path/to/your/directory -type f -exec dos2unix {} \;

批量转换成功!

🌈Batch conversion successful!

小结 / Summary

Windows是民用领域市场占有率最高的操作系统,但在Windows上做程序开发,确实会遇到CRLF这类独特奇妙的小问题,对于开发者而言,用Windows启动Linux虚拟机,在虚拟机中做开发,也许是省事的开发策略。

🌈Windows is the operating system with the highest market share in the consumer field, but when doing program development on Windows, you will indeed encounter unique and interesting little problems like CRLF. For developers, using Windows to launch a Linux virtual machine and doing development in the virtual machine may be a convenient development strategy.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试被问了几个简单的问题,却回答的不是很好

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言 前几天参加了…

定时器之输出捕获

简介 • IC ( Input Capture )输入捕获 • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前 CNT 的值将被锁存到 CCR 中,可用于测量 PWM 波形的频率、占空比、脉冲间隔、电平持续时间等参数 • 每个高级定时器和…

防泄密软件推荐(数据防泄漏软件好用榜前五名)

在当今的数字化时代,数据已经成为企业最宝贵的资产之一。企业需要依赖数据来驱动业务决策、提高运营效率和创新产品。然而,随着数据量的不断增长,数据安全问题也日益凸显。企业需要采取有效的措施来保护敏感数据,防止信息泄露给竞…

5次多项式轨迹规划(博途SCL源代码)

运动控制轨迹规划时,加速度不连续将会使电机抖动,产生机械冲击。凸轮表轨迹规划很多都是基于5次多项式轨迹规划。3次多项式轨迹规划请查看下面文章链接: 3次多项式轨迹规划(PLC SCL代码)_RXXW_Dor的博客-CSDN博客机器人、运动控制等常用的轨迹规划有三次多项式、五次多项式…

第二章 进程与线程 十四、进程互斥的硬件实现方法(中断屏蔽法、TestAndSet指令、Swap指令)

目录 一、中断屏蔽法 3、优点: 4、缺点: 二、TestAndSet指令 3、代码解释 4、优点 5、缺点 三、Swap指令 1、定义 2、代码解释 3、优点 4、缺点 四、总结 一、中断屏蔽法 1、关中断后即不允许当前进程被中断,也必然不会发生进程切换。 2、…

【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best

paper: Real-Time Camera Tracking: When is High Frame-Rate Best? 0. 摘要: 更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器…

不添加端口号访问非80网站

自己用树莓派搭了个网站,由于某些原因,不能使用80端口,但又想访问网站时候不要添加端口号。这时候可以更换下DNS服务器,如使用cloudflare,替换成以下两个 参考文章 https://www.cnblogs.com/beidaxmf/p/16744589.html…

常见列表字典排序

一、列表排序 demoList [1, 3, 2, 4, 9 ,7]res sorted(demoList) # 默认升序# 降序 # res sorted(demoList, reverseTrue)print(res)二、字典排序 demoDict {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}# sorted排序 res so…

Python_ithheima_第二阶段

第一章 01-初识对像 02 类的成员方法 03 类和对象 04 构造方法 05 魔术方法 06 封装 07 封装的课后练习题讲解 08 继承的基础语法 pass关键字的功能是“语法补全” 同名成员或方法,谁先来谁优先级高 09 复写父类成员和调用父类成员 10 变量的类型注解 11 函数和方法…

gitee-快速设置

快速设置— 如果你知道该怎么操作,直接使用下面的地址 HTTPS SSH: gitgitee.com:liuzl33078235/esp-idf.git 我们强烈建议所有的git仓库都有一个README, LICENSE, .gitignore文件 初始化 readme 文件 Git入门?查看 帮助 , Visual Studio / TortoiseG…

RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列

目录 一、RabbitMQ 集群 1.1、前言 1.2、普通集群 1.3、镜像集群 1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言 前面我们已经解决了消息可靠性问题,以及延迟消息问题 和 消息堆积问题. 这最后一章,我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…

企业贸易站官网是HTML模板源码,提供完整源代码

企业贸易站官网是HTML模板源码,提供完整源代码二改的是 为了一起学习所以就分享出来了 有能力的可以自己做成主题配合帝国或者WordPress系统 (访问密码:2971)无需解压密码 源代码:https://url53.ctfile.com/f/20638…

Vue的自定义事件(Custom Events):实现组件间通信的强大工具

Vue的自定义事件(Custom Events):实现组件间通信的强大工具 Vue.js是一款流行的JavaScript框架,用于构建交互式的Web应用程序。在Vue中,组件是构建应用程序的基本单元,它们之间的通信对于构建复杂的应用非…

模拟实现offsrtof

写一个宏,计算结构体中某变量对于首地址的偏移 设计思路: 1.偏移量,用每个所求元素的地址减去结构体初始值的地址可得 2.如计算图示,第一个元素的偏移量结构体初始值必为0,第二个为4,其次为6,…

微信小程序更改AI类目-深度合成-AI绘画/AI问答教程

实测截图 准备材料: 1.营业执照 2.企业公章 一、首先我们需要到百度智能云进行企业认证 https://cloud.baidu.com/ 注册登录后进行企业认证 认证成功后申请千帆大模型平台和AI作画 开通付费服务 开通完以后点击右上角财务 选择合同管理 申请合同 将所有的选…

如何利用Arcgis进行地统计学分析(一):地统计学分析概念及其分析流程

一、地统计分析概念 地统计(Geostatistics)又称地质统计,也可以称为空间统计分析,其是统计学的一个分支。地统计学是以区域化变量理论为基础,以变异函数(variogram)为基本工具来研究分布于空间&…

Python 潮流周刊#21:如何提升及测量 Python 代码的性能?

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中三则分享,不代表全部内容都是该主题,特此声明。 本周刊由 Python猫 出品,精心筛选国内外的 250 信息源,为你挑选…

ruoyi-nbcio增加websocket与测试页面

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 为了后面流程发起等消息推送&#xff0c;所以需要集成websocket。 1、后端增加websoket支持 首先在framework模块里的pom.xml增加websocket <dependency…

肖sir__项目实战讲解__004

项目实战讲解 一、项目的类型 金融类&#xff1a; 保险(健康险理财险)、证券、基金(股票型基金、混合型基金、指数型基金、债券型基金、 天天基金网&#xff08;ETF基金、货币型基金、量化基金)、银行、贷款、信用卡、外汇、二元期权、期货原油、blockchain、 数字货币、黄金白…

Nginx环境搭建、负载均衡测试

Nginx环境搭建、负载均衡测试 系统环境&#xff1a; win10&#xff0c;IDEA2020&#xff0c;JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载&#xff1a; http://nginx.org/en/download.html Nginx有三种版本&#xff0c;分别是Mainline version&#xff08;开发版&…