从windows传入linux系统中的py文件,在运行时出现了如标题所示的错误
第一行#!/bin/python3
但是却无法使用./xxx.py运行,通过一番调试,发现
windows的换行符与linux的换行符不一致导致了错误的发生
如何解决这个问题,使用dos2unix
dos2unix
是一个用于转换文本文件行结束格式的工具。在Windows系统中,行结束符是回车符和换行符的组合(CRLF),而在Unix/Linux系统中,行结束符是单一的换行符(LF)。dos2unix
工具可以将Windows格式的文本文件转换为Unix格式。
基本用法
1. 转换单个文件
将 file.txt
从 DOS/Windows 格式转换为 Unix 格式:
dos2unix file.txt
2. 转换多个文件
可以一次性转换多个文件:
dos2unix file1.txt file2.txt file3.txt
3. 转换文件并保留原文件
使用-b
选项,可以保留原始文件的备份。备份文件通常会添加.bak
扩展名:
dos2unix -b file.txt
4. 指定输出文件
使用-c
选项指定输出文件的编码,同时可以选择备份:
dos2unix -c iso file.txt output.txt
高级用法
5. 转换文件目录
转换整个目录内的所有文件:
dos2unix -r /path/to/directory
6. 强制转换二进制文件
默认情况下,dos2unix
会跳过二进制文件。如果你需要强制转换这些文件,可以使用-f
选项:
dos2unix -f binaryfile.bin
可用选项
常见选项
-o
或--oldfile
:将转换后的内容写回原文件(默认行为)。-n
或--newfile
:将转换后的内容写入一个新的文件。-b
或--keep-bom
:在 UTF-8 文件中保留 BOM(字节顺序标记)。-s
或--safe
:跳过多次转换相同文件。-q
或--quiet
:安静模式,不输出处理信息。-r
或--recursive
:递归处理目录中的所有文件。
实际示例
保存原始文件(生成备份)
dos2unix -b example.txt
这将把example.txt
转换为Unix格式,并且生成一个备份文件example.txt.bak
。
转换一个目录内所有文件
假设你有一个包含多个文件的目录myfolder
,需要将其中所有文件从DOS格式转换为Unix格式:
dos2unix -r myfolder/
将文件输出到新文件
假设你需要将转换后的文件保存为新文件newfile.txt
:
dos2unix -n example.txt newfile.txt