NAAM

dos2unix - omzetter van tekstbestandsindelingen, van DOS/Mac naar Unix en vice versa

OVERZICHT

dos2unix [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...]
unix2dos [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...]

BESCHRIJVING

Het Dos2unix pakket bevat de toepassingen dos2unix en unix2dos om platte tekstbestanden in DOS- of Mac-indeling naar Unix-indeling om te zetten, en vice versa.

In DOS/Windows-tekstbestanden bestaat een regeleinde uit een combinatie van twee tekens: een 'Carriage Return' (CR) gevolgd door een 'Line Feed' (LF). In Unix-tekstbestanden bestaat een regeleinde uit één enkel 'Newline'-teken, dat gelijk is aan een DOS 'Line Feed'-teken (LF). In Mac-tekstbestanden, van vóór Mac OS X, bestaan regeleindes uit één enkel 'Carriage Return'-teken. Mac OS X is op Unix gebaseerd en heeft dezelfde regeleindes als Unix.

Naast regeleindes kan Dos2unix ook de codering van bestanden converteren. Enkele DOS-codetabellen kunnen omgezet worden naar Unix Latin-1. En Windows Unicode-bestanden (UTF-16) kunnen geconverteerd worden naar Unix Unicode-bestanden (UTF-8).

Binaire bestanden worden automatisch overgeslagen, behalve als de omzetting geforceerd wordt.

Niet-reguliere bestanden, zoals mappen en FIFO's, worden automatisch overgeslagen.

Symbolische koppelingen en hun doelen blijven standaard onaangeroerd. Optioneel kunnen symbolische koppelingen worden vervangen, of de uitvoer kan naar het doel van de symbolische koppeling worden geschreven. Op Windows wordt het schrijven naar het doel van een symbolische koppeling niet ondersteund.

Dos2unix is gemodelleerd naar dos2unix op SunOS/Solaris, maar er is een belangrijk verschil: deze versie van dos2unix voert standaard een vervangende conversie uit (oud-bestand-modus) terwijl de oorspronkelijke SunOS/Solaris-versie alleen de gepaarde conversie (nieuw-bestand-modus) kent. Zie ook de opties -o en -n. Een ander verschil is dat de SunOS/Solaris-versie standaard een conversie in iso-modus doet terwijl deze versie standaard ascii-modus gebruikt.

OPTIES

--

Alle volgende opties als bestandsnamen behandelen. Gebruik deze optie als u een bestand wilt converteren waarvan de naam met een streepje begint. Bijvoorbeeld, om een bestand genaamd "-foo" om te zetten, gebruikt u de volgende opdracht:

dos2unix -- -foo

Of in nieuw-bestand-modus:

dos2unix -n -- -foo uit.txt
--allow-chown

Wijziging van bestandseigenaar toestaan in oud-bestand-modus.

Wanneer deze optie gebruikt wordt, zal de omzetting niet afgebroken worden wanneer het gebruikers- en/of groepseigendomsrecht van het originele bestand niet behouden kan worden in oud-bestand-modus. Omzetting zal doorgaan en het omgezette bestand krijgt dezelfde eigendomsrechten alsof het was omgezet in nieuw-bestand-modus. Zie ook opties -o en -n. Deze optie is alleen beschikbaar als dos2unix ondersteuning heeft voor het behouden van gebruikers- en groepseigendomsrechten van bestanden.

-ascii

Conversie tussen de tekensets DOS en ISO-8859-1. Zie ook de sectie CONVERSIEMODI.

-iso

Conversie tussen de tekensets DOS en ISO-8859-1. Zie ook de sectie CONVERSIEMODI.

-1252

Windows-codetabel 1252 (West-Europees) gebruiken.

-437

DOS-codetabel 437 (VS) gebruiken. Dit is de standaard codetabel die gebruikt wordt bij ISO-conversie.

-850

DOS-codetabel 850 (West-Europees) gebruiken.

-860

DOS-codetabel 860 (Portugees) gebruiken.

-863

DOS-codetabel 863 (Canadees Frans) gebruiken.

-865

DOS-codetabel 865 (Scandinavisch) gebruiken.

-7

Lettertekens met het achtste bit gezet converteren naar spaties.

-b, --keep-bom

Een Byte-Order-Mark (BOM) behouden. Als het invoerbestand een BOM bevat, dan wordt ook een BOM naar het uitvoerbestand geschreven. Dit is het standaardgedrag bij conversie naar DOS. Zie ook optie -r.

-c, --convmode CONVERSIEMODUS

De te gebruiken conversiemodus. CONVERSIEMODUS kan zijn: ascii, 7bit, iso, of mac, waarbij ascii de standaardinstelling is.

-D, --display-enc CODERING

De te gebruiken tekencodering voor weergegeven tekst. CODERING kan zijn: ansi, unicode, unicodebom, utf8, of utf8bom, waarbij ansi de standaardinstelling is.

Deze optie is alleen beschikbaar in dos2unix voor Windows met Unicode-bestandsnaam-ondersteuning. Deze optie heeft geen effect op de gelezen en geschreven bestandsnamen, maar alleen op hoe deze weergegeven worden.

Er zijn verscheidene methoden om tekst weer te geven in een Windows console gebaseerd op de codering van de tekst. Ze hebben allemaal hun eigen voor- en nadelen.

ansi

Dos2unix gebruikt standaard ANSI gecodeerde tekst. Het voordeel hiervan is dat het achterwaarts compatibel is. Het werkt met raster en TrueType lettertypen. In sommige regio's moet je de actieve DOS OEM codepagina veranderen in de Windows systeem ANSI codepagina met het chcp commando, omdat dos2unix de Windows systeem codepagina gebruikt.

Het nadeel van ANSI is dat internationale bestandsnamen met letters buiten de standaard systeem code page niet goed worden weergegeven. U ziet in plaats daarvan een vraagteken of een verkeerd symbool. Wanneer u niet werkt met buitenlands bestandsnamen is de methode Oké.

unicode, unicodebom

Het voordeel van unicode (de Windows-naam voor UTF-16) codering is dat tekst meestal goed wordt weergegeven. Het is niet nodig om de actieve codepagina te wijzigen. Het kan nodig zijn om het lettertype van de console in te stellen op een TrueType-lettertype om internationale tekens goed weer te geven. Als een teken niet in het TrueType-lettertype is opgenomen, zie je meestal een klein vierkantje, soms met een vraagteken erin.

Wanneer je de ConEmu console gebruikt wordt alle tekst goed weergegeven, omdat ConEmu automatisch een goed lettertype selecteert.

Het nadeel van unicode is dat het niet compatibel is met ASCII. De uitvoer is niet eenvoudig te verwerken als je deze doorstuurt naar een ander programma.

Wanneer methode unicodebom wordt gebruikt, wordt de Unicode-tekst voorafgegaan door een BOM (Byte Order Mark). Een BOM is vereist voor correcte omleiding of piping in PowerShell.

utf8, utf8bom

Het voordeel van utf8 is dat het compatibel is met ASCII. Je moet het lettertype van de console instellen op een TrueType lettertype. Met een TrueType font wordt de tekst hetzelfde weergegeven als met de unicode codering.

Het nadeel is dat wanneer je het standaard raster lettertype gebruikt all niet-ASCII letters verkeerd worden weergegeven. Niet alleen unicode bestandsnamen, maar ook vertaalde berichten worden onleesbaar. Op Windows, ingesteld voor een Oost Aziatische regio, is het mogelijk dat je veel flikkering in de console ziet wanneer de berichten weergegeven worden.

In een ConEmu console werkt de utf8 codering goed.

Wanneer methode utf8bom wordt gebruikt, wordt de UTF-8-tekst voorafgegaan door een BOM (Byte Order Mark). Een BOM is vereist voor correcte omleiding of piping in PowerShell.

De standaard codering can gewijzigd worden met omgevingsvariabele DOS2UNIX_DISPLAY_ENC, door deze in te stellen op unicode, unicodebom, utf8, of utf8bom.

-e, --add-eol

Voeg een regeleinde toe aan de laatste regel als er nog geen is. Dit werkt voor alle conversies.

Een bestand dat is geconverteerd van DOS naar Unix-formaat kan een regeleinde op de laatste regel missen. Er zijn tekstbewerkers die tekstbestanden schrijven zonder een regeleinde op de laatste regel. Sommige Unix-programma's hebben problemen met het verwerken van deze bestanden, omdat de POSIX-standaard definieert dat elke regel in een tekstbestand moet eindigen met een afsluitend regeleindeteken. Het samenvoegen van bestanden kan bijvoorbeeld niet het verwachte resultaat opleveren.

-f, --force

Conversie van binaire bestanden afdwingen.

-gb, --gb18030

Op Windows worden UTF-16-bestanden standaard naar UTF-8 geconverteerd, ongeacht de ingestelde taalregio. Gebruik deze optie om UTF-16-bestanden naar GB18030 te converteren. Deze optie is alleen beschikbaar op Windows. Zie ook de sectie GB18030.

