Jak korzystać z plików Diff w systemie Linux

Jak korzystać z plików Diff w systemie Linux

Diff to narzędzie wiersza poleceń dla systemów Unix, które pozwala porównać dwa pliki lub katalogi i zobaczyć różnice między nimi. Jest idealny do porównywania starych i nowych wersji plików, aby zobaczyć, co się zmieniło. W tym artykule pokazujemy, jak diffłatwo porównywać pliki w systemie Linux.

Porównywanie plików z diff

  • Otwórz okno terminala.
  • Wpisz diffi ścieżki do dwóch plików, które chcesz porównać. W tym przypadku porównuję dwa małe programy C na moim pulpicie za pomocą następującego polecenia:

diff ~/Desktop/hello.c ~/Desktop/hello-1.c

Okno terminala pokazujące polecenie diff.
  • Naciśnij, Enteraby wysłać polecenie. Wynikowy ekran pokaże wszystkie różne linie między plikami. Porównywane numery wierszy będą wyświetlane jako „1c1”, co oznacza, że ​​pierwszy wiersz został zmieniony i znaleziono następujące różnice.
Okno terminala pokazujące wynik polecenia diff.
  • Aby zobaczyć widok plików obok siebie i różnice między nimi, użyj flagi -ypo diff. Na przykład:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

Okno terminala pokazujące polecenie, które wydrukuje różnicę wizualną.

Każda linia z symbolem rury ( |) jest linią z różnicą. Tylko pamiętaj, aby najpierw rozwinąć okno terminala, w przeciwnym razie możesz mieć trudności z zobaczeniem wyświetlacza.

Okno terminala pokazujące wynik wizualnego polecenia diff.

Porównywanie plików z Meld

Funkcjonalność diffmożna również uzyskać za pośrednictwem Meld , GUI dla diff. Biorąc pod uwagę, że interfejs użytkownika diffa może być trudny do opanowania, Meld jest użytecznym narzędziem.

  • Zainstaluj Meld z wiersza poleceń, otwierając terminal i wpisując:

sudo apt -y install meld

Lub

sudo dnf -y install meld

dla dystrybucji opartych na RPM.

Spowoduje to zainicjowanie menedżera pakietów apt i rozpoczęcie instalacji Meld. Zauważ, że -yflaga automatycznie powie „tak” na wszelkie monity; usuń go, jeśli wolisz potwierdzać te monity ręcznie.

Okno terminala pokazujące polecenie instalacji Meld.
  • Po wyświetleniu monitu wprowadź hasło administratora. Gdy ponownie zobaczysz wiersz polecenia, instalacja jest zakończona i można otworzyć program Meld.
Okno terminala pokazujące proces instalacji Meld.
  • Kiedy otworzysz Meld, zobaczysz trzy opcje: porównanie plików, porównanie katalogów i widok kontroli wersji. Kliknij „Plik”.
Zrzut ekranu ekranu powitalnego Meld.
  • Pojawią się dwa rozwijane menu, oba z napisem „(Brak)”. Kliknij jeden, aby wybrać plik do porównania.
Zrzut ekranu ekranu Meld z zaznaczeniem pierwszego selektora plików.
  • Kliknij drugie menu rozwijane, aby wybrać drugi plik do porównania.
Zrzut ekranu ekranu Meld z zaznaczeniem drugiego selektora plików.
  • Kliknij przycisk „Porównaj”.
Zrzut ekranu ekranu Meld z podświetleniem przycisku Porównaj.
  • Następne okno podsumowuje wszelkie znalezione różnice między dwoma plikami. Czerwone znaki to różnice, a niebieskie tło wskazuje, że w tej linii występuje różnica. Zielone tło wskazuje, że linia istnieje w jednym pliku, ale nie w drugim.
Zrzut ekranu programu Meld z prostym widokiem porównania dwóch plików.
  • Aby przechodzić między różnicami, klikaj przyciski w górę iw dół na pasku menu. Możesz także kliknąć bezpośrednio w dokumencie za pomocą myszy.
Zrzut ekranu programu Meld z zaznaczeniem jego przycisku nawigacji różnicowej.

Manipulowanie plikami w Meld

Oprócz dokonywania porównań Meld umożliwia zmianę porównywanych plików. Meld będzie nadal analizować dokument pod kątem zmian podczas modyfikowania dowolnej wersji, a w dowolnym momencie możesz nacisnąć Ctrl+ Z, aby cofnąć zmiany.

  • Aby skopiować zmiany z jednego pliku do drugiego, kliknij małe czarne strzałki między zmianami. Na przykład kliknięcie strzałki po lewej stronie spowoduje użycie linii lewego dokumentu do nadpisania dokumentu po prawej stronie.
Zrzut ekranu programu Meld przedstawiający przyciski rozwiązywania różnic.
  • Linie można również wstawiać do dokumentów bez nadpisywania. Jeśli przytrzymasz klawisz Ctrl, strzałki z ostatniego kroku zmienią się w znaki plusa. Kliknij ikonę, aby otworzyć małe okno dialogowe, w którym możesz wybrać miejsce wstawienia nowej linii.
Zrzut ekranu programu Meld pokazujący monit o dodanie różnic.
  • Na koniec wpisz bezpośrednio w dokumencie. Po prostu wstaw kursor tak jak zwykle i zacznij pisać.
  • Po zakończeniu wprowadzania zmian kliknij przycisk „Zapisz”, aby zapisać pliki.
Zrzut ekranu przedstawiający program Meld z zaznaczonym przyciskiem zapisywania poszczególnych plików.

Tworzenie plików diff za pomocą Meld i diff

