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

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 jest diff> Komenda. W tym artykule omówimy, jak korzystać z diff> polecenie porównywania plików linia po linii w systemie Linux.

Spis treści

Zrozumienie polecenia diff

różnica oznacza różnica .The diff> 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ładnia diff> 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ę

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.

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órym diff> wskazuje na potrzebę usunięcia linii. Biorąc pod uwagę dwa pliki, a.txt> I b.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:

  • 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

The diff> 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> ). The d> 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> ). The a> 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. The diff> 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świetlanie diff> 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ć z diff> polecenie porównania dwóch plików linia po linii w systemie Linux?

Aby porównać dwa pliki linia po linii za pomocą metody diff> 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.

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

Tak diff> 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 plik diff> 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ą metody diff> Komenda?

Aby rekurencyjnie porównać dwa katalogi i ich zawartość, użyj rozszerzenia ` -r`> lub ` --recursive`> opcja z diff> 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.