-h, --help

Een hulptekst tonen.

-i[VLAGGEN], --info[=VLAGGEN] BESTAND ...

Bestandsinformatie tonen. Er wordt niets geconverteerd.

De volgende informatie wordt weergegeven, in deze volgorde: het aantal DOS-regeleindes, het aantal Unix-regeleindes, het aantal Mac-regeleindes, de Byte-Order-Mark, of het een tekst- of binair bestand is, en de bestandsnaam.

Voorbeelduitvoer:

 6       0       0  no_bom    text    dos.txt
 0       6       0  no_bom    text    unix.txt
 0       0       6  no_bom    text    mac.txt
 6       6       6  no_bom    text    mixed.txt
50       0       0  UTF-16LE  text    utf16le.txt
 0      50       0  no_bom    text    utf8unix.txt
50       0       0  UTF-8     text    utf8dos.txt
 2     418     219  no_bom    binary  dos2unix.exe

Merk op dat een binair bestand soms voor een tekstbestand aangezien kan worden. Zie ook optie -s.

Als daarnaast optie -e of --add-eol wordt gebruikt, wordt ook het type regeleinde van de laatste regel afgedrukt, of noeol als er geen is.

Voorbeelduitvoer:

6       0       0  no_bom    text   dos     dos.txt
0       6       0  no_bom    text   unix    unix.txt
0       0       6  no_bom    text   mac     mac.txt
1       0       0  no_bom    text   noeol   noeol_dos.txt

Bij de optie kunnen één of meer vlaggen meegegeven worden om de uitvoer te beperken.

0

Druk de bestandsinformatieregels af gevolgd door een null-teken in plaats van een regeleinde-teken. Dit maakt correcte interpretatie van bestandsnamen met spaties of aanhalingstekens mogelijk wanneer vlag c wordt gebruikt. Gebruik deze vlag in combinatie met xargs(1) optie -0 of --null.

d

Het aantal DOS-regeleindes tonen.

u

Het aantal Unix-regeleindes tonen.

m

Het aantal Mac-regeleindes tonen.

b

De Byte-Order-Mark tonen.

t

Tonen of het bestand tekst is of binair.

e

Druk het type van het regeleinde-teken van de laatste regel af, of noeol als er geen regeleinde is.

c

Alleen de namen tonen van de bestanden die geconverteerd zouden worden.

Met de vlag c toont dos2unix alleen de bestanden die DOS-regeleindes bevatten, en unix2dos alleen de bestanden die Unix-regeleindes bevatten.

Als daarnaast optie -e of --add-eol wordt gebruikt, worden ook de bestanden afgedrukt waarbij de laatste regel geen regeleinde heeft.

h

Een kopregel printen.

p

Bestandsnamen tonen zonder pad.

Voorbeelden:

Informatie weergeven voor alle bestanden met de extensie 'txt':

dos2unix -i *.txt

Alleen de aantallen DOS-regeleindes en Unix-regeleindes tonen:

dos2unix -idu *.txt

Alleen de Byte-Order-Mark tonen:

dos2unix --info=b *.txt

De bestanden opsommen die DOS-regeleindes bevatten:

dos2unix -ic *.txt

De bestanden opsommen die Unix-regeleindes bevatten:

unix2dos -ic *.txt

De bestanden opsommen met DOS-regeleinden of met een ontbrekende regeleinde op de laatste regel:

dos2unix -e -ic *.txt

Alleen bestanden die DOS-regeleindes bevatten converteren en andere bestanden ongemoeid laten:

dos2unix -ic0 *.txt | xargs -0 dos2unix

De bestanden vinden die DOS-regeleindes bevatten:

find -name '*.txt' -print0 | xargs -0 dos2unix -ic
-k, --keepdate

Het tijdsstempel van het invoerbestand behouden voor het uitvoerbestand.

-L, --license

De softwarelicentie tonen.

-l, --newline

Een extra regeleinde toevoegen.

dos2unix: Alleen DOS-regeleindes worden omgezet naar twee Unix-regeleindes. In Mac-modus worden alleen Mac-regeleindes omgezet naar twee Unix-regeleindes.

unix2dos: Alleen Unix-regeleindes worden omgezet naar twee DOS-regeleindes. In Mac-modus worden Unix-regeleindes omgezet naar twee Mac-regeleindes.

-m, --add-bom

Een Byte-Order-Mark (BOM) naar het uitvoerbestand schrijven. Standaard wordt een UTF-8-BOM geschreven.