Oprócz pokazywania różnic między dwoma plikami, możesz także użyć Meld do tworzenia „plików różnicowych”. Są to małe fragmenty tekstu zawierające instrukcje, jak zastosować zmiany z jednej wersji pliku do drugiej. Jest to przydatne, jeśli chcesz szybko rozpowszechniać aktualizacje kodu bez ponownego udostępniania całego archiwum źródłowego.

  • Otwórz dwa pliki, które chcesz porównać.
Zrzut ekranu programu Meld przedstawiający prostą różnicę.
  • Kliknij menu Opcje w prawym górnym rogu okna.
Zrzut ekranu przedstawiający przycisk opcji Melda.
  • Wybierz podmenu „Porównanie”.
Zrzut ekranu przedstawiający menu opcji Melda z wyróżnieniem podmenu Porównanie.
  • Kliknij opcję podrzędną „Formatuj jako łatkę”.
Zrzut ekranu przedstawiający podmenu Porównanie z wyróżnieniem opcji podrzędnej Format.
  • Spowoduje to otwarcie małego okna, w którym Meld wydrukuje cały plik różnic między dwoma plikami. W tym momencie możesz skopiować ten tekst do schowka lub zapisać go w pliku. Aby zrobić to drugie, kliknij przycisk „Zapisz poprawkę”.
Zrzut ekranu okna podrzędnego Meld's Patch z podświetleniem na

Chociaż tworzenie plików diff w Meld jest proste i bezpośrednie, istnieją przypadki, w których dostęp do GUI podczas edycji kodu może nie być możliwy. W tym celu możesz również użyć diffprogramu do wygenerowania pliku różnicowego.

  • Otwórz terminal i sprawdź, czy istnieją różnice między tymi dwoma plikami:

diff hello.c hello-1.c

Terminal pokazujący prostą różnicę między dwoma plikami.
  • Utwórz prosty plik różnic, używając -cflagi:

diff -c hello.c hello-1.c > hello.diff

Terminal pokazujący podstawowe wyjście pliku diff.
  • Opcjonalnie użyj -uopcji, która łączy dwa strumienie tekstu w jeden ujednolicony blok różnic. Może to być pomocne, jeśli zmieniasz dużo kodu i chcesz zaoszczędzić miejsce na dysku:

diff -u hello.c hello-1.c > hello.diff

Terminal pokazujący bardziej złożone dane wyjściowe ujednoliconych różnic.

Używanie plików diff do poprawiania kodu źródłowego

Jak omówiono powyżej, plik diff umożliwia utworzenie łatwego do udostępnienia podsumowania zmian w kodzie źródłowym. Jednak sam diff nie może zastosować ich do istniejących plików. Aby to zrobić, użyj programu towarzyszącego diff, patch.

  • Określ oryginalny kod źródłowy, który plik różnic próbuje zmienić:

cat hello.diff | sed 1q

Terminal pokazujący nagłówek oryginalnego pliku źródłowego.
  • Utwórz kopię zapasową oryginalnego kodu źródłowego:

cp hello.c hello.c.old

  • Uruchom program patch z oryginalnym plikiem na pierwszym argumencie i plikiem diff na drugim:

patch hello.c hello.diff

Terminal pokazujący proste polecenie poprawki do pojedynczego pliku źródłowego.

Należy zauważyć, że plik różnic może również zawierać zmiany obejmujące wiele plików. Zastosuj to, umieszczając wszystkie pliki potrzebne do aktualizacji w jednym katalogu i uruchamiając patch < multi-file.diff.

  • Sprawdź, czy program łatek pomyślnie zaktualizował plik źródłowy, porównując go z kopią zapasową:

diff -y hello.c hello.c.old

Terminal pokazujący różnicę wizualną między nowym a oryginalnym plikiem źródłowym.

FYI: Git to potężny wieloplatformowy program do kontroli wersji. Dowiedz się, jak możesz go używać do zarządzania repozytoriami kodu źródłowego w systemie Linux .

Często Zadawane Pytania

Czy można wielokrotnie poprawiać plik?

Tak. Należy jednak zauważyć, że wartość numeru wiersza w pliku różnicowym jest statyczna. Na przykład zastosowanie różnicy, która dodaje pięć wierszy kodu w wierszu 1, dostosuje cały plik o pięć wierszy. Podczas gdy nowoczesne narzędzia mogą kompensować zmiany z pojedynczych różnic, zastosowanie więcej niż jednego może spowodować niepotrzebne konflikty kodu.

Czy plik diff jest podobny do łatki Git?

Tak. Zarówno diff, jak i Git używają podobnego typu formatu dla swoich poprawek kodu. W rezultacie można zamienić te dwa narzędzia podczas stosowania aktualizacji kodu źródłowego. Na przykład bieganie git apply hello.diffjest równoznaczne z bieganiem patch < hello.diff.

Czy możesz używać Meld z programem do kontroli wersji, takim jak Git?

Tak. Jedną z najpotężniejszych funkcji Meld jest to, że może działać w sposób przejrzysty z dowolnym programem do kontroli wersji. Daje to możliwość łatwej interakcji z repozytoriami poza interfejsem terminala.

Aby to zrobić, naciśnij Ctrl+ N, a następnie kliknij przycisk „Widok kontroli wersji”. Następnie kliknij pole rozwijane pod nim i wybierz „Inne”. Spowoduje to wyświetlenie małego okna, w którym możesz zobaczyć i załadować swoje repozytorium Git.

Źródło obrazu: Unsplash . Wszystkie zrzuty ekranu autorstwa Ramces Red.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *