2 # Copyright and License
4 # Copyright (C) 2009-2012 Erwin Waterlander
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice in the documentation and/or other materials provided with
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
17 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
22 # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 # To learn what TOP LEVEL section to use in manual pages,
31 # see POSIX/Susv standard and "Utility Description Defaults" at
32 # http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11
34 # This is manual page in Perl POD format. Read more at
35 # http://perldoc.perl.org/perlpod.html or run command:
37 # perldoc perlpod | less
39 # To check the syntax:
43 # Create manual page with command:
45 # pod2man PAGE.N.pod > PAGE.N
51 dos2unix - DOS/Mac naar Unix en vice versa tekstbestand formaat omzetter
55 dos2unix [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...]
56 unix2dos [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...]
60 Het Dos2unix pakket bevat toepassingen C<dos2unix> en C<unix2dos> om
61 platte tekstbestanden in DOS of Mac formaat naar Unix om te zetten en
64 In DOS/Windows tekstbestanden bestaat een regeleinde uit een combinatie van
65 twee tekens: een 'Carriage Return' (CR) gevolgd door een 'Line Feed' (LF). In
66 Unix tekstbestanden bestaat een regeleinde uit een enkel 'Newline' teken die
67 gelijk is aan een DOS 'Line Feed' (LF) teken. In Mac tekst bestanden, voor Mac
68 OS X, bestaan regeleindes uit een enkel 'Carriage Return' teken. Mac OS X is
69 Unix gebaseerd en heeft dezelfde regeleindes als Unix.
71 Binaire bestanden worden automatisch overgeslagen, behalve als de omzetting
74 Niet-reguliere bestanden, zoals mappen en FIFOs, worden automatisch overgeslagen.
76 Symbolische koppelingen en hun doelen blijven standaard onaangeroerd.
77 Optioneel kunnen symbolische koppelingen worden vervangen, of de uitvoer
78 kan naar het doel van de symbolische koppeling worden geschreven.
79 Symbolische koppelingen op Windows worden niet ondersteund. Windows
80 symbolische koppelingen worden altijd vervangen, de doelen onaangeroerd
84 Dos2unix is gemodelleerd naar dos2unix onder SunOS/Solaris en heeft gelijke conversiemodi.
92 Behandel alle volgende opties als bestandsnamen. Gebruik deze optie
93 als je bestanden wil converteren wiens naam met een streepje begint.
94 Bijvoorbeeld, om een bestand genaamd "-foo" om te zetten, gebruik je
99 Of in nieuw-bestand-modus:
101 dos2unix -n -- -foo uit.txt
105 Converteer alleen regeleindes. Dit is de standaard conversiemodus.
109 Conversie tussen DOS en ISO-8859-1 lettertekenreeks. Zie ook paragraaf
114 Gebruik Windows codetabel 1252 (West-Europees).
118 Gebruik DOS codetabel 437 (VS). Dit is de standaard codetabel die gebruikt wordt bij ISO conversie.
122 Gebruik DOS codetabel 850 (West-Europees).
126 Gebruik DOS codetabel 860 (Portugees).
130 Gebruik DOS codetabel 863 (Canadees Frans).
134 Gebruik DOS codetabel 865 (Scandinavisch).
138 Converteer 8 bit lettertekens naar 7 bit spatie.
140 =item B<-c, --convmode CONVMODUS>
142 Stel conversiemodus in. Waarbij CONVMODUS een is van:
143 I<ascii>, I<7bit>, I<iso>, I<mac>
144 met ascii als standaard instelling.
148 Forceer omzetting van binaire bestanden.
152 Laat help tekst zien.
154 =item B<-k, --keepdate>
156 Behoud de datum van het invoerbestand in het uitvoerbestand.
158 =item B<-L, --license>
160 Laat de software licentie zien.
162 =item B<-l, --newline>
164 Voeg een extra regeleinde toe.
166 B<dos2unix>: Alleen DOS regeleindes worden omgezet naar twee Unix regeleindes.
167 In Mac modus worden alleen Mac regeleindes omgezet naar twee Unix regeleindes.
169 B<unix2dos>: Aleen Unix regeleindes worden omgezet naar twee DOS regeleindes.
170 In Mac modus worden Unix regeleindes omgezet naar twee Mac regeleindes.
172 =item B<-m, --add-bom>
174 Schrijf een UTF-8 Byte Order Mark in het uitvoerbestand. Gebruik deze optie
175 nooit als de codering het van uitvoerbestand geen UTF-8 is. Zie ook paragraaf
178 =item B<-n, --newfile INVOERBESTAND UITVOERBESTAND ...>
180 Nieuw-bestand-modus. Converteer bestand INVOERBESTAND en schrijf naar bestand
181 UITVOERBESTAND. Bestandsnamen moeten opgegeven worden in paren. Jokertekens
182 moeten NIET gebruikt worden, anders verlies je bestanden.
184 =item B<-o, --oldfile BESTAND ...>
186 Oud-bestand-modus. Converteer bestand BESTAND en overschrijf het.
187 Dit is de standaard modus. Jokertekens kunnen gebruikt worden.
191 Stille werking. Onderdruk alle waarschuwingen. De teruggave waarde is nul.
192 Behalve wanneer verkeerde opties worden gegeven.
196 Sla binaire bestanden over (standaard).
198 =item B<-F, --follow-symlink>
200 Volg symbolische koppelingen en coverteer de doelen.
202 =item B<-R, --replace-symlink>
204 Vervang symbolische koppelingen door geconverteerde bestanden
205 (originele doelbestanden blijven ongewijzigd).
207 =item B<-S, --skip-symlink>
209 Laat symbolische koppelingen en doelen ongewijzigd (standaard).
211 =item B<-V, --version>
213 Laat versie informatie zien.
219 In normale modus worden DOS regeleindes naar Unix omgezet en vice versa. Mac regeleindes worden niet omgezet.
221 In Mac modus worden Mac regeleindes naar Unix omgezet en vice versa. DOS regeleindes blijven ongewijzigd.
223 Om in Mac modus te draaien gebruik de schakeloptie C<-c mac> of gebruik de opdrachten C<mac2unix> of C<unix2mac>.
227 Conversie-modi I<ascii>, I<7bit>, en I<iso>
228 zijn gelijk aan die van dos2unix/unix2dos onder SunOS/Solaris.
234 In modus C<ascii> worden alleen regeleindes omgezet. Dit is de standaard modus.
236 Hoewel de naam van deze modus ASCII is, wat een 7 bit standaard is, is de
237 werkelijke modus 8 bit. Gebruik altijd deze modus wanneer u Unicode UTF-8
242 Alle 8 bit niet-ASCII lettertekens (met waardes van 128 t/m 255) worden
243 omgezet naar een 7 bit spatie.
247 Lettertekens worden omgezet tussen een DOS lettertekenreeks (codetabel) en ISO
248 lettertekenreeks ISO-8859-1 op Unix. DOS lettertekens zonder gelijkwaardig
249 ISO-8859-1 teken, waarvoor geen omzetting mogelijk is, worden omgezet in een
250 punt. Het zelfde geldt voor ISO-8859-1 tekens zonder DOS tegenhanger.
252 Wanneer alleen optie C<-iso> gebruikt wordt, zal dos2unix proberen de actieve
253 codetabel te gebruiken. Als dat niet mogelijk is wordt codetabel CP437
254 gebruikt, die met name in de VS gebruikt word. Om een bepaalde codetabel te
255 forceren gebruik opties C<-850> (West-Europees), C<-860> (Portugees), C<-863>
256 (Canadees Frans) of C<-865> (Scandinavisch). Windows codetabel CP1252
257 (West-Europees) wordt ook ondersteund met optie C<-1252>. Gebruik voor andere
258 codetabellen dos2unix in combinatie met iconv(1). Iconv kan omzetten tussen een
259 lange lijst letterteken-coderingen.
261 Gebruik ISO conversie nooit op Unicode tekst bestanden. Het zal UTF-8
262 gecodeerde bestanden verminken.
266 Omzetten van DOS standaard codetabel naar Unix Latin-1
268 dos2unix -iso -n in.txt uit.txt
270 Omzetten van DOS CP850 naar Unix Latin-1
272 dos2unix -850 -n in.txt uit.txt
274 Omzetten van Windows CP1252 naar Unix Latin-1
276 dos2unix -1252 -n in.txt uit.txt
278 Omzetten van Windows CP1252 naar Unix UTF-8 (Unicode)
280 iconv -f CP1252 -t UTF-8 in.txt | dos2unix > uit.txt
282 Omzetten van Unix Latin-1 naar DOS standaard code tabel
284 unix2dos -iso -n in.txt uit.txt
286 Omzetten van Unix Latin-1 naar DOS CP850
288 unix2dos -850 -n in.txt uit.txt
290 Omzetten van Unix Latin-1 naar Windows CP1252
292 unix2dos -1252 -n in.txt uit.txt
294 Omzetten van Unix UTF-8 (Unicode) naar Windows CP1252
296 unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > uit.txt
298 Zie ook L<http://czyborra.com/charsets/codepages.html>
299 en L<http://czyborra.com/charsets/iso8859.html>.
307 Er bestaan verschillende Unicode coderingen. Op Unix en Linux zijn Unicode
308 bestanden typisch gecodeerd in UTF-8. Op Windows kunnen Unicode tekst bestanden
309 gecodeerd zijn in UTF-8, UTF-16 of UTF-16 big endian, maar meestal zijn ze
310 gecodeerd in UTF-16 formaat.
314 Unicode tekst bestanden kunnen DOS, Unix of Mac regeleindes hebben, net
315 als reguliere tekst bestanden.
317 Alle versies van dos2unix en unix2dos kunnen UTF-8 gecodeerde bestanden
318 omzetten, want UTF-8 is ontworpen op compatibiliteit met ASCII.
320 Dos2unix en unix2dos met Unicode UTF-16 ondersteuning, kunnen little en big
321 endian UTF-16 gecodeerde tekst bestanden lezen. Om er achter te komen of
322 dos2unix gebouwd is met UTF-16 ondersteuning type C<dos2unix -V>.
324 De Windows versies van dos2unix en unix2dos converteren UTF-16 gecodeerde
325 bestanden altijd naar UTF-8 gecondeerde bestanden. Unix versies van
326 dos2unix/unix2dos zetten UTF-16 gecodeerde bestanden om naar de lokale
327 karakter codering als die gelijk is aan UTF-8. Gebruik de opdracht
328 locale(1) om uit te vinden wat de lokale karakter codering is.
330 Omdat UTF-8 geformateerde tekstbestanden zowel op Windows en Unix goed
331 ondersteund worden, hebben dos2unix en unix2dos geen optie om UTF-16 bestanden
332 te schrijven. Alle UTF-16 karakters kunnen worden omgezet naar UTF-8. De
333 omzetting van UTF-16 naar UTF-8 is verliesvrij. Op Unix worden UTF-16 bestanden
334 overgeslagen als de locale karakter codering ongelijk is aan UTF-8, om te
335 voorkomen dat er per ongeluk tekst verloren gaat. Wanneer een UTF-16 naar
336 UTF-8 conversiefout optreedt, bijvoorbeeld wanneer het UTF-16 invoerbestand
337 een fout bevat, wordt het bestand overgeslagen.
339 ISO en 7-bit conversie werkt niet op UTF-16 bestanden.
341 =head2 Byte Order Mark
343 Op Windows hebben Unicode tekstbestanden typisch een Byte Order Mark (BOM),
344 omdat veel Windows programma's (inclusief Kladblok) standaard een BOM
345 toevoegen. Zie ook L<http://en.wikipedia.org/wiki/Byte_order_mark>.
347 Op Unix hebben Unicode tekstbestanden typisch geen BOM. Er wordt aangenomen
348 dat de codering van tekstbestanden gelijk is aan de lokale karakter
351 Dos2unix kan alleen detecteren of een bestand in UTF-16 formaat is als het
352 bestand een BOM heeft. Wanneer een UTF-16 bestand geen BOM heeft, ziet
353 dos2unix het bestand als een binair bestand.
355 Gebruik dos2unix in combinatie met iconv(1) om een UTF-16 bestand zonder BOM om
358 Dos2unix schrijft nooit een BOM in het uitvoerbestand, tenzij optie C<-m>
361 Unix2dos schrijft een BOM in het uitvoerbestand wanneer het invoerbestand
362 een BOM heeft, of wanneer optie C<-m> gebruikt is.
364 =head2 Unicode voorbeelden
366 Omzetten van Windows UTF-16 (met BOM) naar Unix UTF-8
368 dos2unix -n in.txt uit.txt
370 Omzetten van Windows UTF-16 (zonder BOM) naar Unix UTF-8
372 iconv -f UTF-16 -t UTF-8 in.txt | dos2unix > uit.txt
374 Omzetten van Unix UTF-8 naar Windows UTF-8 met BOM
376 unix2dos -m -n in.txt uit.txt
378 Omzetten van Unix UTF-8 naar Windows UTF-16
380 unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > uit.txt
384 Lees invoer van 'stdin' en schrijf uitvoer naar 'stdout'.
389 Omzetten en vervangen a.txt. Omzetten en vervangen b.txt.
392 dos2unix -o a.txt b.txt
394 Omzetten en vervangen a.txt in ascii conversiemodus.
398 Omzetten en vervangen a.txt in ascii conversiemodus.
399 Omzetten en vervangen b.txt in 7bit conversiemodus.
401 dos2unix a.txt -c 7bit b.txt
402 dos2unix -c ascii a.txt -c 7bit b.txt
403 dos2unix -ascii a.txt -7 b.txt
405 Omzetten a.txt van Mac naar Unix format.
407 dos2unix -c mac a.txt
410 Omzetten a.txt van Unix naar Mac format.
412 unix2dos -c mac a.txt
415 Omzetten en vervangen a.txt met behoud van originele datum.
420 Omzetten a.txt en schrijf naar e.txt.
422 dos2unix -n a.txt e.txt
424 Omzetten a.txt en schrijf naar e.txt, behoud datum e.txt gelijk aan a.txt.
426 dos2unix -k -n a.txt e.txt
428 Omzetten en vervangen a.txt. Omzetten b.txt en schrijf naar e.txt.
430 dos2unix a.txt -n b.txt e.txt
431 dos2unix -o a.txt -n b.txt e.txt
433 Omzetten c.txt en schrijf naar e.txt. Omzetten en vervangen a.txt.
434 Omzetten en vervangen b.txt. Omzetten d.txt en schrijf naar f.txt.
436 dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt
438 =head1 RECURSIEVE CONVERSIE
440 Gebruik dos2unix in combinatie met de find(1) en xargs(1) opdrachten om
441 tekstbestanden in een directoryboomstructuur recursief om te zetten.
442 Bijvoorbeeld om alle .txt bestanden in de directoryboom onder de huidige
443 map te converteren type:
445 find . -name *.txt |xargs dos2unix
453 The primaire taal wordt geselecteerd met de omgevingsvariabele LANG. De LANG
454 variabele bestaat uit verschillende onderdelen. Het eerste deel is in kleine
455 letters de taalcode. Het tweede deel is optioneel en is de landcode in
456 hoofdletters, voorafgegaan door een laag streepje. Er is ook een optioneel
457 derde deel: lettertekenreeks-codering, voorafgegaan door een punt. Enkele voorbeelden
458 voor een POSIX staandaard shell:
460 export LANG=nl Nederlands
461 export LANG=nl_NL Nederlands, Nederland
462 export LANG=nl_BE Nederlands, Belgiƫ
463 export LANG=es_ES Spaans, Spanje
464 export LANG=es_MX Spaans, Mexico
465 export LANG=en_US.iso88591 Engels, VS, Latin-1 codering
466 export LANG=en_GB.UTF-8 Engels, GB, UTF-8 codering
468 Voor een complete lijst van taal- en landcodes zie de gettext handleiding:
469 L<http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes>
471 Op Unix systemen kunt u de opdracht locale(1) gebruiken om specifieke
472 lokalisatie informatie te verkrijgen.
476 Met de omgevingsvariabele LANGUAGE kunt u een prioriteitenlijst specificeren
477 van talen, gescheiden door dubbele punten. Dos2unix geeft voorkeur aan
478 LANGUAGE boven LANG. Bijvoorbeeld, eerst Nederlands en dan Duits: C<LANGUAGE=nl:de>.
479 U moet eerst lokalisatie in werking stellen, met het instellen van LANG (of LC_ALL)
480 in een waarde ongelijk aan "C", voordat u een talen prioriteitenlijst kunt
481 gebruiken via de LANGUAGE variabele. Zie ook de gettext handleiding:
482 L<http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable>
484 Als u een taal kiest die niet beschikbaar is worden de standaard
485 Engelse berichten gebruikt.
487 =item B<DOS2UNIX_LOCALEDIR>
489 Met de omgevingsvariabele DOS2UNIX_LOCALEDIR kan de LOCALEDIR gebruikt tijdens
490 compilatie worden overstemd. LOCALEDIR wordt gebruikt om de taalbestanden te
491 vinden. De GNU staandaard waarde is C</usr/local/share/locale>. De optie "-V"
492 laat de gebruikte LOCALEDIR zien.
494 Voorbeeld (POSIX shell):
496 export DOS2UNIX_LOCALEDIR=$HOME/share/locale
500 =head1 TERUGGAVE WAARDE
502 Bij succes wordt nul terug gegeven. Wanneer een systeemfout optreedt wordt
503 het laatste systeemfoutnummer terug gegeven. Bij andere fouten wordt 1 terug gegeven.
505 De teruggave is altijd nul in de modus stille werking, behalve wanneer verkeerde
506 opties worden gegeven.
510 L<http://nl.wikipedia.org/wiki/Tekstbestand>
512 L<http://nl.wikipedia.org/wiki/Carriage_Return>
514 L<http://nl.wikipedia.org/wiki/Linefeed>
516 L<http://nl.wikipedia.org/wiki/Unicode>
520 Benjamin Lin - <blin@socs.uts.edu.au>,
521 Bernd Johannes Wuebben (mac2unix modus) - <wuebben@kde.org>,
522 Christian Wurll (voeg extra regeleinde toe) - <wurll@ira.uka.de>,
523 Erwin Waterlander - <waterlan@xs4all.nl>
525 Project pagina: L<http://waterlan.home.xs4all.nl/dos2unix.html>
527 SourceForge pagina: L<http://sourceforge.net/projects/dos2unix/>
529 Freshmeat: L<http://freshmeat.net/projects/dos2unix>