Als het invoerbestand in UTF-16 is, en de optie -u is gegeven, dan wordt een UTF-16-BOM geschreven.

Gebruik deze optie nooit als de codering van het uitvoerbestand niet UTF-8, UTF-16, of GB18030 is. Zie ook de sectie UNICODE.

-n, --newfile INVOERBESTAND UITVOERBESTAND ...

Nieuw-bestand-modus. Het bestand INVOERBESTAND converteren en naar bestand UITVOERBESTAND schrijven. Bestandsnamen moeten opgegeven worden in paren. Jokertekens moeten nietgebruikt worden, anders verlies je de bestanden.

De gebruiker die de conversie start in nieuw-bestand (gepaarde) modus wordt de eigenaar van het geconverteerde bestand. De lees/schrijf-toegangsrechten van het nieuwe bestand worden de toegangsrechten van het originele bestand minus de umask(1) van de gebruiker die de conversie draait.

--no-allow-chown

Wijziging van bestandseigenaar niet toestaan in oud-bestand-modus (standaard).

Conversie afbreken wanneer het gebruikers- en/of groepseigendomsrecht van het originele bestand niet behouden kan worden in de oud-bestand-modus. Zie ook opties -o en -n. Deze optie is alleen beschikbaar als dos2unix ondersteuning heeft voor het behouden van het gebruikers- en groepseigendomsrechten van bestanden.

--no-add-eol

Voeg geen regeleinde toe aan de laatste regel als er geen is.

-O, --to-stdout

Schrijf naar standaarduitvoer, zoals een Unix-filter. Gebruik optie -o om terug te gaan naar de oud-bestand-modus (vervangend).

Gecombineerd met optie -e kunnen bestanden correct worden samengevoegd. Geen samengevoegde laatste en eerste regels, en geen Unicode Byte-Order-Marks in het midden van het samengevoegde bestand. Voorbeeld:

dos2unix -e -O bestand1.txt bestand2.txt > uit.txt
-o, --oldfile BESTAND ...

Oud-bestand-modus. Het bestand BESTAND converteren en overschrijven. Dit is de standaard modus. Jokertekens kunnen gebruikt worden.

In oud-bestand (vervangende) modus krijgt het geconverteerde bestand dezelfde eigenaar, groep en lees/schrijf-rechten als het originele bestand. Ook wanneer het bestand wordt omgezet door een andere gebruiker die schrijfrechten heeft op het bestand (b.v. gebruiker root). De omzetting wordt afgebroken wanneer het niet mogelijk is de originele waardes te behouden. Verandering van eigenaar kan betekenen dat de originele eigenaar het bestand niet meer kan lezen. Verandering van groep zou een veiligheidsrisico kunnen zijn, het bestand zou leesbaar kunnen worden voor personen voor wie het niet bestemd is. Behoud van eigenaar, groep en lees/schrijf-rechten wordt alleen ondersteund op Unix.

Om te controleren of dos2unix ondersteuning heeft voor het behouden van de gebruiker en de groep van bestanden, typt u dos2unix -V.

Conversie wordt altijd uitgevoerd via een tijdelijk bestand. Wanneer er halverwege de conversie een fout optreedt, wordt het tijdelijke bestand verwijderd en blijft het originele bestand intact. Wanneer de conversie succesvol is, wordt het originele bestand vervangen door het tijdelijke bestand. U hebt mogelijk schrijfrechten op het originele bestand, maar geen rechten om dezelfde gebruikers- en/of groepseigendomseigenschappen op het tijdelijke bestand te plaatsen als het originele bestand. Dit betekent dat u de gebruikers- en/of groepseigendom van het originele bestand niet kunt behouden. In dit geval kunt u optie --allow-chown gebruiken om door te gaan met de conversie:

dos2unix --allow-chown foo.txt

Een andere mogelijkheid is het gebruiken van nieuw-bestand-modus:

dos2unix -n foo.txt foo.txt

Het voordeel van optie --allow-chown is dat u jokertekens kunt gebruiken, en dat dan de eigenaarseigenschappen waar mogelijk behouden zullen blijven.

-q, --quiet

Stille werking. Alle waarschuwingen onderdrukken. De afsluitwaarde is nul, behalve wanneer verkeerde opties worden gegeven.

-r, --remove-bom

Een Byte-Order-Mark (BOM) verwijderen. Er wordt geen BOM naar het uitvoerbestand geschreven. Dit is het standaardgedrag bij conversie naar Unix. Zie ook optie -b.

