d773316bfffae62908e3619600628096a06c57bc
[platform/upstream/dos2unix.git] / man / man1 / dos2unix.txt
1 NAME
2     dos2unix - DOS/Mac to Unix and vice versa text file format converter
3
4 SYNOPSIS
5         dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
6         unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]
7
8 DESCRIPTION
9     The Dos2unix package includes utilities "dos2unix" and "unix2dos" to
10     convert plain text files in DOS or Mac format to Unix format and vice
11     versa.
12
13     In DOS/Windows text files a line break, also known as newline, is a
14     combination of two characters: a Carriage Return (CR) followed by a Line
15     Feed (LF). In Unix text files a line break is a single character: the
16     Line Feed (LF). In Mac text files, prior to Mac OS X, a line break was
17     single Carriage Return (CR) character. Nowadays Mac OS uses Unix style
18     (LF) line breaks.
19
20     Besides line breaks Dos2unix can also convert the encoding of files. A
21     few DOS code pages can be converted to Unix Latin-1. And Windows Unicode
22     (UTF-16) files can be converted to Unix Unicode (UTF-8) files.
23
24     Binary files are automatically skipped, unless conversion is forced.
25
26     Non-regular files, such as directories and FIFOs, are automatically
27     skipped.
28
29     Symbolic links and their targets are by default kept untouched. Symbolic
30     links can optionally be replaced, or the output can be written to the
31     symbolic link target. Writing to a symbolic link target is not supported
32     on Windows.
33
34     Dos2unix was modelled after dos2unix under SunOS/Solaris. There is one
35     important difference with the original SunOS/Solaris version. This
36     version does by default in-place conversion (old file mode), while the
37     original SunOS/Solaris version only supports paired conversion (new file
38     mode). See also options "-o" and "-n".
39
40 OPTIONS
41     --  Treat all following options as file names. Use this option if you
42         want to convert files whose names start with a dash. For instance to
43         convert a file named "-foo", you can use this command:
44
45             dos2unix -- -foo
46
47         Or in new file mode:
48
49             dos2unix -n -- -foo out.txt
50
51     -ascii
52         Convert only line breaks. This is the default conversion mode.
53
54     -iso
55         Conversion between DOS and ISO-8859-1 character set. See also
56         section CONVERSION MODES.
57
58     -1252
59         Use Windows code page 1252 (Western European).
60
61     -437
62         Use DOS code page 437 (US). This is the default code page used for
63         ISO conversion.
64
65     -850
66         Use DOS code page 850 (Western European).
67
68     -860
69         Use DOS code page 860 (Portuguese).
70
71     -863
72         Use DOS code page 863 (French Canadian).
73
74     -865
75         Use DOS code page 865 (Nordic).
76
77     -7  Convert 8 bit characters to 7 bit space.
78
79     -b, --keep-bom
80         Keep Byte Order Mark (BOM). When the input file has a BOM, write a
81         BOM in the output file. This is the default behavior when converting
82         to DOS line breaks. See also option "-r".
83
84     -c, --convmode CONVMODE
85         Set conversion mode. Where CONVMODE is one of: *ascii*, *7bit*,
86         *iso*, *mac* with ascii being the default.
87
88     -f, --force
89         Force conversion of binary files.
90
91     -gb, --gb18030
92         On Windows UTF-16 files are by default converted to UTF-8,
93         regardless of the locale setting. Use this option to convert UTF-16
94         files to GB18030. This option is only available on Windows. See also
95         section GB18030.
96
97     -h, --help
98         Display help and exit.
99
100     -i[FLAGS], --info[=FLAGS] FILE ...
101         Display file information. No conversion is done.
102
103         The following information is printed, in this order: number of DOS
104         line breaks, number of Unix line breaks, number of Mac line breaks,
105         byte order mark, text or binary, file name.
106
107         Example output:
108
109              6       0       0  no_bom    text    dos.txt
110              0       6       0  no_bom    text    unix.txt
111              0       0       6  no_bom    text    mac.txt
112              6       6       6  no_bom    text    mixed.txt
113             50       0       0  UTF-16LE  text    utf16le.txt
114              0      50       0  no_bom    text    utf8unix.txt
115             50       0       0  UTF-8     text    utf8dos.txt
116              2     418     219  no_bom    binary  dos2unix.exe
117
118         Optionally extra flags can be set to change the output. One or more
119         flags can be added.
120
121         d   Print number of DOS line breaks.
122
123         u   Print number of Unix line breaks.
124
125         m   Print number of Mac line breaks.
126
127         b   Print the byte order mark.
128
129         t   Print if file is text or binary.
130
131         c   Print only the files that would be converted.
132
133             With the "c" flag dos2unix will print only the files that
134             contain DOS line breaks, unix2dos will print only file names
135             that have Unix line breaks.
136
137         Examples:
138
139         Show information for all *.txt files:
140
141             dos2unix -i *.txt
142
143         Show only the number of DOS line breaks and Unix line breaks:
144
145             dos2unix -idu *.txt
146
147         Show only the byte order mark:
148
149             dos2unix --info=b *.txt
150
151         List the files that have DOS line breaks:
152
153             dos2unix -ic *.txt
154
155         List the files that have Unix line breaks:
156
157             unix2dos -ic *.txt
158
159     -k, --keepdate
160         Keep the date stamp of output file same as input file.
161
162     -L, --license
163         Display program's license.
164
165     -l, --newline
166         Add additional newline.
167
168         dos2unix: Only DOS line breaks are changed to two Unix line breaks.
169         In Mac mode only Mac line breaks are changed to two Unix line
170         breaks.
171
172         unix2dos: Only Unix line breaks are changed to two DOS line breaks.
173         In Mac mode Unix line breaks are changed to two Mac line breaks.
174
175     -m, --add-bom
176         Write a Byte Order Mark (BOM) in the output file. By default an
177         UTF-8 BOM is written.
178
179         When the input file is UTF-16, and the option "-u" is used, an
180         UTF-16 BOM will be written.
181
182         Never use this option when the output encoding is other than UTF-8
183         or UTF-16. See also section UNICODE.
184
185     -n, --newfile INFILE OUTFILE ...
186         New file mode. Convert file INFILE and write output to file OUTFILE.
187         File names must be given in pairs and wildcard names should *not* be
188         used or you *will* lose your files.
189
190         The person who starts the conversion in new file (paired) mode will
191         be the owner of the converted file. The read/write permissions of
192         the new file will be the permissions of the original file minus the
193         umask(1) of the person who runs the conversion.
194
195     -o, --oldfile FILE ...
196         Old file mode. Convert file FILE and overwrite output to it. The
197         program defaults to run in this mode. Wildcard names may be used.
198
199         In old file (in-place) mode the converted file gets the same owner,
200         group, and read/write permissions as the original file. Also when
201         the file is converted by another user who has write permissions on
202         the file (e.g. user root). The conversion will be aborted when it is
203         not possible to preserve the original values. Change of owner could
204         mean that the original owner is not able to read the file any more.
205         Change of group could be a security risk, the file could be made
206         readable for persons for whom it is not intended. Preservation of
207         owner, group, and read/write permissions is only supported on Unix.
208
209     -q, --quiet
210         Quiet mode. Suppress all warnings and messages. The return value is
211         zero. Except when wrong command-line options are used.
212
213     -r, --remove-bom
214         Remove Byte Order Mark (BOM). Do not write a BOM in the output file.
215         This is the default behavior when converting to Unix line breaks.
216         See also option "-b".
217
218     -s, --safe
219         Skip binary files (default).
220
221     -u, --keep-utf16
222         Keep the original UTF-16 encoding of the input file. The output file
223         will be written in the same UTF-16 encoding, little or big endian,
224         as the input file. This prevents transformation to UTF-8. An UTF-16
225         BOM will be written accordingly. This option can be disabled with
226         the "-ascii" option.
227
228     -ul, --assume-utf16le
229         Assume that the input file format is UTF-16LE.
230
231         When there is a Byte Order Mark in the input file the BOM has
232         priority over this option.
233
234         When you made a wrong assumption (the input file was not in UTF-16LE
235         format) and the conversion succeeded, you will get an UTF-8 output
236         file with wrong text. You can undo the wrong conversion with
237         iconv(1) by converting the UTF-8 output file back to UTF-16LE. This
238         will bring back the original file.
239
240         The assumption of UTF-16LE works as a *conversion mode*. By
241         switching to the default *ascii* mode the UTF-16LE assumption is
242         turned off.
243
244     -ub, --assume-utf16be
245         Assume that the input file format is UTF-16BE.
246
247         This option works the same as option "-ul".
248
249     -v, --verbose
250         Display verbose messages. Extra information is displayed about Byte
251         Order Marks and the amount of converted line breaks.
252
253     -F, --follow-symlink
254         Follow symbolic links and convert the targets.
255
256     -R, --replace-symlink
257         Replace symbolic links with converted files (original target files
258         remain unchanged).
259
260     -S, --skip-symlink
261         Keep symbolic links and targets unchanged (default).
262
263     -V, --version
264         Display version information and exit.
265
266 MAC MODE
267     In normal mode line breaks are converted from DOS to Unix and vice
268     versa. Mac line breaks are not converted.
269
270     In Mac mode line breaks are converted from Mac to Unix and vice versa.
271     DOS line breaks are not changed.
272
273     To run in Mac mode use the command-line option "-c mac" or use the
274     commands "mac2unix" or "unix2mac".
275
276 CONVERSION MODES
277     ascii
278         In mode "ascii" only line breaks are converted. This is the default
279         conversion mode.
280
281         Although the name of this mode is ASCII, which is a 7 bit standard,
282         the actual mode is 8 bit. Use always this mode when converting
283         Unicode UTF-8 files.
284
285     7bit
286         In this mode all 8 bit non-ASCII characters (with values from 128 to
287         255) are converted to a 7 bit space.
288
289     iso Characters are converted between a DOS character set (code page) and
290         ISO character set ISO-8859-1 (Latin-1) on Unix. DOS characters
291         without ISO-8859-1 equivalent, for which conversion is not possible,
292         are converted to a dot. The same counts for ISO-8859-1 characters
293         without DOS counterpart.
294
295         When only option "-iso" is used dos2unix will try to determine the
296         active code page. When this is not possible dos2unix will use
297         default code page CP437, which is mainly used in the USA. To force a
298         specific code page use options -437 (US), -850 (Western European),
299         -860 (Portuguese), -863 (French Canadian), or -865 (Nordic). Windows
300         code page CP1252 (Western European) is also supported with option
301         -1252. For other code pages use dos2unix in combination with
302         iconv(1). Iconv can convert between a long list of character
303         encodings.
304
305         Never use ISO conversion on Unicode text files. It will corrupt
306         UTF-8 encoded files.
307
308         Some examples:
309
310         Convert from DOS default code page to Unix Latin-1:
311
312             dos2unix -iso -n in.txt out.txt
313
314         Convert from DOS CP850 to Unix Latin-1:
315
316             dos2unix -850 -n in.txt out.txt
317
318         Convert from Windows CP1252 to Unix Latin-1:
319
320             dos2unix -1252 -n in.txt out.txt
321
322         Convert from Windows CP1252 to Unix UTF-8 (Unicode):
323
324             iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt
325
326         Convert from Unix Latin-1 to DOS default code page:
327
328             unix2dos -iso -n in.txt out.txt
329
330         Convert from Unix Latin-1 to DOS CP850:
331
332             unix2dos -850 -n in.txt out.txt
333
334         Convert from Unix Latin-1 to Windows CP1252:
335
336             unix2dos -1252 -n in.txt out.txt
337
338         Convert from Unix UTF-8 (Unicode) to Windows CP1252:
339
340             unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt
341
342         See also <http://czyborra.com/charsets/codepages.html> and
343         <http://czyborra.com/charsets/iso8859.html>.
344
345 UNICODE
346   Encodings
347     There exist different Unicode encodings. On Unix and Linux Unicode files
348     are typically encoded in UTF-8 encoding. On Windows Unicode text files
349     can be encoded in UTF-8, UTF-16, or UTF-16 big endian, but are mostly
350     encoded in UTF-16 format.
351
352   Conversion
353     Unicode text files can have DOS, Unix or Mac line breaks, like regular
354     text files.
355
356     All versions of dos2unix and unix2dos can convert UTF-8 encoded files,
357     because UTF-8 was designed for backward compatibility with ASCII.
358
359     Dos2unix and unix2dos with Unicode UTF-16 support, can read little and
360     big endian UTF-16 encoded text files. To see if dos2unix was built with
361     UTF-16 support type "dos2unix -V".
362
363     On Unix/Linux UTF-16 encoded files are converted to the locale character
364     encoding. Use the locale(1) command to find out what the locale
365     character encoding is. When conversion is not possible a conversion
366     error will occur and the file will be skipped.
367
368     On Windows UTF-16 files are by default converted to UTF-8. UTF-8
369     formatted text files are well supported on both Windows and Unix/Linux.
370
371     UTF-16 and UTF-8 encoding are fully compatible, there will no text be
372     lost in the conversion. When an UTF-16 to UTF-8 conversion error occurs,
373     for instance when the UTF-16 input file contains an error, the file will
374     be skipped.
375
376     When option "-u" is used, the output file will be written in the same
377     UTF-16 encoding as the input file. Option "-u" prevents conversion to
378     UTF-8.
379
380     Dos2unix and unix2dos have no option to convert UTF-8 files to UTF-16.
381
382     ISO and 7-bit mode conversion do not work on UTF-16 files.
383
384   Byte Order Mark
385     On Windows Unicode text files typically have a Byte Order Mark (BOM),
386     because many Windows programs (including Notepad) add BOMs by default.
387     See also <http://en.wikipedia.org/wiki/Byte_order_mark>.
388
389     On Unix Unicode files typically don't have a BOM. It is assumed that
390     text files are encoded in the locale character encoding.
391
392     Dos2unix can only detect if a file is in UTF-16 format if the file has a
393     BOM. When an UTF-16 file doesn't have a BOM, dos2unix will see the file
394     as a binary file.
395
396     Use option "-ul" or "-ub" to convert an UTF-16 file without BOM.
397
398     Dos2unix writes by default no BOM in the output file. With option "-b"
399     Dos2unix writes a BOM when the input file has a BOM.
400
401     Unix2dos writes by default a BOM in the output file when the input file
402     has a BOM. Use option "-r" to remove the BOM.
403
404     Dos2unix and unix2dos write always a BOM when option "-m" is used.
405
406   Unicode examples
407     Convert from Windows UTF-16 (with BOM) to Unix UTF-8:
408
409         dos2unix -n in.txt out.txt
410
411     Convert from Windows UTF-16LE (without BOM) to Unix UTF-8:
412
413         dos2unix -ul -n in.txt out.txt
414
415     Convert from Unix UTF-8 to Windows UTF-8 with BOM:
416
417         unix2dos -m -n in.txt out.txt
418
419     Convert from Unix UTF-8 to Windows UTF-16:
420
421         unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt
422
423 GB18030
424     GB18030 is a Chinese government standard. A mandatory subset of the
425     GB18030 standard is officially required for all software products sold
426     in China. See also <http://en.wikipedia.org/wiki/GB_18030>.
427
428     GB18030 is fully compatible with Unicode, and can be considered an
429     unicode transformation format. Like UTF-8, GB18030 is compatible with
430     ASCII. GB18030 is also compatible with Windows code page 936, also known
431     as GBK.
432
433     On Unix/Linux UTF-16 files are converted to GB18030 when the locale
434     encoding is set to GB18030. Note that this will only work if the
435     location is set to China. E.g. in an English British locale setting
436     "en_GB.GB18030" conversion of UTF-16 to GB18030 will not work, but in a
437     Chinese "zh_CN.GB18030" locale setting it will work.
438
439     On Windows you need to use option "-gb" to convert UTF-16 files to
440     GB18030.
441
442     GB18030 encoded files can have a Byte Order Mark, like Unicode files.
443
444 EXAMPLES
445     Read input from 'stdin' and write output to 'stdout':
446
447         dos2unix
448         dos2unix -l -c mac
449
450     Convert and replace a.txt. Convert and replace b.txt:
451
452         dos2unix a.txt b.txt
453         dos2unix -o a.txt b.txt
454
455     Convert and replace a.txt in ascii conversion mode:
456
457         dos2unix a.txt
458
459     Convert and replace a.txt in ascii conversion mode, convert and replace
460     b.txt in 7bit conversion mode:
461
462         dos2unix a.txt -c 7bit b.txt
463         dos2unix -c ascii a.txt -c 7bit b.txt
464         dos2unix -ascii a.txt -7 b.txt
465
466     Convert a.txt from Mac to Unix format:
467
468         dos2unix -c mac a.txt
469         mac2unix a.txt
470
471     Convert a.txt from Unix to Mac format:
472
473         unix2dos -c mac a.txt
474         unix2mac a.txt
475
476     Convert and replace a.txt while keeping original date stamp:
477
478         dos2unix -k a.txt
479         dos2unix -k -o a.txt
480
481     Convert a.txt and write to e.txt:
482
483         dos2unix -n a.txt e.txt
484
485     Convert a.txt and write to e.txt, keep date stamp of e.txt same as
486     a.txt:
487
488         dos2unix -k -n a.txt e.txt
489
490     Convert and replace a.txt, convert b.txt and write to e.txt:
491
492         dos2unix a.txt -n b.txt e.txt
493         dos2unix -o a.txt -n b.txt e.txt
494
495     Convert c.txt and write to e.txt, convert and replace a.txt, convert and
496     replace b.txt, convert d.txt and write to f.txt:
497
498         dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt
499
500 RECURSIVE CONVERSION
501     Use dos2unix in combination with the find(1) and xargs(1) commands to
502     recursively convert text files in a directory tree structure. For
503     instance to convert all .txt files in the directory tree under the
504     current directory type:
505
506         find . -name *.txt |xargs dos2unix
507
508 LOCALIZATION
509     LANG
510         The primary language is selected with the environment variable LANG.
511         The LANG variable consists out of several parts. The first part is
512         in small letters the language code. The second is optional and is
513         the country code in capital letters, preceded with an underscore.
514         There is also an optional third part: character encoding, preceded
515         with a dot. A few examples for POSIX standard type shells:
516
517             export LANG=nl               Dutch
518             export LANG=nl_NL            Dutch, The Netherlands
519             export LANG=nl_BE            Dutch, Belgium
520             export LANG=es_ES            Spanish, Spain
521             export LANG=es_MX            Spanish, Mexico
522             export LANG=en_US.iso88591   English, USA, Latin-1 encoding
523             export LANG=en_GB.UTF-8      English, UK, UTF-8 encoding
524
525         For a complete list of language and country codes see the gettext
526         manual:
527         <http://www.gnu.org/software/gettext/manual/html_node/Usual-Language
528         -Codes.html>
529
530         On Unix systems you can use the command locale(1) to get locale
531         specific information.
532
533     LANGUAGE
534         With the LANGUAGE environment variable you can specify a priority
535         list of languages, separated by colons. Dos2unix gives preference to
536         LANGUAGE over LANG. For instance, first Dutch and then German:
537         "LANGUAGE=nl:de". You have to first enable localization, by setting
538         LANG (or LC_ALL) to a value other than "C", before you can use a
539         language priority list through the LANGUAGE variable. See also the
540         gettext manual:
541         <http://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-v
542         ariable.html>
543
544         If you select a language which is not available you will get the
545         standard English messages.
546
547     DOS2UNIX_LOCALEDIR
548         With the environment variable DOS2UNIX_LOCALEDIR the LOCALEDIR set
549         during compilation can be overruled. LOCALEDIR is used to find the
550         language files. The GNU default value is "/usr/local/share/locale".
551         Option --version will display the LOCALEDIR that is used.
552
553         Example (POSIX shell):
554
555             export DOS2UNIX_LOCALEDIR=$HOME/share/locale
556
557 RETURN VALUE
558     On success, zero is returned. When a system error occurs the last system
559     error will be returned. For other errors 1 is returned.
560
561     The return value is always zero in quiet mode, except when wrong
562     command-line options are used.
563
564 STANDARDS
565     <http://en.wikipedia.org/wiki/Text_file>
566
567     <http://en.wikipedia.org/wiki/Carriage_return>
568
569     <http://en.wikipedia.org/wiki/Newline>
570
571     <http://en.wikipedia.org/wiki/Unicode>
572
573 AUTHORS
574     Benjamin Lin - <blin@socs.uts.edu.au>, Bernd Johannes Wuebben (mac2unix
575     mode) - <wuebben@kde.org>, Christian Wurll (add extra newline) -
576     <wurll@ira.uka.de>, Erwin Waterlander - <waterlan@xs4all.nl>
577     (maintainer)
578
579     Project page: <http://waterlan.home.xs4all.nl/dos2unix.html>
580
581     SourceForge page: <http://sourceforge.net/projects/dos2unix/>
582
583 SEE ALSO
584     file(1) find(1) iconv(1) locale(1) xargs(1)
585