1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
|
*****************************************************
* GENERATED FILE, DO NOT EDIT *
* THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
*****************************************************
This file was generated by po4a(7). Do not store it (in VCS, for example),
but store the PO file used as source file by po4a-translate.
In fact, consider this as a binary, and the PO file as a regular .c file:
If the PO get lost, keeping this translation up-to-date will be harder.
=pod
=encoding UTF-8
=head1 NAZWA
dos2unix - konwerter formatu plików tekstowych między systemami DOS/Mac a
Uniksem
=head1 SKŁADNIA
dos2unix [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]
unix2dos [opcje] [PLIK ...] [-n PLIK_WEJ PLIK_WYJ ...]
=head1 OPIS
Pakiet Dos2unix zawiera narzędzia C<dos2unix> oraz C<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 C<-o> i C<-n>. Ponadto wersja z
SunOS-a/Solarisa domyślnie wykonuje konwersję w trybie I<iso>, podczas gdy
ta wersja domyślnie wykonuje konwersję w trybie I<ascii>.
=head1 OPCJE
=over 4
=item B<-->
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
=item B<--allow-chown>
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 C<-o> i C<-n>. Opcja jest dostępna tylko wtedy, gdy
dos2unix ma obsługę zachowywania użytkownika i grupy plików.
=item B<-ascii>
Konwersja tylko znaków końca linii. Jest to domyślny tryb konwersji.
=item B<-iso>
Konwersja między zestawami znaków DOS i ISO-8859-1. Więcej w sekcji TRYBY
KONWERSJI.
=item B<-1252>
Użycie strony kodowej Windows 1252 (zachodnioeuropejskiej).
=item B<-437>
Użycie strony kodowej DOS 437 (US). Jest to domyślna strona kodowa używana
przy konwersji ISO.
=item B<-850>
Użycie strony kodowej DOS 850 (zachodnioeuropejskiej).
=item B<-860>
Użycie strony kodowej DOS 860 (portugalskiej).
=item B<-863>
Użycie strony kodowej DOS 863 (kanadyjskiej francuskiej).
=item B<-865>
Użycie strony kodowej DOS 865 (nordyckiej).
=item B<-7>
Konwersja znaków 8-bitowych do przestrzeni 7-bitowej.
=item B<-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 C<-r>.
=item B<-c, --convmode TRYB_KONW>
Ustawienie trybu konwersji. TRYB_KONW to jeden z: I<ascii>, I<7bit>, I<iso>,
I<mac>, przy czym domyślny jest ascii.
=item B<-D, --display-enc KODOWANIE>
Ustawienie kodowania wyświetlanego tekstu. KODOWANIE to jedno z: I<ansi>,
I<unicode>, I<unicodebom>, I<utf8>, I<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.
=over 4
=item B<ansi>
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 C<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.
=item B<unicode, unicodebom>
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 C<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.
=item B<utf8, utf8bom>
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 C<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 C<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.
=back
Domyślne kodowanie można zmienić przy użyciu zmiennej środowiskowej
DOS2UNIX_DISPLAY_ENC, ustawiając ją na C<unicode>, C<unicodebom>, C<utf8>
lub C<utf8bom>.
=item B<-f, --force>
Wymuszenie konwersji plików binarnych.
=item B<-gb, --gb18030>
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.
=item B<-h, --help>
Wyświetlenie opisu i zakończenie.
=item B<-i[FLAGI], --info[=FLAGI] PLIK ...>
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 C<-s>.
Opcjonalnie można ustawić dodatkowe flagi, aby zmienić wyjście. Można dodać
jedną lub więcej flag.
=over 4
=item B<0>
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ą C<-0> lub C<--null> programu xargs(1).
=item B<d>
Wypisanie liczby DOS-owych końców linii.
=item B<u>
Wypisanie liczby uniksowych końców linii.
=item B<m>
Wypisanie liczby macowych końców linii.
=item B<b>
Wypisanie znacznika BOM.
=item B<t>
Wypisanie, czy plik jest tekstowy, czy binarny.
=item B<c>
Wypisanie tylko plików, które zostałyby przekonwertowane.
Z flagą C<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.
=item B<h>
Wypisanie nagłówka.
=item B<p>
Wyświetlanie nazw plików bez ścieżki.
=back
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
=item B<-k, --keepdate>
Zachowanie znacznika czasu pliku wyjściowego takiego samego, jak pliku
wejściowego.
=item B<-L, --license>
Wyświetlenie licencji programu.
=item B<-l, --newline>
Dodanie dodatkowego znaku końca linii.
B<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.
B<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.
=item B<-m, --add-bom>
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 C<-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.
=item B<-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 I<nie> należy używać, gdyż
I<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ę.
=item B<--no-allow-chown>
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 C<-o> oraz
C<-n>. Ta opcja jest dostępna tylko jeśli dos2unix ma obsługę zachowywania
użytkownika i grupy plików.
=item B<-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.
Aby sprawdzić, czy doswunix ma obsługę zachowywania użytkownika i grupy
plików, można napisać C<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 C<--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 C<--allow-chown> jest możliwość użycia masek oraz zachowanie
właściciela w miarę możliwości.
=item B<-q, --quiet>
Tryb cichy. Pominięcie wszystkich ostrzeżeń i komunikatów. Zwracanym kodem
jest zero, chyba że podano błędne opcje linii poleceń.
=item B<-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 C<-b>.
=item B<-s, --safe>
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.
=item B<-u, --keep-utf16>
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ą
C<-ascii>.
=item B<-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 I<tryb konwersji>. Przy przełączeniu na
domyślny tryb I<ascii> przyjęcie UTF-16LE jest wyłączane.
=item B<-ub, --assume-utf16be>
Przyjęcie, że format pliku wejściowego to UTF-16BE.
Ta opcja działa analogicznie do C<-ul>.
=item B<-v, --verbose>
Wyświetlanie szczegółowych komunikatów. Wyświetlane śa dodatkowe informacje
o znacznikach BOM (Byte Order Mark) oraz liczbie przekonwertowanych końców
linii.
=item B<-F, --follow-symlink>
Podążanie za dowiązaniami symbolicznymi i konwertowanie ich celów
=item B<-R, --replace-symlink>
Zastępowanie dowiązań symbolicznych przekonwertowanymi plikami (oryginalne
pliki docelowe pozostają bez zmian).
=item B<-S, --skip-symlink>
Pozostawienie dowiązań symbolicznych i celów bez zmian (domyślne).
=item B<-V, --version>
Wyświetlenie informacji o wersji i zakończenie.
=back
=head1 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<-c
mac> albo użyć poleceń C<mac2unix> lub C<unix2mac>.
=head1 TRYBY KONWERSJI
=over 4
=item B<ascii>
W trybie C<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.
=item B<7bit>
W tym trybie wszystkie znaki 8-bitowe spoza ASCII (o wartościach od 128 do
255) są konwertowane do przestrzeni 7-bitowej.
=item B<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 C<-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 C<-437> (US), C<-850> (zachodnioeuropejska),
C<-860> (portugalska), C<-863> (kanadyjska francuska) lub C<-865>
(nordycka). Ponadto obsługiwana jest strona kodowa Windows CP1252
(zachodnioeuropejska) przy użyciu opcji C<-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 L<http://czyborra.com/charsets/codepages.html> oraz
L<http://czyborra.com/charsets/iso8859.html>.
=back
=head1 UNICODE
=head2 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.
=head2 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ć C<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 C<-u>, plik wejściowy zostanie zapisany w tym samym
kodowaniu UTF-16, co plik wejściowy. Opcja C<-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.
=head2 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
L<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 C<-ul> lub
C<-ub>.
Dos2unix nie zapisuje domyślnie znaku BOM w pliku wyjściowym. Z opcją C<-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 C<-r>.
Dos2unix oraz unix2dos zawsze zapisują znaczniki BOM, jeśli użyta zostanie
opcja C<-m>.
=head2 Unikodowe nazwy plików w Windows
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ć C<dos2unix -V>.
Przy wyświetlaniu nazw plików Unicode w konsoli Windows występuje kilka
problemów. Więcej informacji w opisie opcji C<-D>, C<--display-enc>. Nazwy
plików mogą być wyświetlane błędnie na konsoli, ale pliki będą zapisywane z
poprawną nazwą.
=head2 Przykłady Unicode
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
=head1 GB18030
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 L<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 C<locale -a>.
Pod Windows w celu konwersji plików UTF-16 do GB18030 należy użyć opcji
C<-gb>.
Pliki w kodowaniu GB18030 mogą mieć znacznik BOM, podobnie jak pliki w
Unicode.
=head1 PRZYKŁADY
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
=head1 KONWERSJA REKURENCYJNA
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 C<-print0> polecenia find(1) i odpowiadająca jej opcja C<-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ą C<-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}
=head1 LOKALIZACJA
=over 4
=item B<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:
L<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).
=item B<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: C<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:
L<http://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html>
W przypadku wybrania niedostępnego języka, otrzymamy standardowe, angielskie
komunikaty.
=item B<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
C</usr/local/share/locale>. Opcja B<--version> wyświetla używaną wartość
LOCALEDIR.
Przykład (dla powłoki POSIX):
export DOS2UNIX_LOCALEDIR=$HOME/share/locale
=back
=head1 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ń.
=head1 STANDARDY
L<http://pl.wikipedia.org/wiki/Plik_tekstowy>
L<http://en.wikipedia.org/wiki/Carriage_return>
L<http://pl.wikipedia.org/wiki/End-of-line>
L<http://pl.wikipedia.org/wiki/Unicode>
=head1 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: L<http://waterlan.home.xs4all.nl/dos2unix.html>
Strona SourceForge: L<http://sourceforge.net/projects/dos2unix/>
=head1 ZOBACZ TAKŻE
file(1) find(1) iconv(1) locale(1) xargs(1)
|