-s, --safe

Binaire bestanden overslaan (standaard).

Binaire bestanden worden overgeslagen om vergissingen te voorkomen. Het detecteren van binaire bestanden is echter niet 100% betrouwbaar. Invoerbestanden worden gescand op binaire tekens die gewoonlijk niet in tekstbestanden voorkomen. Maar het is mogelijk dat een binair bestand enkel normale teksttekens bevat. Zo'n binair bestand zal dan foutief als een tekstbestand gezien worden.

-u, --keep-utf16

De originele UTF-16-codering van het invoerbestand behouden. Het uitvoerbestand wordt in dezelfde UTF-16-codering (little endian of big endian) geschreven als het invoerbestand. Dit voorkomt conversie naar UTF-8. Er wordt ook een corresponderende UTF-16-BOM geschreven. Deze optie kan uitgeschakeld worden met de optie -ascii.

-ul, --assume-utf16le

Veronderstellen dat de indeling van het invoerbestand UTF-16LE is.

Wanneer het invoerbestand een Byte-Order-Mark (BOM) bevat, dan gaat deze BOM vóór deze optie.

Wanneer een verkeerde aanname is gemaakt (het invoerbestand was geen UTF-16LE) en de conversie verliep met succes, dan krijgt u een UTF-8-bestand met verkeerde tekst. De verkeerde conversie kan ongedaan worden gemaakt door met iconv(1) het UTF-8-uitvoerbestand terug om te zetten naar UTF-16LE. Dit zal het originele bestand terug brengen.

De aanname van UTF-16LE werkt als een conversiemodus. Door de standaardmodus ascii in te schakelen wordt de UTF-16LE-veronderstelling uitgeschakeld.

-ub, --assume-utf16be

Veronderstellen dat de indeling van het invoerbestand UTF-16BE is.

Deze optie werkt hetzelfde als optie -ul.

-v, --verbose

Extra meldingen weergeven. Er wordt extra informatie getoond over Byte-Order-Marks en het aantal geconverteerde regeleindes.

Symbolische koppelingen volgen en de doelen converteren.

Symbolische koppelingen vervangen door geconverteerde bestanden (de originele doelbestanden blijven ongewijzigd).

Symbolische koppelingen en doelen ongewijzigd laten (standaard).

-V, --version

Versie-informatie tonen.

MAC-MODUS

Standaard worden regeleindes geconverteerd van DOS naar Unix en vice versa. Mac-regeleindes worden niet omgezet.

In Mac-modus worden Mac-regeleindes naar Unix omgezet en vice versa. DOS-regeleindes blijven ongewijzigd.

Om in Mac-modus te draaien kunt u de opdrachtregeloptie -c mac gebruiken, of de opdrachten mac2unix of unix2mac.

CONVERSIEMODI

ascii

Dit is de standaard conversiemodus. Deze modus is voor het converteren van ASCII en ASCII-compatibele gecodeerde bestanden, zoals UTF-8. Het inschakelen van de ascii-modus schakelt de 7bit- en iso-modus uit.

Als dos2unix UTF-16-ondersteuning heeft, worden UTF-16-gecodeerde bestanden geconverteerd naar de huidige locale tekensetcodering op POSIX-systemen en naar UTF-8 op Windows. Als u de ascii-modus inschakelt, worden de optie om UTF-16-codering te behouden (-u) en de opties om UTF-16-invoer aan te nemen (-ul en -ub) uitgeschakeld. Om te zien of dos2unix UTF-16-ondersteuning heeft, typt u dos2unix -V. Zie ook sectie UNICODE.

7bit

Alle 8-bits niet-ASCII lettertekens (met waardes van 128 t/m 255) worden omgezet naar een 7-bits spatie.

iso

Tekens worden omgezet tussen een DOS-tekenset (codetabel) en de ISO-tekenset ISO-8859-1 (Latin-1) op Unix. DOS-tekens zonder een ISO-8859-1-equivalent, waarvoor dus geen omzetting mogelijk is, worden omgezet in een punt. Hetzelfde geldt voor ISO-8859-1-tekens zonder DOS-tegenhanger.

Wanneer alleen optie -iso gebruikt wordt, zal dos2unix proberen de actieve codetabel te gebruiken. Als dat niet mogelijk is wordt codetabel CP437 gebruikt, die vooral in de VS gebruikt wordt. Om een bepaalde codetabel te forceren, kunt u de opties -850 (West-Europees), -860 (Portugees), -863 (Canadees Frans) of -865 (Scandinavisch) gebruiken. Windows-codetabel CP1252 (West-Europees) wordt ook ondersteund met optie -1252. Gebruik voor andere codetabellen dos2unix in combinatie met iconv(1). Iconv kan omzetten tussen een lange lijst tekensetcoderingen.

