logo

Jak porównać pliki linia po linii w systemie Linux | polecenie różnicowe

W świecie Linuksa zarządzanie plikami i porównywanie plików to typowe zadanie zarówno administratorów systemów, jak i programistów. Możliwość porównywania plików linia po linii ma kluczowe znaczenie dla identyfikacji różnic, debugowania kodu i zapewnienia integralności danych. Potężnym narzędziem ułatwiającym ten proces jestdiff>Komenda. W tym artykule omówimy, jak korzystać zdiff>polecenie porównywania plików linia po linii w systemie Linux.

Java math.random

Spis treści



Zrozumienie polecenia diff

różnica oznacza różnica .Thediff>Command to wszechstronne narzędzie, które jest preinstalowane w większości dystrybucji Linuksa. Jego głównym celem jest porównanie zawartości dwóch plików i wyświetlenie różnic między nimi. Polecenie zapewnia kompleksowy sposób wyróżniania zmian, uzupełnień i usunięć w przejrzystym i czytelnym formacie.

To polecenie służy do wyświetlania różnic w plikach poprzez porównywanie plików linia po linii. W odróżnieniu od swoich kolegów, cmp I kom , mówi nam, które linie w jednym pliku należy zmienić, aby oba pliki były identyczne.

Najważniejszą rzeczą do zapamiętania jest to różnica używa pewnych specjalne symbole I instrukcje które są wymagane, aby dwa pliki były identyczne. Zawiera instrukcje dotyczące zmiany pierwszego pliku, aby pasował do drugiego pliku.



Podstawowa składnia polecenia diff

Podstawowa składniadiff>polecenie jest następujące:

diff [OPTION]... FILE1 FILE2>

Tutaj, ` FILE1`> i ` FILE2`> to dwa pliki, które chcesz porównać.

` OPTION`> flaga pozwala dostosować zachowanie pliku ` diff`> Komenda.



Opcje dostępne w poleceniu diff

Opcja

Opis

-c>Lub--context>

Różnice wyjściowe w trybie kontekstowym

-u>Lub--unified>

Różnice wyjściowe w trybie ujednoliconym (bardziej zwięzłe)

-i>Lub--ignore-case>

Wykonaj porównanie bez uwzględniania wielkości liter

–ignoruj-całą-spację

inicjator słownika c#

Ignoruj ​​​​białe znaki podczas porównywania linii

-krótki

Wyświetla tylko informację, czy pliki się różnią, bez szczegółów

–rekurencyjne

Rekursywnie porównuj katalogi

-y>Lub--side-by-side>

Wyświetl wynik w formacie side-by-side

Praktyczna implementacja Jak porównywać pliki linia po linii w systemie Linux? :

Porównywanie dwóch plików

Porównaj pliki linia po linii w systemie Linux.

sortuj tablicę w Javie

Powiedzmy, że mamy dwa pliki z nazwami a.txt I b.txt obejmujący 5 stanów indyjskich.

cat a.txt cat b.txt>
wyświetlanie zawartości plików za pomocą polecenia cat

wyświetlanie zawartości plików za pomocą polecenia cat

Teraz, stosując polecenie diff bez żadnej opcji, otrzymamy następujący wynik:

diff a.txt b.txt>
porównywanie plików linia po linii w systemie Linux

porównywanie plików linia po linii w systemie Linux

Przyjrzyjmy się, co oznacza ten wynik. Pierwsza linijka różnica dane wyjściowe będą zawierać:

  • Numery linii odpowiadające pierwszemu plikowi,
  • Specjalny symbol i
  • Numery linii odpowiadające drugiemu plikowi.

Podobnie jak w naszym przypadku, 0a1 co znaczy Po linie 0 (na samym początku pliku) musisz dodać Tamil Nadu aby dopasować drugą linię pliku o numerze 1. Następnie informuje nas, jakie linie znajdują się w każdym pliku poprzedzonym symbolem:

  • Wiersze poprzedzone a < to linie z pierwszego pliku.
  • Linie poprzedzone przez > to linie z drugiego pliku.
  • Następna linia zawiera 2,3c3 co oznacza, że ​​linia 2 do linii 3 w pierwszym pliku musi zostać zmieniona, aby odpowiadała linii nr 3 w drugim pliku. Następnie mówi nam te linie z powyższymi symbolami.
  • Trzy kreski (-) po prostu oddziel linie pliku 1 i pliku 2.

Jako podsumowanie, aby oba pliki były identyczne, najpierw dodaj Tamil Nadu w pierwszym pliku na samym początku dopasuj linię 1 drugiego pliku, a następnie zmień linie 2 i 3 pierwszego pliku, tj. Uttar Pradesh I Kalkuta z linią 3 drugiego pliku, tj. Andhra Pradesh . Następnie zmień linię 5 pierwszego pliku, tj. Dżammu i Kaszmir z linią 5 drugiego pliku, tj. Uttar Pradesh .

