dos2unix - konwerter formatu plików tekstowych miÄdzy systemami DOS/Mac a Uniksem
dos2unix [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]
unix2dos [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]
Pakiet Dos2unix zawiera narzÄdzia dos2unix oraz unix2dos do konwersji
zwykÅych plików tekstowych miÄdzy formatami używanymi w systemach DOS lub
Mac a formatem uniksowym.
W plikach tekstowych systemu DOS/Windows oznaczenie koÅca linii to poÅÄ czenie dwóch znaków: powrotu karetki (CR) i przesuniÄcia linii (LF). W uniksowych plikach tekstowych koniec linii to pojedynczy znak LF. W plikach tekstowych systemu Mac sprzed Mac OS X koniec linii byÅ pojedynczym znakiem CR. Obecnie Mac OS wykorzystuje uniksowe koÅce linii (LF).
Oprócz oznaczeÅ koÅców linii Dos2unix potrafi konwertowaÄ także kodowanie plików. Kilko stron kodowych DOS-a może byÄ przekonwertowanych do uniksowego Latin-1, a windowsowy Unicode (UTF-16) do powszechniejszego pod Uniksem kodowania Unicode UTF-8.
Pliki binarne sÄ pomijane automatycznie, chyba że konwersja zostanie wymuszona.
Pliki inne niż zwykÅe, np. katalogi lub FIFO, sÄ pomijane automatycznie.
DowiÄ zania symboliczne i ich cele sÄ domyÅlnie pozostawiane bez zmian. DowiÄ zania symboliczne mogÄ byÄ opcjonalnie zastÄpowane, albo wyjÅcie może byÄ zapisywane do celu dowiÄ zania. Zapis do celu dowiÄ zania symbolicznego nie jest obsÅugiwane pod Windows.
Dos2unix powstaÅ na podstawie narzÄdzia dos2unix z systemu
SunOS/Solaris. Jest jedna istotna różnica w stosunku do oryginalnej wersji z
SunOS-a/Solarisa: ta wersja domyÅlnie wykonuje konwersjÄ w miejscu (tryb
starego pliku), podczas gdy oryginalna obsÅugiwaÅa tylko konwersjÄ parami
(tryb nowego pliku) - p. także opcje -o i -n. Ponadto wersja z
SunOS-a/Solarisa domyÅlnie wykonuje konwersjÄ w trybie iso, podczas gdy
ta wersja domyÅlnie wykonuje konwersjÄ w trybie ascii.
Potraktowanie wszystkich kolejnych opcji jako nazw plików. Tej opcji należy użyÄ, aby przekonwertowaÄ pliki, których nazwy zaczynajÄ siÄ od minusa. PrzykÅadowo, aby przekonwertowaÄ plik o nazwie "-foo", można użyÄ polecenia:
dos2unix -- -foo
Lub w trybie nowego pliku:
dos2unix -n -- -foo out.txt
Zezwolenie na zmianÄ wÅaÅciciela w trybie starego pliku.
W przypadku użycia tej opcji, konwersja nie zostanie przerwana, jeÅli nie ma
możliwoÅci zachowania wÅaÅciciela i/lub grupy oryginalnego pliku w trybie
starego pliku. Konwersja bÄdzie kontynuowana, a przekonwertowany plik bÄdzie
miaÅ tego samego wÅaÅciciela, jakiego by miaÅ w trybie nowego
pliku. P. także opcje -o i -n. Opcja jest dostÄpna tylko wtedy, gdy
dos2unix ma obsÅugÄ zachowywania użytkownika i grupy plików.
Konwersja tylko znaków koÅca linii. Jest to domyÅlny tryb konwersji.
Konwersja miÄdzy zestawami znaków DOS i ISO-8859-1. WiÄcej w sekcji TRYBY KONWERSJI.
Użycie strony kodowej Windows 1252 (zachodnioeuropejskiej).
Użycie strony kodowej DOS 437 (US). Jest to domyÅlna strona kodowa używana przy konwersji ISO.
Użycie strony kodowej DOS 850 (zachodnioeuropejskiej).
Użycie strony kodowej DOS 860 (portugalskiej).
Użycie strony kodowej DOS 863 (kanadyjskiej francuskiej).
Użycie strony kodowej DOS 865 (nordyckiej).
Konwersja znaków 8-bitowych do przestrzeni 7-bitowej.
Zachowanie znaku BOM (Byte Order Makr). Jeżeli plik wejÅciowy zawiera BOM,
powoduje zapisanie go w pliku wyjÅciowym. Jest to domyÅlne zachowanie przy
konwersji na DOS-owe koÅce linii. P. także opcja -r.
Ustawienie trybu konwersji. TRYB_KONW to jeden z: ascii, 7bit, iso, mac, przy czym domyÅlny jest ascii.
Ustawienie kodowania wyÅwietlanego tekstu. KODOWANIE to jedno z: ansi, unicode, unicodebom, utf8, utf8bom, przy czym domyÅlne to ansi.
Ta opcja jest dostÄpna wyÅÄ czenie w programie dos2unix dla Windows z obsÅugÄ nazw plików Unicode. Nie ma wpÅywu na same nawy odczytywanych i zapisywanych plików, a jedynie na sposób ich wyÅwietlania.
Istnieje kilka sposobów wyÅwietlania tekstu w konsoli Windows w zależnoÅci od kodowania tekstu. Wszystkie majÄ swoje zalety i wady.
DomyÅlna metoda programu dos2unix to stosowanie tekstu kodowanego w
ANSI. ZaletÄ
jest wsteczna zgodnoÅÄ. DziaÅa z fontami rastrowymi, jak i
TrueType. W niektórych rejonach może byÄ potrzeba zmiany aktywnej strony
kodowej DOS OEM na systemowÄ
stronÄ kodowÄ
Windows ANSI przy użyciu
polecenia chcp, ponieważ dos2unix wykorzystuje systemowÄ
stronÄ kodowÄ
Windows.
WadÄ kodowania ansi jest fakt, że miÄdzynarodowe nazwy plików ze znakami spoza domyÅlnej systemowej strony kodowej nie sÄ wyÅwietlane wÅaÅciwie. Można zamiast tego zobaczyÄ znak zapytania albo niewÅaÅciwy symbol. Jeżeli nie pracujemy z obcymi nazwami plików, ta metoda jest poprawna.
ZaletÄ kodowania unicode (windowsowÄ nazwÄ dla UTF-16) jest (zwykle) wÅaÅciwe wyÅwietlanie tekstu. Nie ma potrzeby zmiany aktywnej strony kodowej. Może byÄ potrzeba zmiany fontu konsoli na font TrueType, aby znaki miÄdzynarodowe byÅy wyÅwietlane poprawnie. JeÅli znak nie jest obecny w foncie TrueType, zwykle widaÄ maÅy kwadrat, czasami ze znakiem zapytania w Årodku.
W przypadku używania konsoli ConEmu caÅy tekst jest wyÅwietlany poprawnie, ponieważ ConEmu automatycznie wybiera dobry font.
WadÄ kodowania unicode jest niezgodnoÅÄ z ASCII. WyjÅcie nie jest Åatwe do obsÅużenia w przypadku przekierowania do innego programu lub pliku.
W przypadku użycia metody unicodebom, tekst w unikodzie jest poprzedzony
znakiem BOM (Byte Order Mark). BOM jest wymagany do poprawnego
przekierowania lub przekazywania przez potok w powÅoce PowerShell.
ZaletÄ
kodowania utf8 jest zgodnoÅÄ z ASCII. Trzeba ustawiÄ font konsoli na
font TrueType. Przy użyciu fontu TrueType tekst jest wyÅwietlany podobnie do
kodowania unicode.
WadÄ jest fakt, że w przypadku używania domyÅlnego fontu rastrowego, wszystkie znaki spoza ASCII sÄ wyÅwietlane niepoprawnie. Nie tylko unikodowe nazwy plików, ale także przetÅumaczone komunikaty stajÄ siÄ nieczytelne. W Windows skonfigurowanym dla rejonu Azji Wschodniej widaÄ dużo migotania konsoli w trakcie wyÅwietlania komunikatów.
W konsoli ConEmu metoda kodowania utf8 dziaÅa dobrze.
W przypadku użycia metody utf8bom, tekst w UTF-8 jest poprzedzony znakiem
BOM (Byte Order Mark). BOM jest wymagany do poprawnego przekierowania lub
przekazywania przez potok w powÅoce PowerShell.
DomyÅlne kodowanie można zmieniÄ przy użyciu zmiennej Årodowiskowej
DOS2UNIX_DISPLAY_ENC, ustawiajÄ
c jÄ
na unicode, unicodebom, utf8
lub utf8bom.
Wymuszenie konwersji plików binarnych.
Pod Windows pliki w UTF-16 sÄ domyÅlnie konwertowane do UTF-8, niezależnie od ustawienia lokalizacji. Ta opcja pozwala przekonwertowaÄ pliki w UTF-16 do GB18030. Opcja jest dostÄpna tylko pod Windows, wiÄcej w sekcji dotyczÄ cej GB18030.
WyÅwietlenie opisu i zakoÅczenie.
WyÅwietlenie informacji o pliku. Konwersja nie jest wykonywana.
Wypisywane sÄ nastÄpujÄ ce informacje, w tej kolejnoÅci: liczba DOS-owych koÅców linii, liczba uniksowych koÅców linii, liczba macowych koÅców linii, znacznik BOM, tekstowy lub binarny, nazwa pliku.
PrzykÅadowe wyjÅcie:
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
Uwaga: czasami plik binarny może byÄ bÅÄdnie rozpoznany jako
tekstowy. P. także opcja -s.
Opcjonalnie można ustawiÄ dodatkowe flagi, aby zmieniÄ wyjÅcie. Można dodaÄ jednÄ lub wiÄcej flag.
Wypisanie wierszy informacji o pliku zakoÅczonych znakiem NUL zamiast znaku
nowej linii. Pozwala to na poprawnÄ
interpretacjÄ nazw plików zawierajÄ
cych
spacje lub cudzysÅowy w przypadku użycia flagi c. Flagi należy używaÄ w
poÅÄ
czeniu z opcjÄ
-0 lub --null programu xargs(1).
Wypisanie liczby DOS-owych koÅców linii.
Wypisanie liczby uniksowych koÅców linii.
Wypisanie liczby macowych koÅców linii.
Wypisanie znacznika BOM.
Wypisanie, czy plik jest tekstowy, czy binarny.
Wypisanie tylko plików, które zostaÅyby przekonwertowane.
Z flagÄ
c dos2unix wypisze tylko pliki zawierajÄ
ce DOS-owe koÅce linii, a
unix2dos wypisze tylko nazwy plików zawierajÄ
cych uniksowe koÅce linii.
Wypisanie nagÅówka.
WyÅwietlanie nazw plików bez Åcieżki.
PrzykÅady:
Pokazanie informacji o wszystkich plikach *.txt:
dos2unix -i *.txt
Pokazanie tylko liczby DOS-owych i uniksowych koÅców linii:
dos2unix -idu *.txt
Pokazanie tylko znacznika BOM:
dos2unix --info=b *.txt
Wypisanie listy plików zawierajÄ cych DOS-owe koÅce linii:
dos2unix -ic *.txt
Wypisanie listy plików zawierajÄ cych uniksowe koÅce linii:
unix2dos -ic *.txt
Konwersja tylko plików majÄ cych DOS-owe koÅce linii, pozostawienie pozostaÅych bez zmian:
dos2unix -ic0 *.txt | xargs -0 dos2unix
Wyszukanie plików tekstowych zawierajÄ cych DOS-owe koÅce linii:
find -name '*.txt' -print0 | xargs -0 dos2unix -ic
Zachowanie znacznika czasu pliku wyjÅciowego takiego samego, jak pliku wejÅciowego.
WyÅwietlenie licencji programu.
Dodanie dodatkowego znaku koÅca linii.
dos2unix: tylko DOS-owe znaki koÅca linii sÄ zamieniane na dwa uniksowe. W trybie Mac tylko macowe znaki koÅca linii sÄ zamieniane na dwa uniksowe.
unix2dos: tylko uniksowe znaki koÅca linii sÄ zamieniane na dwa DOS-owe. W trybie Mac uniksowe znaki koÅca linii sÄ zamieniane na dwa macowe.
Zapisanie znacznika BOM (Byte Order Mark) w pliku wyjÅciowym. DomyÅlnie zapisywany jest BOM UTF-8.
JeÅli plik wejÅciowy jest w kodowaniu UTF-16 i użyto opcji -u, zostanie
zapisany BOM UTF-16.
Nigdy nie należy używaÄ tej opcji, jeÅli kodowanie wyjÅciowe jest inne niż UTF-8, UTF-16 lub GB18030. WiÄcej w sekcji UNICODE.
Tryb nowego pliku. Konwersja PLIKU_WEJ z zapisem wyjÅcia do PLIKU_WYJ. Nazwy plików muszÄ byÄ podane parami, a masek nie należy używaÄ, gdyż spowoduje to utratÄ plików.
Osoba uruchamiajÄ
ca konwersjÄ w trybie nowego pliku (par) bÄdzie
wÅaÅcicielem przekonwertowanego pliku. Prawa odczytu/zapisu nowego pliku
bÄdÄ
pochodziÅy z praw pliku oryginalnego po odjÄciu umask(1) osoby
uruchamiajÄ
cej konwersjÄ.
Bez zezwolenia na zmianÄ wÅaÅciciela pliku w trybie starego pliku (domyÅlne).
Przerwanie konwersji, jeżeli użytkownik lub grupa oryginalnego pliku nie
może byÄ zachowana w trybie starego pliku. P. także opcje -o oraz
-n. Ta opcja jest dostÄpna tylko jeÅli dos2unix ma obsÅugÄ zachowywania
użytkownika i grupy plików.
Tryb starego pliku. Konwersja PLIKU i nadpisanie go wyjÅciem. Program dziaÅa domyÅlnie w tym trybie. Można używaÄ masek.
W trybie starego pliku (w miejscu) przekonwertowany plik otrzymuje tego samego wÅaÅciciela, grupÄ oraz prawa odczytu/zapisu, jak plik oryginalny - także wtedy, gdy plik jest konwertowany przez innego użytkownika, majÄ cego prawo zapisu do pliku (np. przez użytkownika root). Konwersja zostanie przerwana, jeÅli nie bÄdzie możliwe zachowanie oryginalnych wartoÅci. Zmiana wÅaÅciciela mogÅaby oznaczaÄ, że pierwotny wÅaÅciciel nie może już odczytaÄ pliku. Zmiana grupy mogÅaby byÄ zagrożeniem bezpieczeÅstwa, plik mógÅby byÄ czytelny dla nie zamierzonych osób. Zachowanie wÅaÅciciela, grupy i praw odczytu/zapisu jest obsÅugiwane tylko na Uniksie.
Aby sprawdziÄ, czy doswunix ma obsÅugÄ zachowywania użytkownika i grupy
plików, można napisaÄ dos2unix -V.
Konwersja jest wykonywana zawsze przy użyciu pliku tymczasowego. JeÅli w
trakcie konwersji wystÄ
pi bÅÄ
d, plik tymczasowy jest usuwany, a plik
oryginalny pozostaje nietkniÄty. JeÅli konwersja siÄ powiedzie, plik
oryginalny jest zastÄpowany plikiem tymczasowym. Można mieÄ prawa zapisu do
pliku oryginalnego, ale brak uprawnieÅ, aby nadaÄ tego samego wÅaÅciciela
i/lub grupÄ, co plik oryginalny, plikowi tymczasowemu. Oznacza to, że nie
można zachowaÄ użytkownika i/lub grupy oryginalnego pliku. W takim przypadku
można użyÄ opcji --allow-chown, aby kontynuowaÄ konwersjÄ:
dos2unix --allow-chown foo.txt
Inny sposób to użycie trybu nowego pliku:
dos2unix -n foo.txt foo.txt
ZaletÄ
opcji --allow-chown jest możliwoÅÄ użycia masek oraz zachowanie
wÅaÅciciela w miarÄ możliwoÅci.
Tryb cichy. PominiÄcie wszystkich ostrzeżeÅ i komunikatów. Zwracanym kodem jest zero, chyba że podano bÅÄdne opcje linii poleceÅ.
UsuniÄcie znaków BOM (Byte Order Mark). Bez zapisywania BOM do pliku
wyjÅciowego. Jest to domyÅlne zachowanie przy konwersji na uniksowe koÅce
linii. P. także opcja -b.
PominiÄcie plików binarnych (domyÅlne).
Pomijanie plików binarnych ma na celu zapobieżenie przypadkowym bÅÄdom. Uwaga: wykrywanie plików binarnych nie jest w 100% odporne na bÅÄdy. Pliki wejÅciowe sÄ przeszukiwane pod kÄ tem symboli binarnych, które zwykle nie wystÄpujÄ w plikach tekstowych. Może siÄ zdarzyÄ, że plik binarny zawiera tylko zwykÅe znaki tekstowe. Taki plik binarny bÄdzie bÅÄdnie widziany jako plik tekstowy.
Zachowanie oryginalnego kodowania pliku wejÅciowego UTF-16. Plik wyjÅciowy
zostanie zapisany w tym samym kodowaniu UTF-16 (little lub big endian), co
plik wejÅciowy. Zapobiega to przeksztaÅceniu do UTF-8. Do pliku zostanie
zapisany odpowiedni znacznik BOM UTF-16. TÄ opcjÄ można wyÅÄ
czyÄ opcjÄ
-ascii.
PrzyjÄcie, że format pliku wejÅciowego to UTF-16LE.
JeÅli w pliku wejÅciowym jest znacznik BOM (Byte Order Mark), ma on priorytet nad tÄ opcjÄ .
JeÅli przyjÄto bÅÄdne zaÅożenie (plik wejÅciowy nie jest w formacie
UTF-16LE), a konwersja siÄ uda, wynikiem bÄdzie plik wyjÅciowy UTF-8 ze zÅym
tekstem. KonwersjÄ tÄ można odwróciÄ przy użyciu polecenia iconv(1) do
konwersji wyjÅcia UTF-8 z powrotem do UTF-16LE. Przywróci to plik
oryginalny.
PrzyjÄcie UTF-16LE dziaÅa jako tryb konwersji. Przy przeÅÄ czeniu na domyÅlny tryb ascii przyjÄcie UTF-16LE jest wyÅÄ czane.
PrzyjÄcie, że format pliku wejÅciowego to UTF-16BE.
Ta opcja dziaÅa analogicznie do -ul.
WyÅwietlanie szczegóÅowych komunikatów. WyÅwietlane Åa dodatkowe informacje o znacznikach BOM (Byte Order Mark) oraz liczbie przekonwertowanych koÅców linii.
PodÄ Å¼anie za dowiÄ zaniami symbolicznymi i konwertowanie ich celów
ZastÄpowanie dowiÄ zaÅ symbolicznych przekonwertowanymi plikami (oryginalne pliki docelowe pozostajÄ bez zmian).
Pozostawienie dowiÄ zaÅ symbolicznych i celów bez zmian (domyÅlne).
WyÅwietlenie informacji o wersji i zakoÅczenie.
W zwykÅym trybie znaki koÅca linii sÄ konwertowane z DOS-a do Uniksa i odwrotnie. Znaki koÅca linii systemu Mac nie sÄ konwertowane.
W trybie Mac znaki koÅca linii sÄ konwertowane z formatu Maca do Uniksa i odwrotnie. Znaki koÅca linii systemu DOS nie sÄ zmieniane.
Aby uruchomiÄ program w trybie Mac, należy użyÄ opcji linii poleceÅ -c
mac albo użyÄ poleceÅ mac2unix lub unix2mac.
W trybie ascii konwertowane sÄ
tylko koÅce linii. Jest to domyÅlny tryb
konwersji.
Mimo że nazwa tego trybu to ASCII, które jest standardem 7-bitowym, jest to tryb 8-bitowy. Należy zawsze używaÄ tego trybu przy konwersji plików Unicode UTF-8.
W tym trybie wszystkie znaki 8-bitowe spoza ASCII (o wartoÅciach od 128 do 255) sÄ konwertowane do przestrzeni 7-bitowej.
W tym trybie znaki sÄ konwertowane miÄdzy zestawem znaków DOS (stronÄ kodowÄ ) a zestawem znaków ISO-8859-1 (Latin-1) używanym na Uniksie. Znaki DOS-owe nie majÄ ce odpowiednika w ISO-8859-1, których nie da siÄ przekonwertowaÄ, sÄ zamieniane na kropkÄ. To samo dotyczy znaków ISO-8859-1 bez odpowiednika w DOS-ie.
JeÅli używana jest tylko opcja -iso, dos2unix próbuje wykryÄ aktywnÄ
stronÄ kodowÄ
. JeÅli nie jest to możliwe, dos2unix używa domyÅlnej strony
kodowej CP437, stosowanej gÅównie w USA. Aby wymusiÄ okreÅlonÄ
stronÄ
kodowÄ
, należy użyÄ opcji -437 (US), -850 (zachodnioeuropejska),
-860 (portugalska), -863 (kanadyjska francuska) lub -865
(nordycka). Ponadto obsÅugiwana jest strona kodowa Windows CP1252
(zachodnioeuropejska) przy użyciu opcji -1252. W przypadku innych stron
kodowych można użyÄ narzÄdzia dos2unix wraz z iconv(1). Iconv potrafi
konwertowaÄ miÄdzy wieloma kodowaniami znaków.
Nigdy nie należy używaÄ konwersji ISO na plikach tekstowych w Unicode. UszkodziÅaby pliki kodowane UTF-8.
Kilka przykÅadów:
Konwersja z domyÅlnej strony kodowej DOS do uniksowego Latin-1:
dos2unix -iso -n in.txt out.txt
Konwersja ze strony kodowej DOS CP850 do uniksowego Latin-1:
dos2unix -850 -n in.txt out.txt
Konwersja ze strony kodowej Windows CP1252 do uniksowego Latin-1:
dos2unix -1252 -n in.txt out.txt
Konwersja ze strony kodowej Windows CP1252 do uniksowego UTF-8 (Unicode):
iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt
Konwersa z uniksowego Latin-1 do domyÅlnej strony kodowej DOS:
unix2dos -iso -n in.txt out.txt
Konwersja z uniksowego Latin-1 do strony kodowej DOS CP850:
unix2dos -850 -n in.txt out.txt
Konwersja z uniksowego Latin-1 do strony kodowej Windows CP1252:
unix2dos -1252 -n in.txt out.txt
Konwersja z uniksowego UTF-8 (Unicode) do strony kodowej Windows CP1252:
unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt
WiÄcej pod adresem http://czyborra.com/charsets/codepages.html oraz http://czyborra.com/charsets/iso8859.html.
IstniejÄ różne kodowania Unicode. Pod Uniksem i Linuksem pliki Unicode sÄ zwykle kodowane z użyciem UTF-8. Pod Windows pliki tekstowe Unicode mogÄ byÄ kodowane w UTF-8, UTF-16, UTF-16 big-endian, ale przeważnie sÄ kodowane w UTF-16.
Pliki tekstowe Unicode mogÄ mieÄ znaki koÅca linii systemu DOS, Unix lub Mac, podobnie jak zwykÅe pliki tekstowe.
Wszystkie wersje dos2unix i unix2dos potrafiÄ konwertowaÄ pliki kodowane UTF-8, ponieważ UTF-8 jest wstecznie zgodne z ASCII.
Dos2unix i unix2dos z obsÅugÄ
Unicode UTF-16 potrafiÄ
odczytywaÄ pliki
tekstowe kodowane UTF-16 little- oraz big-endian. Aby sprawdziÄ, czy
dos2unix zostaÅ zbudowany z obsÅugÄ
UTF-16, należy napisaÄ dos2unix -V.
Pod Uniksem/Linuksem pliki w kodowaniu UTF-16 sÄ
konwertowane do kodowania
znaków ustawionej lokalizacji. Kodowanie znaków dla lokalizacji można
sprawdziÄ poleceniem locale(1). JeÅli konwersja nie jest możliwa, wystÄ
pi
bÅÄ
d, a plik zostanie pominiÄty.
Pod Windows pliki UTF-16 sÄ domyÅlnie konwertowane do UTF-8. Pliki tekstkowe w kodowaniu UTF-8 sÄ dobrze obsÅugiwane zarówno pod Windows, jak i Uniksem/Linuksem.
Kodowania UTF-16 i UTF-8 sÄ w peÅni zgodne, konwersja nie spowoduje utraty żadnej czÄÅci tekstu. W przypadku wystÄ pienia bÅÄdu konwersji, na przykÅad w przypadku bÅÄdu w pliku wejÅciowym UTF-16, plik zostanie pominiÄty.
W przypadku użycia opcji -u, plik wejÅciowy zostanie zapisany w tym samym
kodowaniu UTF-16, co plik wejÅciowy. Opcja -u zapobiega konwersji do
UTF-8.
Dos2unix oraz unix2dos nie majÄ opcji pozwalajÄ cej na konwersjÄ plików UTF-8 do UTF-16.
Tryby konwersji ISO i 7-bit nie dziaÅajÄ na plikach UTF-16.
W systemie Windows pliki tekstowe zwykle zawierajÄ znacznik BOM (Byte Order Mark), ponieważ wiele programów dla Windows (w tym Notepad) dodaje domyÅlnie znaczniki BOM. WiÄcej informacji można znaleÅºÄ pod adresem http://pl.wikipedia.org/wiki/BOM_(informatyka).
Pod Uniksem pliki Unicode zwykle nie majÄ znacznika BOM. Pliki tekstowe sÄ traktowane jako kodowane zgodnie z kodowaniem znaków ustawionej lokalizacji.
Dos2unix potrafi wykryÄ tylko, czy plik jest w formacie UTF-16, jeÅli zawiera znacznik BOM. JeÅli plik UTF-16 nie ma tego znacznika, dos2unix potraktuje plik jako binarny.
Do konwersji pliku UTF-16 bez znacznika BOM można użyÄ opcji -ul lub
-ub.
Dos2unix nie zapisuje domyÅlnie znaku BOM w pliku wyjÅciowym. Z opcjÄ
-b
Dos2unix zapisuje BOM, jeÅli plik wejÅciowy zawiera BOM.
Unix2dos domyÅlnie zapisuje znaczniki BOM w pliku wyjÅciowym, jeÅli plik
wejÅciowy ma BOM. Aby usunÄ
Ä BOM, można użyÄ opcji -r.
Dos2unix oraz unix2dos zawsze zapisujÄ
znaczniki BOM, jeÅli użyta zostanie
opcja -m.
Dos2unix ma opcjonalnÄ
obsÅugÄ odczytu i zapisu nazw plików Unicode w linii
poleceÅ Windows. Oznacza to, że dos2unix potrafi otwieraÄ pliki zawierajÄ
ce
w nazwie znaki spoza domyÅlnej systemowej strony kodowej ANSI. Aby
sprawdziÄ, czy dos2unix dla Windows zostaÅ zbudowany z obsÅugÄ
nazw plików
Unicode, można wpisaÄ dos2unix -V.
Przy wyÅwietlaniu nazw plików Unicode w konsoli Windows wystÄpuje kilka
problemów. WiÄcej informacji w opisie opcji -D, --display-enc. Nazwy
plików mogÄ
byÄ wyÅwietlane bÅÄdnie na konsoli, ale pliki bÄdÄ
zapisywane z
poprawnÄ
nazwÄ
.
Konwersja pliku UTF-16 (z BOM) z formatu Windows do uniksowego UTF-8:
dos2unix -n in.txt out.txt
Konwersja pliku UTF-16LE (bez BOM) z formatu Windows do uniksowego UTF-8:
dos2unix -ul -n in.txt out.txt
Konwersja z uniksowego UTF-8 do UTF-8 z BOM dla Windows:
unix2dos -m -n in.txt out.txt
Konwersja z uniksowego UTF-8 do UTF-16 dla Windows:
unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt
GB18030 to standard urzÄdowy w Chinach. ObowiÄ zkowy podzbiór standardu GB18030 jest oficjalnym wymaganiem każdego oprogramowania sprzedawanego w Chinach. WiÄcej pod adresem http://en.wikipedia.org/wiki/GB_18030.
GB18030 jest w peÅni zgodny z Unicode i może byÄ uważany za format transformacji unikodu. Podobnie jak UTF-8, GB18030 jest zgodny z ASCII. Jest także zgodny ze stronÄ kodowÄ Windows 936, znanÄ też jako GBK.
Pod Uniksem/Linuksem pliki UTF-16 sÄ
konwertowane do GB18030, jeÅli
kodowanie dla lokalizacji jest ustawione na GB18030. Uwaga: bÄdzie to
dziaÅaÄ tylko, jeÅli lokalizacja jest obsÅugiwana przez system. ListÄ
obsÅugiwanych lokalizacji można sprawdziÄ poleceniem locale -a.
Pod Windows w celu konwersji plików UTF-16 do GB18030 należy użyÄ opcji
-gb.
Pliki w kodowaniu GB18030 mogÄ mieÄ znacznik BOM, podobnie jak pliki w Unicode.
Odczyt ze standardowego wejÅcia i zapis na standardowe wyjÅcie:
dos2unix < a.txt
cat a.txt | dos2unix
Konwersja i zastÄ pienie a.txt; konwersja i zastÄ pienie b.txt:
dos2unix a.txt b.txt
dos2unix -o a.txt b.txt
Konwersja i zastÄ pienie a.txt w trybie ascii:
dos2unix a.txt
Konwersja i zastÄ pienie a.txt w trybie ascii; konwersja i zastÄ pienie b.txt w trybie 7-bitowym:
dos2unix a.txt -c 7bit b.txt
dos2unix -c ascii a.txt -c 7bit b.txt
dos2unix -ascii a.txt -7 b.txt
Konwersja a.txt z formatu Mac do formatu uniksowego:
dos2unix -c mac a.txt
mac2unix a.txt
Konwersja a.txt z formatu uniksowego do formatu Mac:
unix2dos -c mac a.txt
unix2mac a.txt
Konwersja i zastÄ pienie a.txt z zachowaniem oryginalnego znacznika czasu:
dos2unix -k a.txt
dos2unix -k -o a.txt
Konwersja a.txt i zapis do e.txt:
dos2unix -n a.txt e.txt
Konwersja a.txt i zapis do e.txt z zachowaniem znacznika czasu e.txt takiego, jak a.txt:
dos2unix -k -n a.txt e.txt
Konwersja i zastÄ pienie a.txt; konwersja b.txt i zapis do e.txt:
dos2unix a.txt -n b.txt e.txt
dos2unix -o a.txt -n b.txt e.txt
Konwersja c.txt i zapis do e.txt; konwersja i zastÄ pienie a.txt; konwersja i zastÄ pienie b.txt; konwersja d.txt i zapis do f.txt:
dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt
W powÅoce uniksowej można użyÄ poleceÅ find(1) i xargs(1) do rekurencyjnego
uruchomienia dos2unix na wszystkich plikach tekstowych w strukturze drzewa
katalogów. Na przykÅad, aby przekonwertowaÄ wszystkie pliki .txt w drzewie
katalogów poniżej katalogu bieżÄ
cego, należy napisaÄ:
find . -name '*.txt' -print0 |xargs -0 dos2unix
Opcja -print0 polecenia find(1) i odpowiadajÄ
ca jej opcja -0 polecenia
xargs(1) sÄ
potrzebne, jeÅli istniejÄ
pliki ze spacjami lub cudzysÅowami w
nazwie. W przeciwnym wypadku opcje te można pominÄ
Ä. Inny sposób to użycie
find(1) z opcjÄ
-exec:
find . -name '*.txt' -exec dos2unix {} \;
Z poziomu linii poleceÅ Windows można użyÄ nastÄpujÄ cego polecenia:
for /R %G in (*.txt) do dos2unix "%G"
Użytkownicy powÅoki PowerShell mogÄ użyÄ nastÄpujÄ cego polecenia w Windows PowerShell:
get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname}
GÅówny jÄzyk wybiera siÄ zmiennÄ ÅrodowiskowÄ LANG. Zmienna LANG skÅada siÄ z kilku czÄÅci. Pierwsza czÄÅÄ to maÅe litery oznaczajÄ ce kod jÄzyka. Druga czÄÅÄ jest opcjonalna i zawiera kod kraju pisany wielkimi literami, poprzedzony podkreÅleniem. Jest także opcjonalna trzecia czÄÅÄ: kodowanie znaków, poprzedzone kropkÄ . Kilka przykÅadów dla powÅok zgodnych ze standardem POSIX:
export LANG=nl holenderski
export LANG=nl_NL holenderski, Holandia
export LANG=nl_BE holenderski, Belgia
export LANG=es_ES hiszpaÅski, Hiszpania
export LANG=es_MX hiszpaÅski, Meksyk
export LANG=en_US.iso88591 angielski, USA, kodowanie Latin-1
export LANG=en_GB.UTF-8 angielski, Wlk. Brytania, kodowanie UTF-8
PeÅnÄ listÄ kodów jÄzyków i krajów można znaleÅºÄ w podrÄczniku do gettexta: http://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html
W systemach uniksowych do uzyskania informacji dotyczÄ
cych lokalizacji można
użyÄ polecenia locale(1).
Przy użyciu zmiennej Årodowiskowej LANGUAGE można okreÅliÄ listÄ jÄzyków wg
priorytetu, oddzielonych dwukropkami. Dos2unix przyjmuje pierwszeÅstwo
zmiennej LANGUAGE nad LANG. Na przykÅad, najpierw holenderski, nastÄpnie
niemiecki: LANGUAGE=nl:de. Aby skorzystaÄ z listy wg priorytetów ze
zmiennej LANGUAGE, trzeba najpierw wÅÄ
czyÄ lokalizacjÄ przez ustawienie
zmiennej LANG (lub LC_ALL) na wartoÅÄ innÄ
niż "C". WiÄcej informacji
znajduje siÄ w podrÄczniku do gettexta:
http://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html
W przypadku wybrania niedostÄpnego jÄzyka, otrzymamy standardowe, angielskie komunikaty.
Przy użyciu zmiennej Årodowiskowej DOS2UNIX_LOCALEDIR, można nadpisaÄ
ustawienie LOCALEDIR z czasu kompilacji. LOCALEDIR to katalog używany do
znalezienia plików lokalizacji. DomyÅlnÄ
wartoÅciÄ
dla GNU jest
/usr/local/share/locale. Opcja --version wyÅwietla używanÄ
wartoÅÄ
LOCALEDIR.
PrzykÅad (dla powÅoki POSIX):
export DOS2UNIX_LOCALEDIR=$HOME/share/locale
W przypadku powodzenia zwracane jest zero. JeÅli wystÄ pi bÅÄ d systemowy, zwracany jest ostatni bÅÄ d systemowy. W przypadku innych bÅÄdów zwracane jest 1.
WartoÅÄ zwracana w trybie cichym to zawsze zero, z wyjÄ tkiem sytuacji podania bÅÄdnych opcji linii poleceÅ.
http://pl.wikipedia.org/wiki/Plik_tekstowy
http://en.wikipedia.org/wiki/Carriage_return
http://pl.wikipedia.org/wiki/End-of-line
http://pl.wikipedia.org/wiki/Unicode
Benjamin Lin <blin@socs.uts.edu.au>; Bernd Johannes Wuebben (tryb mac2unix) <wuebben@kde.org>; Christian Wurll (dodawanie dodatkowej nowej linii) <wurll@ira.uka.de>; Erwin Waterlander <waterlan@xs4all.nl> (prowadzÄ cy)
Strona projektu: http://waterlan.home.xs4all.nl/dos2unix.html
Strona SourceForge: http://sourceforge.net/projects/dos2unix/
file(1) find(1) iconv(1) locale(1) xargs(1)