Gebruik ISO-conversie nooit op Unicode-tekstbestanden. Het zal UTF-8-gecodeerde bestanden beschadigen.

Enkele voorbeelden:

Omzetten van de standaard DOS-codetabel naar Unix Latin-1:

dos2unix -iso -n in.txt uit.txt

Omzetten van DOS CP850 naar Unix Latin-1:

dos2unix -850 -n in.txt uit.txt

Omzetten van Windows CP1252 naar Unix Latin-1:

dos2unix -1252 -n in.txt uit.txt

Omzetten van Windows CP1252 naar Unix UTF-8 (Unicode):

iconv -f CP1252 -t UTF-8 in.txt | dos2unix > uit.txt

Omzetten van Unix Latin-1 naar de standaard DOS-codetabel:

unix2dos -iso -n in.txt uit.txt

Omzetten van Unix Latin-1 naar DOS CP850:

unix2dos -850 -n in.txt uit.txt

Omzetten van Unix Latin-1 naar Windows CP1252:

unix2dos -1252 -n in.txt uit.txt

Omzetten van Unix UTF-8 (Unicode) naar Windows CP1252:

unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > uit.txt

Zie ook http://czyborra.com/charsets/codepages.html en http://czyborra.com/charsets/iso8859.html.

UNICODE

Coderingen

Er bestaan verschillende Unicode-coderingen. Op Unix en Linux zijn Unicode-bestanden typisch gecodeerd in UTF-8. Op Windows kunnen Unicode-tekstbestanden gecodeerd zijn in UTF-8, UTF-16 of UTF-16 big endian, maar ze zijn meestal gecodeerd in UTF-16.

Conversie

Unicode-tekstbestanden kunnen DOS-, Unix- of Mac-regeleindes hebben, net als ASCII tekstbestanden.

Alle versies van dos2unix en unix2dos kunnen UTF-8-gecodeerde bestanden omzetten, want UTF-8 is ontworpen op compatibiliteit met ASCII.

Dos2unix en unix2dos met Unicode UTF-16-ondersteuning kunnen little en big endian UTF-16-gecodeerde tekstbestanden lezen. Om er achter te komen of dos2unix gebouwd is met UTF-16- ondersteuning, typt u dos2unix -V.

Op Unix/Linux worden UTF-16-bestanden geconverteerd naar de codering van de ingestelde taalregio. Gebruik de opdracht locale(1) om te zien wat de ingestelde codering is. Wanneer conversie niet mogelijk is, treedt er een fout op en wordt het bestand overgeslagen.

Op Windows worden UTF-16-bestanden standaard naar UTF-8 geconverteerd. UTF-8-tekstbestanden worden alom goed ondersteund, zowel op Windows als Unix/Linux.

De UTF-16- en UTF-8-coderingen zijn volledig compatibel, er gaat bij het converteren niets verloren. Als er tijdens de conversie van UTF-16 naar UTF-8 een fout optreedt, bijvoorbeeld omdat het UTF-16-invoerbestand een fout bevat, dan wordt het bestand overgeslagen.

Wanneer -u gebruikt wordt, wordt het uitvoerbestand in dezelfde UTF-16-codering geschreven als het invoerbestand. Optie -u voorkomt conversie naar UTF-8.

Dos2unix en unix2dos hebben geen optie om van UTF-8 naar UTF-16 te converteren.

ISO- en 7-bits-conversie werken niet op UTF-16-bestanden.

Byte-Order-Mark

Op Windows bevatten Unicode-tekstbestanden gewoonlijk een Byte-Order-Mark (BOM), omdat veel Windows-programma's (inclusief Kladblok) standaard een BOM toevoegen. Zie ook https://en.wikipedia.org/wiki/Byte_order_mark.

Op Unix hebben Unicode-tekstbestanden meestal geen BOM. Er wordt aangenomen dat de codering van tekstbestanden gelijk is aan de tekencodering van de ingestelde taalregio.

Dos2unix kan alleen detecteren of een bestand in UTF-16-codering is als het bestand een BOM bevat. Wanneer een UTF-16-bestand geen BOM heeft, ziet dos2unix het bestand als een binair bestand.

Gebruik optie -ul of -ub om een UTF-16-bestand zonder BOM om te zetten.