Usuwanie linii w plikach za pomocą polecenia diff

Rozważmy scenariusz, w którymdiff>wskazuje na potrzebę usunięcia linii. Biorąc pod uwagę dwa pliki,a.txt>Ib.txt>:

wyświetlanie zawartości plików za pomocą polecenia cat

wyświetlanie zawartości plików za pomocą polecenia cat

diff a.txt b.txt>
Usuwanie linii w pliku

Usuwanie linii w pliku

Tutaj powyżej wyjście 3d2 oznacza usunięcie trzeciej linii pierwszego pliku, tj. Telangana tak aby oba pliki zsynchronizować na linii 2.

Wyświetlanie różnic w trybie kontekstowym

Aby wyświetlić różnice w trybie kontekstowym, użyj opcji -C opcja. Spróbujmy to zrozumieć na przykładzie, mamy dwa pliki plik1.txt I plik2.txt :

wyświetlanie zawartości plików za pomocą polecenia cat

wyświetlanie zawartości plików za pomocą polecenia cat

diff -c file1.txt file2.txt>
Wyświetlanie różnic w trybie kontekstowym

Wyświetlanie różnic w trybie kontekstowym

W powyższym wyjściu:

szybkie sortowanie
  • Pierwszy plik jest oznaczony przez ` ***`> , a drugi plik jest oznaczony przez ` ---`> .
  • Linia z ` ***************`> służy jako separator.
  • Pierwsze dwie linie zawierają informacje o pliku 1 i pliku 2, wyświetlając nazwę pliku, datę i czas modyfikacji.
  • Następnie trzy gwiazdki ` ***`> po nich następuje zakres linii od pierwszego pliku (linie od 1 do 4). Cztery gwiazdki ` ****`> następować. Następnie wyświetlana jest zawartość pierwszego pliku z określonymi wskaźnikami:
    • Jeśli linia nie uległa zmianie, jest ona poprzedzona dwiema spacjami.
    • Jeśli linia wymaga zmiany, jest ona poprzedzona symbolem i spacją. Symbole wskazują:
      • `+`> : Linia w drugim pliku, która ma zostać dodana do pierwszego pliku w celu uzyskania identycznych wyników.
      • `-`> : Linia w pierwszym pliku, która ma zostać usunięta w celu uzyskania identycznych wyników.
  • Trzy kreski ` ---`> po nich następuje zakres linii z drugiego pliku (linie od 1 do 4), oddzielone przecinkami. Cztery kreski ` ----`> postępuj zgodnie z instrukcjami i zostanie wyświetlona zawartość drugiego pliku.

Wyświetlanie różnic w trybie ujednoliconym

Aby wyświetlić różnice w trybie ujednoliconym, użyj opcji -W opcja. Jest podobny do trybu kontekstowego, ale tak nie wyświetla żadnych zbędnych informacji lub pokazuje informacje w zwięzłej formie.

wyświetlanie zawartości plików za pomocą polecenia cat

wyświetlanie zawartości plików za pomocą polecenia cat

diff -u file1.txt file2.txt>
Wyświetlanie różnic w trybie ujednoliconym

Wyświetlanie różnic w trybie ujednoliconym

W powyższym wyjściu:

  • Pierwszy plik jest oznaczony przez ` ---`> , a drugi plik jest oznaczony przez ` +++`> .
  • Pierwsze dwie linie zawierają informacje o pliku 1 i pliku 2, w tym datę i godzinę modyfikacji.
  • Potem ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> oznacza zakres linii dla obu plików. W tym przypadku reprezentuje linie od 1 do 4 w obu plikach.
  • Kolejne linie przedstawiają zawartość plików wraz z określonymi wskaźnikami:
    • Niezmienione linie są wyświetlane bez przedrostka.
    • Linie w pierwszym pliku, który ma zostać usunięty, są poprzedzone prefiksem->.
    • Linie w drugim pliku, który ma zostać dodany, są poprzedzone prefiksem+>.

W tym przykładzie dane wyjściowe wskazują, że aby oba pliki były identyczne, należy usunąć linie zawierające mv i comm z pierwszego pliku (file1.txt>) i należy do niego dodać linie zawierające diff i comm.

Porównywanie plików bez uwzględniania wielkości liter

Domyślnie ` diff`> wielkość liter ma znaczenie. Aby przeprowadzić porównanie bez uwzględniania wielkości liter, użyj ` -i`> opcja:

wyświetlanie zawartości plików za pomocą polecenia cat

wyświetlanie zawartości plików za pomocą polecenia cat

