DIFF(1) Narzędzia GNU DIFF(1) NAZWA diff - szukanie różnic pomiędzy dwoma plikami SKŁADNIA diff [opcje] plik1 plik2 OPIS Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń: pinfo diff lub info diff. W najprostszym przypadku diff porównuje zawartość dwóch plików, plik1 i plik2. Nazwa pliku - oznacza tekst odczytywany ze standardowego wejścia. W specjalnym przypadku "diff - -" porównuje kopię standardowego wyjścia ze samym sobą. Jeśli plik1 jest katalogiem a plik2 nie, diff porównuje plik z katalogu plik1, którego nazwa jest taka sama, jak plik2, i odwrotnie. Plik nie będący katalogiem nie może być -. Jeśli zarówno plik1 jak i plik2 są katalogami, diff porównuje odpowied- nie pliki w obu katalogach, w kolejności alfabetycznej. To porównanie nie jest rekurencyjne, chyba że podano opcję -r lub --recursive. diff nigdy nie porównuje zawartości katalogu tak, jakby był on plikiem. Podany plik nie może być standardowym wejściem, ponieważ standardowe wejście nie ma nazwy i nie dotyczy go zapis 'plik o tej samej nazwie'. Opcje diff na ogół zaczynają się od -, więc zwykle nazwy plików plik1 oraz plik2 nie mogą zaczynać się od -, jednak argument -- traktuje pozostałe argumenty jako nazwy plików, nawet jeśli zaczynają się one od -. OPCJE Poniżej znajduje się podsumowanie wszystkich opcji akceptowanych przez GNU diff. Większość opcji posiada dwie równoważne formy, jedną z nich jest pojedyncza litera poprzedzona kreską -, a drugą pełna nazwa poprzedzona przez --. Wiele pojedynczych liter opcji (nie wymagających argumentu) może być łączonych w pojedynczym słowie: '-ac' jest równo- ważne z '-a -c'. Opcje w formie pełnej nazwy mogą być skracane do dowol- nego unikalnego przedrostka. Klamry ([ i ]) oznaczają, że opcja pobiera opcjonalny argument. -i --ignore-case Ignorowanie zmian w wielkości liter, duże i ma łe litery są uznawane za równoważne. -w --ignore-all-space Ignorowanie wszystkich odstępów przy porównywaniu plików. -b --ignore-space-change Ignorowanie zmian w ilości odstępów. -B --ignore-blank-lines Ignorowanie zmian, które jedynie dodają lub usuwają puste linie. -I regexp --ignore-matching-lines=regexp Ignorowanie zmian, które jedynie dodają lub usuwają linie pasujące do wyrażenia regularnego regexp. --binary diff normalnie czyta i zapisuje wszystkie dane jako tekst. Ta opcja wymusza odczyt i zapis danych w trybie binarnym. Nie ma efektu na systemach zgodnych z POSIX, jak GNU czy tradycyjne Uniksy. Jednak wiele systemów operacyjnych komputerów oso- bistych oznacza koniec linii dwuznakową sekwencją: znakiem powrotu karetki plus znak nowej linii. Na takich systemach diff normalnie ignoruje powroty karetki na wejściu i generuje je na końcu każdej linii wyjściowej, ale z opcją --binary traktuje powrót karetki jak każdy inny znak wejściowy i nie dokłada go na końcu tworzonych linii. Przydatne do operowania na plikach nie- tekstowych, które mają być wymieniane z systemami POSIX-owymi. Do porównywania dwu plików bajt po bajcie służy polecenie cmp(1). -a --text Traktowanie wszystkich plików jako pliki tekstowe i porównywanie ich linia po linii, nawet jeśli nie wyglądają one na pliki tekstowe. -c -C linie --context[=linie] Użycie kontekstowego formatu wyjściowego z pokazaniem ilości linii kontekstu podanej w linie (wartość całkowita), lub trzy jeśli nie podano linie. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu. -u -U linie --unified[=linie] U życie zunifikowanego formatu wyjściowego i pokazanie ilości linii kontekstu podanej w linie (wartość całkowita), lub trzy jeśli nie podano linie. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu. -linie Wyświetlenie ilości linii kontekstu podanej w linie (wartość całkowita). Ta opcja nie ustala wyjściowego formatu, nie ma ona efektu jeśli nie podano opcji -c lub -u. Ta opcja jest przestarzała. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu. -L etykieta --label=etykieta Użycie tekstu etykieta w miejsce nazwy plików w nagłówku formatu kontekstowego i zunifikowanego. -p --show-c-function Pokazanie, do jakiej funkcji C należy każda ze zmian. -F regexp --show-function-line=regexp Pokazanie ostatniej poprzedzającej linii, która pasuje do wyra- żenia regularnego regexp dla każdego różniącego się fragmentu w formacie kontekstowym i zunifikowanym. -q --brief Poinformowanie jedynie o tym, czy pliki się różnią, bez podawa- nia szczegółów na temat różnic. -e --ed Stworzenie wyjścia, które jest poprawnym skryptem ed. -f --forward-ed Stworzenie wyjścia, które wygląda prawie tak jak skrypt ed, ale zawiera modyfikacje w kolejności pojawiania się zmian w pliku. -n --rcs Wyprowadzenie różnic w formacie RCS, tak jak -f, z tym wy- jątkiem, że każda komenda wyszczególnia numer linii, której dotyczy. -y --side-by-side Użycie formatu wyjściowego jeden obok drugiego. -W kolumny --width=kolumny Użycie szerokości wyjścia kolumny w formacie jedna obok drugiej. --left-column Wyświetlenie jedynie lewej kolumny z dwóch wspólnych w formacie jedna obok drugiej. --suppress-common-lines Nie wyświetlanie wspólnych linii w formacie jedna obok drugiej. -D nazwa --ifdef=nazwa Stworzenie połączonego wyjścia w formacie preprocesora nazwa. --old-group-format=formatgrupy Użycie formatu formatgrupy do wyprowadzenia grupy linii wziętej jedynie z pierwszego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --new-group-format=formatgrupy Użycie formatu formatgrupy do wyprowadzenia grupy linii wziętej jedynie z drugiego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --changed-group-format=formatgrupy Użycie formatu wyjściowego formatgrupy do wyświetlania grupy linii zawierających różniące się linie z obu plików. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --unchanged-group-format=formatgrupy Użycie formatu formatgrupy do wyprowadzenia wspólnej grupy linii wziętej z obu plików. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. Format grupy linii W formacie określającym sposób wypisania grupy linii zwykłe znaki oznaczają same siebie; specyfikacje konwersji zaczynają się od znaku procentu % i mają jedną z poniższych postaci: %< linie z plik1, łącznie z końcowym znakiem nowej linii, forma- towane zgodnie z formatem starych linii %> linie z plik2, formatowane zgodnie z formatem nowych linii %= linie wspólne dla obu plików, formatowane zgodnie z formatem linii niezmienionych %[-][szer][.[dokł]]{doxX}litera wartość określona literą, sformatowana w stylu printf. litery mają, w odniesieniu do grup linii w nowym pliku, nastę- pujące znaczenie (dla grup w starym pliku używa się małych liter): F numer pierwszej linii L numer ostatniej linii N ilość linii = L-F+1 E F-1 M L+1 %% pojedynczy dosłowny znak procentu %. %c'C' gdzie C jest pojedynczym znakiem, oznacza C. Nie może to być odwrotny ukośnik ani apostrof. Na przykład, %c':' oznacza dwukropek, nawet wewnątrz części then formatu if-then-else, którą normalnie by kończył. %c'\O' gdzie O jest łańcuchem 1, 2 lub 3 cyfr ósemkowych, oznacza znak o kodzie ósemkowym O. Na przykład, %c'\0' oznacza znak null. (A=B?T:E) Jeśli A równa się B, to T, w przeciwnym razie E. A i B są albo obie stałymi podanymi dziesiętnie albo pojedynczymi li- terami, interpretowanymi jak wyżej. --line-format=formatlinii Użycie formatu formatlinii do wyprowadzenia wszystkich linii. To samo, co równoczesne użycie wszystkich opcji formatowania linii (--old-line-format, --new-line-format, --unchanged-line- format) z tym samym formatem. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --old-line-format=formatlinii Użycie formatu formatlinii do wyprowadzenia linii wziętej jedynie z pierwszego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --new-line-format=formatlinii Użycie formatu formatlinii do wyprowadzenia linii wziętej jedynie z drugiego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else. --unchanged-line-format=formatlinii Użycie formatu formatlinii do wyprowadzenia wspólnej linii wzię- tej z obu plików. Pomocne w tworzeniu plików wynikowych o konst- rukcji typu if-then-else. Format linii W formacie określającym sposób wypisania linii zwyk łe znaki oznaczają same siebie; specyfikacje konwersji zaczynają się od znaku procentu % i mają jedną z poniższych postaci: %l zawartość danej linii, nie licząc kończącego ją znaku nowej linii (jeśli jest takowy). Ten format ignoruje czy linia jest niekompletna czy poprawnie zakończona. %L zawartość danej linii, łącznie z kończącym ją znakiem nowej linii (jeśli jest takowy). Jeżeli linia jest niekompletna, to zachowuje tę niekompletność. %[-][szer][.[dokł]]{doxX}n numer linii wejściowej, sformatowany w stylu printf. %% dosłowny znak procentu %. %c'C' dosłowny znak C. Nie może to być odwrotny ukośnik ani apostrof. %c'\O' znak o kodzie ósemkowym O. -l --paginate Przesłanie wyjścia przez pr, aby podzielić je na strony. -t --expand-tabs Rozszerzanie tabulatorów do spacji na wyjściu, aby zachować ory- ginalne ułożenie tabulatorów pliku wejściowego. -T --initial-tab Wyprowadzenie tabulatora zamiast spacji przed tekstem linii w formacie normalnym lub kontekstowym. Powoduje to normalny wygląd tabulatorów w linii. -r --recursive Rekurencyjne porównanie wszystkich podkatalogów, jeśli porówny- wane są katalogi. -N --new-file Jeśli podczas porównywania katalogów plik istnieje jedynie w jednym z katalogów, będzie traktowany tak, jakby by ł obecny w drugim katalogu, ale pusty. -P --unidirectional-new-file Jeśli podczas porównywania katalogów plik istnieje jedynie w drugim katalogu, będzie traktowany tak, jakby był obecny w pierw- szym katalogu, ale pusty. -s --report-identical-files Poinformowanie, jeśli oba pliki są identyczne. -x wzorzec --exclude=wzorzec Podczas porównywania katalogów, ignorowanie plików i podkata- logów, których nazwy pasują do wzorca wzorzec. -X plik --exclude-from=plik Podczas porównywania katalogów, ignorowanie plików i podkata- logów, których nazwa pasuje do jednego z wzorców podanych w pliku plik. -S plik --starting-file=plik Podczas porównywania katalogów rozpoczęcie od pliku plik. Opcja ta jest użyteczna podczas wznawiania przerwanego porównania. --horizon-lines=linie Nie ignorowanie ostatnich linie linii wspólnego przedrostka oraz pierwszych linie linii wspólnego przyrostka. -d --minimal Zmiana algorytmu na taki, który może czasami znaleźć mniejszą liczbę zmian. Spowalnia to działania diff (czasami bardzo znacznie). -H --speed-large-files Użycie algorytmów heurystycznych aby przyspieszyć przeszukiwanie dużych plików ze znaczną liczbą rozrzuconych małych zmian. -h Ta opcja aktualnie nie ma żadnego efektu, ale istnieje dla zgodności z systemem Unix. --sdiff-merge-assist Wyświetlenie dodatkowych informacji pomocnych dla sdiff. sdiff korzysta z tej opcji gdy uruchamia diff. Użytkownicy nie powinni korzystać z tej opcji bezpośrednio. --help Wyświetlenie informacji o stosowaniu programu i dostępnych opc- jach. -v --version Wyświetlenie numeru wersji programu. KOPIOWANIE Plik ten powstał na podstawie podręcznika info pakietu diffutils. Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a per- mission notice identical to this one. Permission is granted to copy and distribute translations of this man- ual into another language, under the above conditions for modified ver- sions, except that this permission notice may be stated in a transla- tion approved by the Foundation. ZOBACZ TAKŻE cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1). DIAGNOSTYKA Zwracana wartość 0 oznacza, że nie odnaleziono różnic, 1 oznacza znalezienie różnic, a 2 kłopoty. Narzędzia różnicowe GNU 1 października 1994 DIFF(1)