Příkaz diff
z balíčku diffutils
porovnává soubory řádek po řádku. Je to velmi užitečné, když chcete zkontrolovat, zda byly v souboru od poslední zálohy provedeny nedávné změny a jaké jsou. Stav ukončení 0
znamená, že nebyly nalezeny žádné rozdíly, 1
znamená, že byly nalezeny nějaké rozdíly, a 2
znamená potíže. A samozřejmě, pokud dojde ke změnám, diff
vám je ukáže. Ale pojďme se podívat na několik příkladů.
Příklad 1:Oba soubory mají stejný obsah
Alice a Bob každý grilují a zveřejnili své menu. Abych se rozhodl, které menu by se mi líbilo nejvíce, mohl bych porovnat menu následovně:
$ diff menu1 menu2
$ echo $?
0
$ cat menu{1,2}
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
Víte, oba servírují žebírka, hrudí a trhané vepřové. Mezi oběma soubory není žádný rozdíl. Možná by Alice a Bob měli spojit své síly a uspořádat opravdu velké grilování.
Když Eva slyšela, že Alice a Bob pořádají večírky, začala žárlit a rozhodla se uspořádat také grilování. Její menu je dodáváno se souborem menu3
. Pojďme se podívat, jaké jsou rozdíly v její nabídce ve srovnání s jídelním lístkem Alice a Boba.
Příklad 2:Nyní se jedná o nápoje
$ diff menu1 menu3
4a5,8
>
> # Drinks
> * Soda
> * Beer
$ echo $?
1
$
Nyní existují rozdíly. A s výstupem na prvním řádku diff
nám říká, co je třeba přidat (a) do menu1
takže má stejný obsah jako menu3
. Takže 4a5,8
znamená, že musíte přidat několik řádků za řádek 4 v menu1
tak, aby to vypadalo jako řádky 5–8 v menu3
.
Při přepínání pozice souborů vypadá výstup jinak:
$ diff menu3 menu1
5,8d4
<
< # Drinks
< * Soda
< * Beer
Nyní diff
nám říká, že řádky 5-8 v menu3
musí být odstraněn (d), aby byl soubor identický s menu1
.
Příklad 3:Když je něco ke změně
Upravil jsem menu1
a menu2
znovu vypadat takto:
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
# The menu
* Spare Ribs
* Pulled Pork
* Pulled Pork
Tentokrát diff
nám ukáže, který řádek je třeba změnit (c), aby oba soubory vypadaly stejně:
$ diff menu1 menu2
3c3
< * Brisket
---
> * Pulled Pork
Zabalit to
diff
Command je snadno a flexibilně použitelný nástroj pro porovnání souborů řádek po řádku. Podívejte se na diff(1)
abyste zjistili, co dalšího lze udělat pomocí diff
.
[ Chcete si vyzkoušet své schopnosti správce systému? Proveďte hodnocení dovedností ještě dnes. ]