Thediff>polecenie jest następnie używane do porównania tych plików z plikiem-i>opcja, która sprawia, że ​​w porównaniu nie jest uwzględniana wielkość liter.

diff -i file1.txt file2.txt>
Porównywanie bez uwzględniania wielkości liter

Porównywanie bez uwzględniania wielkości liter

  • 2d1>: Oznacza to zmianę w linii 2 pierwszego pliku (file1.txt>). Thed>oznacza usuwanie i mówi o usunięciu linii 2 z pierwszego pliku.
    • >: Ta linia oznacza treść linii, która ma zostać usunięta. W tym przypadku jest to mv.
  • 3a3>: Oznacza to dodanie w linii 3 pierwszego pliku (file1.txt>). Thea>oznacza dodanie i mówi o dodaniu linii na pozycji 3.
    • >różnica>: Ta linia reprezentuje treść, która ma zostać dodana. W tym przypadku jest różnie.

Podsumowując, wynik mówi nam, że aby oba pliki były identyczne (ignorując wielkość liter), musimy usunąć linię zawierającą mv z pierwszego pliku (file1.txt>) i dodaj różnicę linii w tej samej pozycji. Thediff>polecenie, za pomocą-i>pozwala na porównanie bez uwzględniania wielkości liter, co powoduje, że podczas analizy wartości mv i MV są traktowane jako takie same.

Wyświetlaniediff>Wersja

Aby sprawdzić wersję ` diff`> zainstalowany w twoim systemie, użyj rozszerzenia ` --version`> opcja:

diff --version>
Wyświetlanie wersji polecenia diff

Wyświetlanie wersji polecenia diff

To polecenie dostarcza informacji o wersji, licencji i autorach pliku ` diff`> pożytek.

Często zadawane pytania dotyczące polecenia diff – często zadawane pytania

Jak korzystać zdiff>polecenie porównania dwóch plików linia po linii w systemie Linux?

Aby porównać dwa pliki linia po linii za pomocą metodydiff>polecenie, po prostu użyj następującej składni:

diff file1.txt file2.txt>

To polecenie wyświetli różnice między dwoma plikami, podświetlając dodatki, usunięcia i modyfikacje.

iteruj mapę Java

Czy mogę zignorować różnice w białych znakach podczas porównywania plików z rozszerzeniemdiff>Komenda?

Takdiff>polecenie udostępnia-w>Lub--ignore-all-space>opcja ignorowania różnic w białych znakach. Na przykład:

diff -w file1.txt file2.txt>

Jest to szczególnie przydatne przy porównywaniu plików kodu, w których zmiany wcięcia lub odstępów nie są znaczące.

Jak mogę utworzyć plik poprawki za pomocądiff>Komenda?

Aby utworzyć plik poprawki reprezentujący różnice między dwoma plikami, użyj metody-u>opcję i przekieruj wyjście do pliku:

diff -u file1.txt file2.txt>moja łatka.łatka>

Wygenerowany plik poprawki można później zastosować w celu zsynchronizowania innego pliku ze zmianami.

W jakim formacie jest ujednolicony plikdiff>wynik i czym różni się od formatu kontekstowego?

Ujednolicony format (` -u`> opcja) w ` diff`> dane wyjściowe zapewniają bardziej zwięzłą i czytelną reprezentację różnic w porównaniu z formatem kontekstowym (` -c`> opcja). Wyświetla zmiany w bardziej zwartej formie, co ułatwia zrozumienie modyfikacji pomiędzy plikami.

Jak rekursywnie porównać dwa katalogi w systemie Linux za pomocą metodydiff>Komenda?

Aby rekurencyjnie porównać dwa katalogi i ich zawartość, użyj rozszerzenia ` -r`> lub ` --recursive`> opcja zdiff>Komenda:

diff -r directory1/ directory2/>

To polecenie porównuje wszystkie pliki w określonych katalogach i dostarcza szczegółowych informacji o różnicach.

Wniosek

W świecie Linuksa porównywanie plików jest częstym zadaniem administratorów i programistów systemów. ` diff> polecenie jest przydatnym narzędziem pomagającym w tym procesie. W tym artykule opisano, jak używać plików ` diff`> do porównywania plików linia po linii w systemie Linux. Obejmuje podstawową składnię, ważne opcje, takie jak tryb kontekstowy i tryb ujednolicony, oraz praktyczne zastosowania, takie jak tworzenie plików poprawek i rekurencyjne porównywanie katalogów. Niezależnie od tego, czy debugujesz kod, czy zapewniasz integralność plików, zrozumienie i opanowanie rozszerzenia ` diff`> polecenie jest niezbędne do wydajnego zarządzania plikami w systemie Linux.