Dos2unix schrijft standaard geen BOM in het uitvoerbestand. Met optie -b schrijft dos2unix een BOM wanneer het invoerbestand een BOM bevat.

Unix2dos schrijft standaard een BOM in het uitvoerbestand wanneer het invoerbestand een BOM bevat. Gebruik optie -r om de BOM te verwijderen.

Dos2unix en unix2dos schrijven altijd een BOM wanneer optie -m gebruikt wordt.

Unicode-bestandsnamen op Windows

Dos2unix heeft optionele ondersteuning voor het lezen en schrijven van Unicode-bestandsnamen in de Windows Opdrachtprompt. Dit betekent dat dos2unix bestanden kan openen waarvan de naam tekens bevat die niet voorkomen in de standaard ANSI-codetabel. Om te zien of dos2unix voor Windows gecompileerd werd met ondersteuning voor Unicode-bestandsnamen, typt u dos2unix -V.

Er zijn enige problemen met het weergeven van Unicode-bestandsnamen in een Windows-console; zie bij optie -D, --display-enc. De bestandsnamen kunnen verkeerd weergegeven worden, maar de bestanden zullen geschreven worden met de correcte naam.

Unicode-voorbeelden

Omzetten van Windows UTF-16 (met BOM) naar Unix UTF-8:

dos2unix -n in.txt uit.txt

Omzetten van Windows UTF-16LE (zonder BOM) naar Unix UTF-8:

dos2unix -ul -n in.txt uit.txt

Omzetten van Unix UTF-8 naar Windows UTF-8 met BOM:

unix2dos -m -n in.txt uit.txt

Omzetten van Unix UTF-8 naar Windows UTF-16:

unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > uit.txt

GB18030

GB18030 is een standaard van de Chinese overheid. Een subset van de GB18030-standaard is officieel verplicht voor alle softwareproducten die in China verkocht worden. Zie ook https://en.wikipedia.org/wiki/GB_18030.

GB18030 is volledig compatibel met Unicode, en kan als een Unicodetransformatie beschouwd worden. Net als UTF-8 is GB18030 compatibel met ASCII. GB18030 is ook compatibel met Windows-codetabel 936 (ook wel GBK genoemd).

Op Unix/Linux worden UTF-16-bestanden naar GB18030 geconverteerd wanneer de taalregio-codering GB18030 is. Merk op dat dit alleen werkt als deze taalregio-instelling door het systeem ondersteund wordt. Gebruik het commando locale -a voor een overzicht van de beschikbare taalregio's.

Op Windows dient u de optie -gb te gebruiken om UTF-16-bestanden naar GB18030 te converteren.

GB18030-bestanden kunnen een Byte-Order-Mark bevatten, net als Unicode-bestanden.

VOORBEELDEN

Invoer lezen van standaardinvoer en uitvoer schrijven naar standaarduitvoer:

dos2unix < a.txt
cat a.txt | dos2unix

Omzetten en vervangen van a.txt; omzetten en vervangen van b.txt:

dos2unix a.txt b.txt
dos2unix -o a.txt b.txt

Omzetten en vervangen van a.txt in ascii-conversiemodus:

dos2unix a.txt

Omzetten en vervangen van a.txt in ascii-conversiemodus; omzetten en vervangen van b.txt in 7-bits conversiemodus:

dos2unix a.txt -c 7bit b.txt
dos2unix -c ascii a.txt -c 7bit b.txt
dos2unix -ascii a.txt -7 b.txt

Omzetten van a.txt van Mac- naar Unix-indeling:

dos2unix -c mac a.txt
mac2unix a.txt

Omzetten van a.txt van Unix- naar Mac-indeling:

unix2dos -c mac a.txt
unix2mac a.txt

Omzetten en vervangen van a.txt met behoud van origineel tijdsstempel:

dos2unix -k a.txt
dos2unix -k -o a.txt

Omzetten van a.txt en resultaat naar e.txt schrijven:

dos2unix -n a.txt e.txt

Omzetten van a.txt en naar e.txt schrijven, met tijdsstempel van e.txt gelijk aan die van a.txt:

dos2unix -k -n a.txt e.txt

Omzetten en vervangen van a.txt; omzetten van b.txt en naar e.txt schrijven:

dos2unix a.txt -n b.txt e.txt
dos2unix -o a.txt -n b.txt e.txt

Omzetten van c.txt en naar e.txt schrijven; omzetten en vervangen van a.txt; omzetten en vervangen van b.txt; omzetten van d.txt en naar f.txt schrijven:

dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt

RECURSIEVE CONVERSIE

In een Unix shell kunnen de find(1) en xargs(1) commando's gebruikt worden om dos2unix recursief uit te voeren over alle tekstbestanden in een directoryboomstructuur. Bijvoorbeeld om alle .txt bestanden in de directoryboomstructuur onder het huidige directory type te converteren:

find . -name '*.txt' -print0 | xargs -0 dos2unix

De find(1) optie -print0 en de corresponderende xargs(1) optie -0 zijn nodig als er bestanden zijn met spaties of aanhalingstekens in de naam. Anders kunnen deze opties worden weggelaten. Een andere optie is om find(1) te gebruiken met de -exec optie:

find . -name '*.txt' -exec dos2unix {} \;

In een Windows Opdrachtprompt kan de volgende opdracht gebruikt worden:

for /R %G in (*.txt) do dos2unix "%G"

PowerShell-gebruikers kunnen de volgende opdracht in Windows PowerShell gebruiken:

get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname}

LOKALISATIE

LANG

De primaire taal wordt geselecteerd via de omgevingsvariabele LANG. De variabele LANG bestaat uit verschillende onderdelen. Het eerste deel is in kleine letters de taalcode. Het tweede deel is optioneel en is de landcode in hoofdletters, voorafgegaan door een liggend streepje. Er is ook een optioneel derde deel: de tekencodering, voorafgegaan door een punt. Enkele voorbeelden voor een POSIX-shell:

export LANG=nl               Nederlands
export LANG=nl_NL            Nederlands, Nederland
export LANG=nl_BE            Nederlands, België
export LANG=es_ES            Spaans, Spanje
export LANG=es_MX            Spaans, Mexico
export LANG=en_US.iso88591   Engels, VS, Latin-1-codering
export LANG=en_GB.UTF-8      Engels, GB, UTF-8-codering

Voor een complete lijst van taal- en landcodes zie de gettext-handleiding: https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html

Op Unix-systemen kunt u de opdracht locale(1) gebruiken om specifieke taalregio-informatie te verkrijgen.

LANGUAGE

Met de omgevingsvariabele LANGUAGE kunt u een prioriteitenlijst specificeren van talen, gescheiden door dubbele punten. Dos2unix geeft voorrang aan LANGUAGE boven LANG. Bijvoorbeeld, eerst Nederlands en dan Duits: LANGUAGE=nl:de. U moet eerst lokalisatie in werking stellen, door het instellen van LANG (of LC_ALL) op een waarde ongelijk aan "C", voordat u een talen-prioriteitenlijst kunt gebruiken via de variabele LANGUAGE. Zie ook de gettext-handleiding: https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html

Als u een taal kiest die niet beschikbaar is, worden de standaard Engelse berichten gebruikt.

DOS2UNIX_LOCALEDIR

Met de omgevingsvariabele DOS2UNIX_LOCALEDIR kan de LOCALEDIR die ingesteld werd tijdens compilatie worden overstemd. LOCALEDIR wordt gebruikt om de taalbestanden te vinden. De GNU standaardwaarde is /usr/local/share/locale. De optie --version laat de gebruikte LOCALEDIR zien.

Voorbeeld (POSIX-shell):

export DOS2UNIX_LOCALEDIR=$HOME/share/locale

AFSLUITWAARDE

Bij succes wordt nul teruggegeven. Wanneer een systeemfout optreedt wordt het laatste systeemfoutnummer teruggegeven. Bij andere fouten wordt 1 teruggegeven.

De afsluitwaarde is altijd nul in de stillewerkingsmodus, behalve wanneer verkeerde opties worden gegeven.

STANDAARDEN

https://nl.wikipedia.org/wiki/Tekstbestand

https://nl.wikipedia.org/wiki/Carriage_Return

https://nl.wikipedia.org/wiki/Linefeed

<https://nl.wikipedia.org/wiki/Unicode>

AUTEURS

Benjamin Lin - <blin@socs.uts.edu.au>, Bernd Johannes Wuebben (mac2unix-modus) - <wuebben@kde.org>, Christian Wurll (toevoegen van extra regeleindes) - <wurll@ira.uka.de>, Erwin Waterlander - <waterlan@xs4all.nl> (beheerder)

Projectpagina: https://waterlan.home.xs4all.nl/dos2unix.html

SourceForge-pagina: https://sourceforge.net/projects/dos2unix/

ZIE OOK

file(1) find(1) iconv(1) locale(1) xargs(1)