dos2unix and unix2dos commands
Last Updated :
19 Jul, 2024
Sometimes, you will need to move files between windows and unix systems. Window files use the same format as Dos, where the end of line is signified by two characters, Carriage Return or
CR
or \r followed by Line Feed or
LF
or \n. Unix files, on the other hand, use only Line Feed (\n).
unix2dos
is a tool to convert line breaks in a text file from Unix format (Line feed) to DOS format (carriage return + Line feed) and vice versa.
- dos2unix command : converts a DOS text file to UNIX format.
- Unix2dos command : converts a Unix text file to DOS format
- Example
-
Task : Create a file in DOS or in notepad with following contents
hello everybody
welcome to unix
unix is easy
- now copy this file in unix /home/geeks directory
-
$od –bc myfile.txt
0000000 150 145 154 154 157 040 145 166 145 162 171 142 157 144 171 015
h e l l o e v e r y b o d y \r
0000020 012 167 145 154 143 157 155 145 040 164 157 040 165 156 151 170
\n w e l c o m e t o u n i x
0000040 015 012 165 156 151 170 040 151 163 040 145 141 163 171 015 012
\r \n u n i x i s e a s y \r \n
0000060
- The CR-LF combination is represented by the octal values 015-012 and the escape sequence \r\n.
- Note:
- The above output shows that this is a DOS format file. Now convert DOS file to UNIX format by using dos2unix command
-
$dos2unix myfile.txt
$od –bc myfile.txt
- Conversion of this file to UNIX is just a simple matter of removing the \r. We can also convert UNIX file to DOS format by using unix2dos command
-
$unix2dos myfile.txt
$od –bc myfile.txt
- After Conversion of this file to DOS, \r is added in DOS file.
dos2unix and unix2dos commands – FAQs
What are dos2unix and unix2dos commands used for?
The dos2unix
and unix2dos
commands are utilities used to convert plain text files between DOS (or Windows) and Unix line endings. The DOS/Windows text files typically end with a carriage return followed by a line feed (CRLF, represented as \r\n
), while Unix text files end with a single line feed (LF, represented as \n
). These tools ensure compatibility of text files across different operating systems.
How to convert a text file from DOS to Unix format using dos2unix?
To convert a text file from DOS to Unix format, effectively removing the carriage return (\r
) character, use the dos2unix
command followed by the filename. For example:
unix2dos filename.txt
This command will convert filename.txt
from DOS to Unix format, updating the file in-place to use the correct Unix line endings.
How to convert a text file from Unix to DOS format using unix2dos?
To convert a text file from Unix to DOS format, which adds a carriage return before each line feed, use the unix2dos
command:
unix2dos filename.txt
This will update filename.txt
so that its line endings are compatible with DOS/Windows environments, adding \r
(carriage return) before each \n
(line feed).
Can dos2unix and unix2dos handle multiple files at once?
Yes, both dos2unix
and unix2dos
can handle multiple files at once. You can specify multiple filenames as arguments or use shell wildcards to select groups of files. For example:
dos2unix file1.txt file2.txt file3.txt
Or using wildcards:
dos2unix *.txt
These commands will convert all specified .txt
files from DOS to Unix format.
What are the typical issues solved by dos2unix and unix2dos?
Using dos2unix
and unix2dos
can solve a variety of issues related to the compatibility of text files between Unix-like and DOS/Windows systems, such as:
- Version Control Systems: When text files with mixed line endings are checked into a version control system (e.g., Git), it can lead to messy diffs and misleading changesets where it appears that entire files have changed due to differences in line endings.
- Script Execution: Scripts with DOS line endings may fail to execute correctly in Unix/Linux environments because the extra carriage return is interpreted as part of the command.
- Tool Compatibility: Some Unix tools may output or expect input with specific line endings, leading to errors or unexpected behavior when fed files with the wrong type of line endings.
- File Display: Files with incorrect line endings might not display correctly in some editors or command-line tools, showing extra characters or not properly breaking lines.