dos2unix(1) 2024-01-22 dos2unix(1) NAZWA dos2unix - konwerter formatu plikow tekstowych miedzy systemami DOS/Mac a Uniksem SKLADNIA dos2unix [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...] unix2dos [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...] OPIS Pakiet Dos2unix zawiera narzedzia "dos2unix" oraz "unix2dos" do konwersji zwyklych plikow tekstowych miedzy formatami uzywanymi w systemach DOS lub Mac a formatem uniksowym. W plikach tekstowych systemu DOS/Windows oznaczenie konca linii to polaczenie dwoch znakow: powrotu karetki (CR) i przesuniecia linii (LF). W uniksowych plikach tekstowych koniec linii to pojedynczy znak LF. W plikach tekstowych systemu Mac sprzed Mac OS X koniec linii byl pojedynczym znakiem CR. Obecnie Mac OS wykorzystuje uniksowe konce linii (LF). Oprocz oznaczen koncow linii Dos2unix potrafi konwertowac takze kodowanie plikow. Kilko stron kodowych DOS-a moze byc przekonwertowanych do uniksowego Latin-1, a windowsowy Unicode (UTF-16) do powszechniejszego pod Uniksem kodowania Unicode UTF-8. Pliki binarne sa pomijane automatycznie, chyba ze konwersja zostanie wymuszona. Pliki inne niz zwykle, np. katalogi lub FIFO, sa pomijane automatycznie. Dowiazania symboliczne i ich cele sa domyslnie pozostawiane bez zmian. Dowiazania symboliczne moga byc opcjonalnie zastepowane, albo wyjscie moze byc zapisywane do celu dowiazania. Zapis do celu dowiazania symbolicznego nie jest obslugiwane pod Windows. Dos2unix powstal na podstawie narzedzia dos2unix z systemu SunOS/Solaris. Jest jedna istotna roznica w stosunku do oryginalnej wersji z SunOS-a/Solarisa: ta wersja domyslnie wykonuje konwersje w miejscu (tryb starego pliku), podczas gdy oryginalna obslugiwala tylko konwersje parami (tryb nowego pliku) - p. takze opcje "-o" i "-n". Ponadto wersja z SunOS-a/Solarisa domyslnie wykonuje konwersje w trybie iso, podczas gdy ta wersja domyslnie wykonuje konwersje w trybie ascii. OPCJE -- Potraktowanie wszystkich kolejnych opcji jako nazw plikow. Tej opcji nalezy uzyc, aby przekonwertowac pliki, ktorych nazwy zaczynaja sie od minusa. Przykladowo, aby przekonwertowac plik o nazwie "-foo", mozna uzyc polecenia: dos2unix -- -foo Lub w trybie nowego pliku: dos2unix -n -- -foo wynik.txt --allow-chown Zezwolenie na zmiane wlasciciela w trybie starego pliku. W przypadku uzycia tej opcji, konwersja nie zostanie przerwana, jesli nie ma mozliwosci zachowania wlasciciela i/lub grupy oryginalnego pliku w trybie starego pliku. Konwersja bedzie kontynuowana, a przekonwertowany plik bedzie mial tego samego wlasciciela, jakiego by mial w trybie nowego pliku. P. takze opcje "-o" i "-n". Opcja jest dostepna tylko wtedy, gdy dos2unix ma obsluge zachowywania uzytkownika i grupy plikow. -ascii Domyslny tryb konwersji. Wiecej w sekcji TRYBY KONWERSJI. -iso Konwersja miedzy zestawami znakow DOS i ISO-8859-1. Wiecej w sekcji TRYBY KONWERSJI. -1252 Uzycie strony kodowej Windows 1252 (zachodnioeuropejskiej). -437 Uzycie strony kodowej DOS 437 (US). Jest to domyslna strona kodowa uzywana przy konwersji ISO. -850 Uzycie strony kodowej DOS 850 (zachodnioeuropejskiej). -860 Uzycie strony kodowej DOS 860 (portugalskiej). -863 Uzycie strony kodowej DOS 863 (kanadyjskiej francuskiej). -865 Uzycie strony kodowej DOS 865 (nordyckiej). -7 Konwersja znakow 8-bitowych do przestrzeni 7-bitowej. -b, --keep-bom Zachowanie znaku BOM (Byte Order Makr). Jezeli plik wejsciowy zawiera BOM, powoduje zapisanie go w pliku wyjsciowym. Jest to domyslne zachowanie przy konwersji na DOS-owe konce linii. P. takze opcja "-r". -c, --convmode TRYB_KONW Ustawienie trybu konwersji. TRYB_KONW to jeden z: ascii, 7bit, iso, mac, przy czym domyslny jest ascii. -D, --display-enc KODOWANIE Ustawienie kodowania wyswietlanego tekstu. KODOWANIE to jedno z: ansi, unicode, unicodebom, utf8, utf8bom, przy czym domyslne to ansi. Ta opcja jest dostepna wylaczenie w programie dos2unix dla Windows z obsluga nazw plikow Unicode. Nie ma wplywu na same nawy odczytywanych i zapisywanych plikow, a jedynie na sposob ich wyswietlania. Istnieje kilka sposobow wyswietlania tekstu w konsoli Windows w zaleznosci od kodowania tekstu. Wszystkie maja swoje zalety i wady. ansi Domyslna metoda programu dos2unix to stosowanie tekstu kodowanego w ANSI. Zaleta jest wsteczna zgodnosc. Dziala z fontami rastrowymi, jak i TrueType. W niektorych rejonach moze byc potrzeba zmiany aktywnej strony kodowej DOS OEM na systemowa strone kodowa Windows ANSI przy uzyciu polecenia "chcp", poniewaz dos2unix wykorzystuje systemowa strone kodowa Windows. Wada kodowania ansi jest fakt, ze miedzynarodowe nazwy plikow ze znakami spoza domyslnej systemowej strony kodowej nie sa wyswietlane wlasciwie. Mozna zamiast tego zobaczyc znak zapytania albo niewlasciwy symbol. Jezeli nie pracujemy z obcymi nazwami plikow, ta metoda jest poprawna. unicode, unicodebom Zaleta kodowania unicode (windowsowa nazwa dla UTF-16) jest (zwykle) wlasciwe wyswietlanie tekstu. Nie ma potrzeby zmiany aktywnej strony kodowej. Moze byc potrzeba zmiany fontu konsoli na font TrueType, aby znaki miedzynarodowe byly wyswietlane poprawnie. Jesli znak nie jest obecny w foncie TrueType, zwykle widac maly kwadrat, czasami ze znakiem zapytania w srodku. W przypadku uzywania konsoli ConEmu caly tekst jest wyswietlany poprawnie, poniewaz ConEmu automatycznie wybiera dobry font. Wada kodowania unicode jest niezgodnosc z ASCII. Wyjscie nie jest latwe do obsluzenia w przypadku przekierowania do innego programu lub pliku. W przypadku uzycia metody "unicodebom", tekst w unikodzie jest poprzedzony znakiem BOM (Byte Order Mark). BOM jest wymagany do poprawnego przekierowania lub przekazywania przez potok w powloce PowerShell. utf8, utf8bom Zaleta kodowania utf8 jest zgodnosc z ASCII. Trzeba ustawic font konsoli na font TrueType. Przy uzyciu fontu TrueType tekst jest wyswietlany podobnie do kodowania "unicode". Wada jest fakt, ze w przypadku uzywania domyslnego fontu rastrowego, wszystkie znaki spoza ASCII sa wyswietlane niepoprawnie. Nie tylko unikodowe nazwy plikow, ale takze przetlumaczone komunikaty staja sie nieczytelne. W Windows skonfigurowanym dla rejonu Azji Wschodniej widac duzo migotania konsoli w trakcie wyswietlania komunikatow. W konsoli ConEmu metoda kodowania utf8 dziala dobrze. W przypadku uzycia metody "utf8bom", tekst w UTF-8 jest poprzedzony znakiem BOM (Byte Order Mark). BOM jest wymagany do poprawnego przekierowania lub przekazywania przez potok w powloce PowerShell. Domyslne kodowanie mozna zmienic przy uzyciu zmiennej srodowiskowej DOS2UNIX_DISPLAY_ENC, ustawiajac ja na "unicode", "unicodebom", "utf8" lub "utf8bom". -e, --add-eol Dodawanie znaku konca linii do ostatniej linii, jesli ta go nie zawiera. Dziala przy kazdej konwersji. Pliki przeksztalcone z formatu DOS do Uniksa moga nie miec w ostatnim wierszu znaku konca linii. Istnieja edytory tekstu zapisujace pliki tekstowe bez znaku konca wiersza w ostatniej linii. Niektore programy uniksowe maja problemy przy przetwarzaniu takich plikow, poniewaz standard POSIX okresla, ze kazdy wiersz pliku tekstowego musi konczyc sie znakiem konca linii. Na przyklad laczenie plikow moze nie dac oczekiwanego wyniku. -f, --force Wymuszenie konwersji plikow binarnych. -gb, --gb18030 Pod Windows pliki w UTF-16 sa domyslnie konwertowane do UTF-8, niezaleznie od ustawienia lokalizacji. Ta opcja pozwala przekonwertowac pliki w UTF-16 do GB18030. Opcja jest dostepna tylko pod Windows, wiecej w sekcji dotyczacej GB18030. -h, --help Wyswietlenie opisu i zakonczenie. -i[FLAGI], --info[=FLAGI] PLIK ... Wyswietlenie informacji o pliku. Konwersja nie jest wykonywana. Wypisywane sa nastepujace informacje, w tej kolejnosci: liczba DOS- owych koncow linii, liczba uniksowych koncow linii, liczba macowych koncow linii, znacznik BOM, tekstowy lub binarny, nazwa pliku. Przykladowe wyjscie: 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 moze byc blednie rozpoznany jako tekstowy. P. takze opcja "-s". Jesli dodatkowo uzyta jest opcja "-e" lub "--add-eol", wypisywany jest takze rodzaj konca linii z ostatniej linii, lub "noeol", jesli nie ma zadnego. Przykladowe wyjscie: 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 Opcjonalnie mozna ustawic dodatkowe flagi, aby zmienic wyjscie. Mozna dodac jedna lub wiecej flag. 0 Wypisanie wierszy informacji o pliku zakonczonych znakiem NUL zamiast znaku nowej linii. Pozwala to na poprawna interpretacje nazw plikow zawierajacych spacje lub cudzyslowy w przypadku uzycia flagi c. Flagi nalezy uzywac w polaczeniu z opcja "-0" lub "--null" programu xargs(1). d Wypisanie liczby DOS-owych koncow linii. u Wypisanie liczby uniksowych koncow linii. m Wypisanie liczby macowych koncow linii. b Wypisanie znacznika BOM. t Wypisanie, czy plik jest tekstowy, czy binarny. e Wypisanie rodzaju konca wiersza w ostatnim wierszu, lub "noeol", jesli nie ma zadnego. c Wypisanie tylko plikow, ktore zostalyby przekonwertowane. Z flaga "c" dos2unix wypisze tylko pliki zawierajace DOS-owe konce linii, a unix2dos wypisze tylko nazwy plikow zawierajacych uniksowe konce linii. Jesli dodatkowo uzyta jest opcja "-e" lub "--add-eol", wypisywane sa takze pliki bez zakonczenia ostatniej linii. h Wypisanie naglowka. p Wyswietlanie nazw plikow bez sciezki. Przyklady: Pokazanie informacji o wszystkich plikach *.txt: dos2unix -i *.txt Pokazanie tylko liczby DOS-owych i uniksowych koncow linii: dos2unix -idu *.txt Pokazanie tylko znacznika BOM: dos2unix --info=b *.txt Wypisanie listy plikow zawierajacych DOS-owe konce linii: dos2unix -ic *.txt Wypisanie listy plikow zawierajacych uniksowe konce linii: unix2dos -ic *.txt Wypisanie listy plikow zawierajacych DOS-owe konce linii lub bez znaku konca w ostatniej linii: dos2unix -e -ic *.txt Konwersja tylko plikow majacych DOS-owe konce linii, pozostawienie pozostalych bez zmian: dos2unix -ic0 *.txt | xargs -0 dos2unix Wyszukanie plikow tekstowych zawierajacych DOS-owe konce linii: find -name '*.txt' -print0 | xargs -0 dos2unix -ic -k, --keepdate Zachowanie znacznika czasu pliku wyjsciowego takiego samego, jak pliku wejsciowego. -L, --license Wyswietlenie licencji programu. -l, --newline Dodanie dodatkowego znaku konca linii. dos2unix: tylko DOS-owe znaki konca linii sa zamieniane na dwa uniksowe. W trybie Mac tylko macowe znaki konca linii sa zamieniane na dwa uniksowe. unix2dos: tylko uniksowe znaki konca linii sa zamieniane na dwa DOS-owe. W trybie Mac uniksowe znaki konca linii sa zamieniane na dwa macowe. -m, --add-bom Zapisanie znacznika BOM (Byte Order Mark) w pliku wyjsciowym. Domyslnie zapisywany jest BOM UTF-8. Jesli plik wejsciowy jest w kodowaniu UTF-16 i uzyto opcji "-u", zostanie zapisany BOM UTF-16. Nigdy nie nalezy uzywac tej opcji, jesli kodowanie wyjsciowe jest inne niz UTF-8, UTF-16 lub GB18030. Wiecej w sekcji UNICODE. -n, --newfile PLIK_WEJ PLIK_WYJ ... Tryb nowego pliku. Konwersja PLIKU_WEJ z zapisem wyjscia do PLIKU_WYJ. Nazwy plikow musza byc podane parami, a masek nie nalezy uzywac, gdyz spowoduje to utrate plikow. Osoba uruchamiajaca konwersje w trybie nowego pliku (par) bedzie wlascicielem przekonwertowanego pliku. Prawa odczytu/zapisu nowego pliku beda pochodzily z praw pliku oryginalnego po odjeciu umask(1) osoby uruchamiajacej konwersje. --no-allow-chown Bez zezwolenia na zmiane wlasciciela pliku w trybie starego pliku (domyslne). Przerwanie konwersji, jezeli uzytkownik lub grupa oryginalnego pliku nie moze byc zachowana w trybie starego pliku. P. takze opcje "-o" oraz "-n". Ta opcja jest dostepna tylko jesli dos2unix ma obsluge zachowywania uzytkownika i grupy plikow. --no-add-eol Bez dodawania znaku konca linii do ostatniego wiersza, jesli ten go nie zawiera. -O, --to-stdout Zapis na standardowe wyjscie, jak filtr uniksowy. Opcja "-o" przywroci tryb starego pliku (zamiane z miejscu). W polaczeniu z opcja "-e" pliki moga byc wlasciwie laczone - bez polaczonych ostatnich i pierwszych linii oraz znakow unikodowych BOM w srodku polaczonego pliku. Przyklad: dos2unix -e -O plik1.txt plik2.txt > wynik.txt -o, --oldfile PLIK ... Tryb starego pliku. Konwersja PLIKU i nadpisanie go wyjsciem. Program dziala domyslnie w tym trybie. Mozna uzywac masek. W trybie starego pliku (w miejscu) przekonwertowany plik otrzymuje tego samego wlasciciela, grupe oraz prawa odczytu/zapisu, jak plik oryginalny - takze wtedy, gdy plik jest konwertowany przez innego uzytkownika, majacego prawo zapisu do pliku (np. przez uzytkownika root). Konwersja zostanie przerwana, jesli nie bedzie mozliwe zachowanie oryginalnych wartosci. Zmiana wlasciciela moglaby oznaczac, ze pierwotny wlasciciel nie moze juz odczytac pliku. Zmiana grupy moglaby byc zagrozeniem bezpieczenstwa, plik moglby byc czytelny dla nie zamierzonych osob. Zachowanie wlasciciela, grupy i praw odczytu/zapisu jest obslugiwane tylko na Uniksie. Aby sprawdzic, czy doswunix ma obsluge zachowywania uzytkownika i grupy plikow, mozna napisac "dos2unix -V". Konwersja jest wykonywana zawsze przy uzyciu pliku tymczasowego. Jesli w trakcie konwersji wystapi blad, plik tymczasowy jest usuwany, a plik oryginalny pozostaje nietkniety. Jesli konwersja sie powiedzie, plik oryginalny jest zastepowany plikiem tymczasowym. Mozna miec prawa zapisu do pliku oryginalnego, ale brak uprawnien, aby nadac tego samego wlasciciela i/lub grupe, co plik oryginalny, plikowi tymczasowemu. Oznacza to, ze nie mozna zachowac uzytkownika i/lub grupy oryginalnego pliku. W takim przypadku mozna uzyc opcji "--allow-chown", aby kontynuowac konwersje: dos2unix --allow-chown foo.txt Inny sposob to uzycie trybu nowego pliku: dos2unix -n foo.txt foo.txt Zaleta opcji "--allow-chown" jest mozliwosc uzycia masek oraz zachowanie wlasciciela w miare mozliwosci. -q, --quiet Tryb cichy. Pominiecie wszystkich ostrzezen i komunikatow. Zwracanym kodem jest zero, chyba ze podano bledne opcje linii polecen. -r, --remove-bom Usuniecie znakow BOM (Byte Order Mark). Bez zapisywania BOM do pliku wyjsciowego. Jest to domyslne zachowanie przy konwersji na uniksowe konce linii. P. takze opcja "-b". -s, --safe Pominiecie plikow binarnych (domyslne). Pomijanie plikow binarnych ma na celu zapobiezenie przypadkowym bledom. Uwaga: wykrywanie plikow binarnych nie jest w 100% odporne na bledy. Pliki wejsciowe sa przeszukiwane pod katem symboli binarnych, ktore zwykle nie wystepuja w plikach tekstowych. Moze sie zdarzyc, ze plik binarny zawiera tylko zwykle znaki tekstowe. Taki plik binarny bedzie blednie widziany jako plik tekstowy. -u, --keep-utf16 Zachowanie oryginalnego kodowania pliku wejsciowego UTF-16. Plik wyjsciowy zostanie zapisany w tym samym kodowaniu UTF-16 (little lub big endian), co plik wejsciowy. Zapobiega to przeksztalceniu do UTF-8. Do pliku zostanie zapisany odpowiedni znacznik BOM UTF-16. Te opcje mozna wylaczyc opcja "-ascii". -ul, --assume-utf16le Przyjecie, ze format pliku wejsciowego to UTF-16LE. Jesli w pliku wejsciowym jest znacznik BOM (Byte Order Mark), ma on priorytet nad ta opcja. Jesli przyjeto bledne zalozenie (plik wejsciowy nie jest w formacie UTF-16LE), a konwersja sie uda, wynikiem bedzie plik wyjsciowy UTF-8 ze zlym tekstem. Konwersje te mozna odwrocic przy uzyciu polecenia iconv(1) do konwersji wyjscia UTF-8 z powrotem do UTF-16LE. Przywroci to plik oryginalny. Przyjecie UTF-16LE dziala jako tryb konwersji. Przy przelaczeniu na domyslny tryb ascii przyjecie UTF-16LE jest wylaczane. -ub, --assume-utf16be Przyjecie, ze format pliku wejsciowego to UTF-16BE. Ta opcja dziala analogicznie do "-ul". -v, --verbose Wyswietlanie szczegolowych komunikatow. Wyswietlane sa dodatkowe informacje o znacznikach BOM (Byte Order Mark) oraz liczbie przekonwertowanych koncow linii. -F, --follow-symlink Podazanie za dowiazaniami symbolicznymi i konwertowanie ich celow -R, --replace-symlink Zastepowanie dowiazan symbolicznych przekonwertowanymi plikami (oryginalne pliki docelowe pozostaja bez zmian). -S, --skip-symlink Pozostawienie dowiazan symbolicznych i celow bez zmian (domyslne). -V, --version Wyswietlenie informacji o wersji i zakonczenie. TRYB MAC Domyslnie znaki konca linii sa konwertowane z DOS-a do Uniksa i odwrotnie. Znaki konca linii systemu Mac nie sa konwertowane. W trybie Mac znaki konca linii sa konwertowane z formatu Maca do Uniksa i odwrotnie. Znaki konca linii systemu DOS nie sa zmieniane. Aby uruchomic program w trybie Mac, nalezy uzyc opcji linii polecen "-c mac" albo uzyc polecen "mac2unix" lub "unix2mac". TRYBY KONWERSJI ascii To jest domyslny tryb konwersji. Sluzy do konwersji plikow kodowanych ASCII lub zgodnie z ASCII, np. UTF-8. Wlaczenie trybu ascii wylacza tryby 7bit i iso. Jesli dos2unix ma obsluge UTF-16, pliki kodowane UTF-16 sa konwertowane do biezacego kodowania w systamach zgodnych z POSIX lub do UTF-8 na Windows. Wlaczenie trybu ascii wylacza opcje zachowywania kodowania UTF-16 ("-u") oraz opcje zakladajace wejscie UTF-16 ("-ul" oraz "-ub"). Aby sprawdzic, czy dos2unix ma obsluge UTF-16, mozna wywolac "dos2unix -V". Wiecej w sekcji UNICODE. 7bit W tym trybie wszystkie znaki 8-bitowe spoza ASCII (o wartosciach od 128 do 255) sa konwertowane do przestrzeni 7-bitowej. iso W tym trybie znaki sa konwertowane miedzy zestawem znakow DOS (strona kodowa) a zestawem znakow ISO-8859-1 (Latin-1) uzywanym na Uniksie. Znaki DOS-owe nie majace odpowiednika w ISO-8859-1, ktorych nie da sie przekonwertowac, sa zamieniane na kropke. To samo dotyczy znakow ISO-8859-1 bez odpowiednika w DOS-ie. Jesli uzywana jest tylko opcja "-iso", dos2unix probuje wykryc aktywna strone kodowa. Jesli nie jest to mozliwe, dos2unix uzywa domyslnej strony kodowej CP437, stosowanej glownie w USA. Aby wymusic okreslona strone kodowa, nalezy uzyc opcji "-437" (US), "-850" (zachodnioeuropejska), "-860" (portugalska), "-863" (kanadyjska francuska) lub "-865" (nordycka). Ponadto obslugiwana jest strona kodowa Windows CP1252 (zachodnioeuropejska) przy uzyciu opcji "-1252". W przypadku innych stron kodowych mozna uzyc narzedzia dos2unix wraz z iconv(1). Iconv potrafi konwertowac miedzy wieloma kodowaniami znakow. Nigdy nie nalezy uzywac konwersji ISO na plikach tekstowych w Unicode. Uszkodzilaby pliki kodowane UTF-8. Kilka przykladow: Konwersja z domyslnej strony kodowej DOS do uniksowego Latin-1: dos2unix -iso -n wejscie.txt wynik.txt Konwersja ze strony kodowej DOS CP850 do uniksowego Latin-1: dos2unix -850 -n wejscie.txt wynik.txt Konwersja ze strony kodowej Windows CP1252 do uniksowego Latin-1: dos2unix -1252 -n wejscie.txt wynik.txt Konwersja ze strony kodowej Windows CP1252 do uniksowego UTF-8 (Unicode): iconv -f CP1252 -t UTF-8 wejscie.txt | dos2unix > wynik.txt Konwersa z uniksowego Latin-1 do domyslnej strony kodowej DOS: unix2dos -iso -n wejscie.txt wynik.txt Konwersja z uniksowego Latin-1 do strony kodowej DOS CP850: unix2dos -850 -n wejscie.txt wynik.txt Konwersja z uniksowego Latin-1 do strony kodowej Windows CP1252: unix2dos -1252 -n wejscie.txt wynik.txt Konwersja z uniksowego UTF-8 (Unicode) do strony kodowej Windows CP1252: unix2dos < wejscie.txt | iconv -f UTF-8 -t CP1252 > wynik.txt Wiecej pod adresem oraz . UNICODE Kodowania Istnieja rozne kodowania Unicode. Pod Uniksem i Linuksem pliki Unicode sa zwykle kodowane z uzyciem UTF-8. Pod Windows pliki tekstowe Unicode moga byc kodowane w UTF-8, UTF-16, UTF-16 big-endian, ale przewaznie sa kodowane w UTF-16. Konwersje Pliki tekstowe Unicode moga miec znaki konca linii systemu DOS, Unix lub Mac, podobnie jak pliki tekstowe ASCII. Wszystkie wersje dos2unix i unix2dos potrafia konwertowac pliki kodowane UTF-8, poniewaz UTF-8 jest wstecznie zgodne z ASCII. Dos2unix i unix2dos z obsluga Unicode UTF-16 potrafia odczytywac pliki tekstowe kodowane UTF-16 little- oraz big-endian. Aby sprawdzic, czy dos2unix zostal zbudowany z obsluga UTF-16, nalezy napisac "dos2unix -V". Pod Uniksem/Linuksem pliki w kodowaniu UTF-16 sa konwertowane do kodowania znakow ustawionej lokalizacji. Kodowanie znakow dla lokalizacji mozna sprawdzic poleceniem locale(1). Jesli konwersja nie jest mozliwa, wystapi blad, a plik zostanie pominiety. Pod Windows pliki UTF-16 sa domyslnie konwertowane do UTF-8. Pliki tekstkowe w kodowaniu UTF-8 sa dobrze obslugiwane zarowno pod Windows, jak i Uniksem/Linuksem. Kodowania UTF-16 i UTF-8 sa w pelni zgodne, konwersja nie spowoduje utraty zadnej czesci tekstu. W przypadku wystapienia bledu konwersji, na przyklad w przypadku bledu w pliku wejsciowym UTF-16, plik zostanie pominiety. W przypadku uzycia opcji "-u", plik wejsciowy zostanie zapisany w tym samym kodowaniu UTF-16, co plik wejsciowy. Opcja "-u" zapobiega konwersji do UTF-8. Dos2unix oraz unix2dos nie maja opcji pozwalajacej na konwersje plikow UTF-8 do UTF-16. Tryby konwersji ISO i 7-bit nie dzialaja na plikach UTF-16. Znacznik BOM W systemie Windows pliki tekstowe zwykle zawieraja znacznik BOM (Byte Order Mark), poniewaz wiele programow dla Windows (w tym Notepad) dodaje domyslnie znaczniki BOM. Wiecej informacji mozna znalezc pod adresem . Pod Uniksem pliki Unicode zwykle nie maja znacznika BOM. Pliki tekstowe sa traktowane jako kodowane zgodnie z kodowaniem znakow ustawionej lokalizacji. Dos2unix potrafi wykryc tylko, czy plik jest w formacie UTF-16, jesli zawiera znacznik BOM. Jesli plik UTF-16 nie ma tego znacznika, dos2unix potraktuje plik jako binarny. Do konwersji pliku UTF-16 bez znacznika BOM mozna uzyc opcji "-ul" lub "-ub". Dos2unix nie zapisuje domyslnie znaku BOM w pliku wyjsciowym. Z opcja "-b" Dos2unix zapisuje BOM, jesli plik wejsciowy zawiera BOM. Unix2dos domyslnie zapisuje znaczniki BOM w pliku wyjsciowym, jesli plik wejsciowy ma BOM. Aby usunac BOM, mozna uzyc opcji "-r". Dos2unix oraz unix2dos zawsze zapisuja znaczniki BOM, jesli uzyta zostanie opcja "-m". Unikodowe nazwy plikow w Windows Dos2unix ma opcjonalna obsluge odczytu i zapisu nazw plikow Unicode w linii polecen Windows. Oznacza to, ze dos2unix potrafi otwierac pliki zawierajace w nazwie znaki spoza domyslnej systemowej strony kodowej ANSI. Aby sprawdzic, czy dos2unix dla Windows zostal zbudowany z obsluga nazw plikow Unicode, mozna wpisac "dos2unix -V". Przy wyswietlaniu nazw plikow Unicode w konsoli Windows wystepuje kilka problemow. Wiecej informacji w opisie opcji "-D", "--display-enc". Nazwy plikow moga byc wyswietlane blednie na konsoli, ale pliki beda zapisywane z poprawna nazwa. Przyklady Unicode Konwersja pliku UTF-16 (z BOM) z formatu Windows do uniksowego UTF-8: dos2unix -n wejscie.txt wynik.txt Konwersja pliku UTF-16LE (bez BOM) z formatu Windows do uniksowego UTF-8: dos2unix -ul -n wejscie.txt wynik.txt Konwersja z uniksowego UTF-8 do UTF-8 z BOM dla Windows: unix2dos -m -n wejscie.txt wynik.txt Konwersja z uniksowego UTF-8 do UTF-16 dla Windows: unix2dos < wejscie.txt | iconv -f UTF-8 -t UTF-16 > wynik.txt GB18030 GB18030 to standard urzedowy w Chinach. Obowiazkowy podzbior standardu GB18030 jest oficjalnym wymaganiem kazdego oprogramowania sprzedawanego w Chinach. Wiecej pod adresem . GB18030 jest w pelni zgodny z Unicode i moze byc uwazany za format transformacji unikodu. Podobnie jak UTF-8, GB18030 jest zgodny z ASCII. Jest takze zgodny ze strona kodowa Windows 936, znana tez jako GBK. Pod Uniksem/Linuksem pliki UTF-16 sa konwertowane do GB18030, jesli kodowanie dla lokalizacji jest ustawione na GB18030. Uwaga: bedzie to dzialac tylko, jesli lokalizacja jest obslugiwana przez system. Liste obslugiwanych lokalizacji mozna sprawdzic poleceniem "locale -a". Pod Windows w celu konwersji plikow UTF-16 do GB18030 nalezy uzyc opcji "-gb". Pliki w kodowaniu GB18030 moga miec znacznik BOM, podobnie jak pliki w Unicode. PRZYKLADY Odczyt ze standardowego wejscia i zapis na standardowe wyjscie: dos2unix < a.txt cat a.txt | dos2unix Konwersja i zastapienie a.txt; konwersja i zastapienie b.txt: dos2unix a.txt b.txt dos2unix -o a.txt b.txt Konwersja i zastapienie a.txt w trybie ascii: dos2unix a.txt Konwersja i zastapienie a.txt w trybie ascii; konwersja i zastapienie 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 zastapienie 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 zastapienie 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 zastapienie a.txt; konwersja i zastapienie 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 KONWERSJA REKURENCYJNA W powloce uniksowej mozna uzyc polecen find(1) i xargs(1) do rekurencyjnego uruchomienia dos2unix na wszystkich plikach tekstowych w strukturze drzewa katalogow. Na przyklad, aby przekonwertowac wszystkie pliki .txt w drzewie katalogow ponizej katalogu biezacego, nalezy napisac: find . -name '*.txt' -print0 |xargs -0 dos2unix Opcja "-print0" polecenia find(1) i odpowiadajaca jej opcja "-0" polecenia xargs(1) sa potrzebne, jesli istnieja pliki ze spacjami lub cudzyslowami w nazwie. W przeciwnym wypadku opcje te mozna pominac. Inny sposob to uzycie find(1) z opcja "-exec": find . -name '*.txt' -exec dos2unix {} \; Z poziomu linii polecen Windows mozna uzyc nastepujacego polecenia: for /R %G in (*.txt) do dos2unix "%G" Uzytkownicy powloki PowerShell moga uzyc nastepujacego polecenia w Windows PowerShell: get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname} LOKALIZACJA LANG Glowny jezyk wybiera sie zmienna srodowiskowa LANG. Zmienna LANG sklada sie z kilku czesci. Pierwsza czesc to male litery oznaczajace kod jezyka. Druga czesc jest opcjonalna i zawiera kod kraju pisany wielkimi literami, poprzedzony podkresleniem. Jest takze opcjonalna trzecia czesc: kodowanie znakow, poprzedzone kropka. Kilka przykladow dla powlok zgodnych ze standardem POSIX: export LANG=nl holenderski export LANG=nl_NL holenderski, Holandia export LANG=nl_BE holenderski, Belgia export LANG=es_ES hiszpanski, Hiszpania export LANG=es_MX hiszpanski, Meksyk export LANG=en_US.iso88591 angielski, USA, kodowanie Latin-1 export LANG=en_GB.UTF-8 angielski, Wlk. Brytania, kodowanie UTF-8 Pelna liste kodow jezykow i krajow mozna znalezc w podreczniku do gettexta: W systemach uniksowych do uzyskania informacji dotyczacych lokalizacji mozna uzyc polecenia locale(1). LANGUAGE Przy uzyciu zmiennej srodowiskowej LANGUAGE mozna okreslic liste jezykow wg priorytetu, oddzielonych dwukropkami. Dos2unix przyjmuje pierwszenstwo zmiennej LANGUAGE nad LANG. Na przyklad, najpierw holenderski, nastepnie niemiecki: "LANGUAGE=nl:de". Aby skorzystac z listy wg priorytetow ze zmiennej LANGUAGE, trzeba najpierw wlaczyc lokalizacje przez ustawienie zmiennej LANG (lub LC_ALL) na wartosc inna niz "C". Wiecej informacji znajduje sie w podreczniku do gettexta: W przypadku wybrania niedostepnego jezyka, otrzymamy standardowe, angielskie komunikaty. DOS2UNIX_LOCALEDIR Przy uzyciu zmiennej srodowiskowej DOS2UNIX_LOCALEDIR, mozna nadpisac ustawienie LOCALEDIR z czasu kompilacji. LOCALEDIR to katalog uzywany do znalezienia plikow lokalizacji. Domyslna wartoscia dla GNU jest "/usr/local/share/locale". Opcja --version wyswietla uzywana wartosc LOCALEDIR. Przyklad (dla powloki POSIX): export DOS2UNIX_LOCALEDIR=$HOME/share/locale WARTOSC ZWRACANA W przypadku powodzenia zwracane jest zero. Jesli wystapi blad systemowy, zwracany jest ostatni blad systemowy. W przypadku innych bledow zwracane jest 1. Wartosc zwracana w trybie cichym to zawsze zero, z wyjatkiem sytuacji podania blednych opcji linii polecen. STANDARDY AUTORZY Benjamin Lin ; Bernd Johannes Wuebben (tryb mac2unix) ; Christian Wurll (dodawanie dodatkowej nowej linii) ; Erwin Waterlander (prowadzacy) Strona projektu: Strona SourceForge: ZOBACZ TAKZE file(1) find(1) iconv(1) locale(1) xargs(1) dos2unix 2024-01-22 dos2unix(1)