- NAZWA
- SKŁADNIA
- OPIS
- OPCJE
- TRYB MAC
- TRYBY KONWERSJI
- UNICODE
  - Kodowania
  - Konwersje
  - Znacznik BOM
  - Przykłady Unicode
- PRZYKŁADY
- KONWERSJA REKURENCYJNA
- LOKALIZACJA
- WARTOŚĆ ZWRACANA
- STANDARDY
- AUTORZY
- ZOBACZ TAKŻE

# NAZWA

dos2unix - konwerter formatu plików tekstowych między systemami DOS/Mac a Uniksem

# SKŁADNIA

        dos2unix [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]
        unix2dos [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]

# OPIS

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`.

# OPCJE

--

  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

-ascii

  Konwersja tylko znaków końca linii. Jest to domyślny tryb konwersji.

-iso

  Konwersja między zestawami znaków DOS i ISO-8859-1. Więcej w sekcji TRYBY KONWERSJI.

-1252

  Użycie strony kodowej Windows 1252 (zachodnioeuropejskiej).

-437

  Użycie strony kodowej DOS 437 (US). Jest to domyślna strona kodowa używana przy konwersji ISO.

-850

  Użycie strony kodowej DOS 850 (zachodnioeuropejskiej).

-860

  Użycie strony kodowej DOS 860 (portugalskiej).

-863

  Użycie strony kodowej DOS 863 (kanadyjskiej francuskiej).

-865

  Użycie strony kodowej DOS 865 (nordyckiej).

-7

  Konwersja znaków 8-bitowych do przestrzeni 7-bitowej.

-b, --keep-bom

  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`.

-c, --convmode TRYB_KONW

  Ustawienie trybu konwersji. TRYB_KONW to jeden z: ascii, 7bit, iso, mac, przy czym domyślny jest ascii.

-f, --force

  Wymuszenie konwersji plików binarnych.

-h, --help

  Wyświetlenie opisu i zakończenie.

-k, --keepdate

  Zachowanie znacznika czasu pliku wyjściowego takiego samego, jak pliku wejściowego.

-L, --license

  Wyświetlenie licencji programu.

-l, --newline

  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.

-m, --add-bom

  Zapis znacznika BOM (Byte Order Mark) UTF-8 w pliku wyjściowym. Nie należy używać tej opcji, jeśli kodowanie wyjściowe jest inne niż UTF-8. Więcej w sekcji UNICODE.

-n, --newfile PLIK_WEJ PLIK_WYJ ...

  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ę.

-o, --oldfile PLIK ...

  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.

-q, --quiet

  Tryb cichy. Pominięcie wszystkich ostrzeżeń i komunikatów. Zwracanym kodem jest zero, chyba że podano błędne opcje linii poleceń.

-r, --remove-bom

  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`.

-s, --safe

  Pominięcie plików binarnych (domyślne).

-ul, --assume-utf16le

  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.

-ub, --assume-utf16be

  Przyjęcie, że format pliku wejściowego to UTF-16BE.

  Ta opcja działa analogicznie do `-ul`.

-F, --follow-symlink

  Podążanie za dowiązaniami symbolicznymi i konwertowanie ich celów

-R, --replace-symlink

  Zastępowanie dowiązań symbolicznych przekonwertowanymi plikami (oryginalne pliki docelowe pozostają bez zmian).

-S, --skip-symlink

  Pozostawienie dowiązań symbolicznych i celów bez zmian (domyślne).

-V, --version

  Wyświetlenie informacji o wersji i zakończenie.

# TRYB MAC

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`.

# TRYBY KONWERSJI

ascii

  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.

7bit

  W tym trybie wszystkie znaki 8-bitowe spoza ASCII (o wartościach od 128 do 255) są konwertowane do przestrzeni 7-bitowej.

iso

  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 DOS CP850 do uniksowego Latin-1

          dos2unix -850 -n in.txt out.txt

  Konwersja ze strony Windows CP1252 do uniksowego Latin-1

          dos2unix -1252 -n in.txt out.txt

  Konwersja ze strony 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 DOS CP850

          unix2dos -850 -n in.txt out.txt

  Konwersja z uniksowego Latin-1 do strony Windows CP1252

          unix2dos -1252 -n in.txt out.txt

  Konwersja z uniksowego UTF-8 (Unicode) do strony 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.

# UNICODE

## Kodowania

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.

## Konwersje

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`.

Wersje programów dos2unix i unix2dos dla systemu Windows konwertują pliki kodowane UTF-16 zawsze do UTF-8. Uniksowe wersje dos2unix/unix2dos konwertują pliki kodowane UTF-16 do zestawu znaków ustawionej lokalizacji, kiedy jest ustawiony na UTF-8. Zestaw znaków lokalizacji można sprawdzić poleceniem locale(1).

Ponieważ pliki tekstowe kodowane UTF-8 są dobrze obsługiwane zarówno pod Windows, jak i Uniksem, dos2unix i unix2dos nie mają opcji zapisu plików UTF-16. Wszystkie znaki UTF-16 mogą być zakodowane w UTF-8, konwersja z UTF-16 do UTF-8 jest bezstratna. Pliki UTF-16 będą pominięte na Uniksie, jeśli zestaw znaków lokalizacji to nie UTF-8, aby zapobiec przypadkowej utracie tekstu. W przypadku błędu konwersji UTF-16 do UTF-8, na przykład kiedy plik wejściowy UTF-16 zawiera błąd, plik będzie pominięty.

Tryby konwersji ISO i 7-bit nie działają na plikach UTF-16.

## Znacznik BOM

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`.

## Przykłady Unicode

Konwersja pliku UTF-16 z Windows (z BOM) do uniksowego UTF-8

        dos2unix -n in.txt out.txt

Konwersja pliku UTF-16LE z Windows (bez BOM) do uniksowego UTF-8

        dos2unix -ul -n in.txt out.txt

Konwersja z uniksowego UTF-8 do UTF-8 dla Windows z BOM

        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

# PRZYKŁADY

Odczyt ze standardowego wejścia i zapis na standardowe wyjście.

        dos2unix
        dos2unix -l -c mac

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

# KONWERSJA REKURENCYJNA

Można użyć dos2unix w połączeniu z poleceniami find(1) i xargs(1) do rekurencyjnej konwersji plików 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 |xargs dos2unix

# LOKALIZACJA

LANG

  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/gettext.html#Language-Codes

  W systemach uniksowych do uzyskania informacji dotyczących lokalizacji można użyć polecenia locale(1).

LANGUAGE

  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/gettext.html#The-LANGUAGE-variable

  W przypadku wybrania niedostępnego języka, otrzymamy standardowe, angielskie komunikaty.

DOS2UNIX_LOCALEDIR

  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

# WARTOŚĆ ZWRACANA

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ń.

# STANDARDY

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

# AUTORZY

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/

Strona Freecode: http://freecode.com/projects/dos2unix

# ZOBACZ TAKŻE

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