Android

Command utos sa linux

Linux diff command summary with examples

Linux diff command summary with examples

Talaan ng mga Nilalaman:

Anonim

diff ay isang utility-line utility na nagbibigay-daan sa iyo upang ihambing ang dalawang mga file na linya sa pamamagitan ng linya. Maaari rin itong ihambing ang mga nilalaman ng mga direktoryo.

Ang diff utos ay karaniwang ginagamit upang lumikha ng isang patch na naglalaman ng mga pagkakaiba sa pagitan ng isa o higit pang mga file na maaaring ilapat gamit ang utos ng patch .

Paano Gamitin ang diff Command

Ang syntax para sa diff utos ay ang mga sumusunod:

diff… FILES

Ang diff utos ay maaaring ipakita ang output sa ilang mga format na may normal, konteksto, at pinag-isang format na ang pinaka-karaniwang. Kasama sa output ang impormasyon tungkol sa kung aling mga linya sa mga file ang dapat mabago upang maging magkapareho sila. Kung tumutugma ang mga file, walang output ang ginawa.

Upang mai-save ang command output sa isang file, gamitin ang redirection operator:

diff file1 file2 > patch

, gagamitin namin ang sumusunod na dalawang file upang maipaliwanag kung paano gumagana ang diff utos:

file1

Ubuntu Arch Linux Debian CentOS Fedora file2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Normal na Format

Sa pinakasimpleng form kapag ang diff utos ay pinapatakbo sa dalawang mga file ng teksto nang walang anumang pagpipilian, gumagawa ito ng isang output sa normal na format:

diff file1 file2

Ang output ay magiging hitsura ng isang bagay tulad nito:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

Ang normal na format ng output ay binubuo ng isa o higit pang mga seksyon na naglalarawan ng mga pagkakaiba. Ang bawat seksyon ay ganito:

change-command < from-file-line… --- > to-file-line…

0a1 , 2d2 at 4c4, 5 ay mga pagbabago sa pagbabago. Ang bawat pagbabago ng utos ay naglalaman ng mga sumusunod, mula kaliwa hanggang kanan:

  • Ang linya ng linya o hanay ng mga linya sa unang file.A espesyal na pagbabago ng character.Ang linya ng numero o hanay ng mga linya sa pangalawang file.

Ang pagbabago ng character ay maaaring isa sa mga sumusunod:

  • a - Idagdag ang mga linya. c - Baguhin ang mga linya. d - Tanggalin ang mga linya.

Ang utos ng pagbabago ay sinusundan ng kumpletong linya na tinanggal ( < ) at idinagdag sa file ( > ).

Ipaliwanag natin ang output:

  • 0a1 - Magdagdag ng linya 1 ng pangalawang file sa simula ng file1 (pagkatapos ng linya 0 ).
    • > Kubuntu - Ang linya mula sa pangalawang linya na idinagdag sa unang file tulad ng inilarawan sa itaas.
    2d2 - Tanggalin ang linya 2 sa unang file. Ang 2 pagkatapos ng simbolo d nangangahulugan na kung ang linya ay hindi tinanggal ay lilitaw ito sa linya 2 sa pangalawang file.
    • < Arch Linux - ang tinanggal na linya.
    4c4, 5 - Palitan (baguhin) linya 5 sa unang file na may mga linya 4-5 mula sa pangalawang file.
    • < CentOS - Ang linya sa unang file na papalitan. --- - Hiwalay. > Arch Linux at > Centos - Mga linya mula sa pangalawang file na pinapalitan ang linya sa unang file.

Format ng Konteksto

Kapag ginamit ang format ng output output, ang diff utos ay nagpapakita ng ilang mga linya ng konteksto sa paligid ng mga linya na naiiba sa pagitan ng mga file.

Ang pagpipilian na -c nagsasabi sa iba't ibang upang makabuo ng output sa format na konteksto:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Ang output ay nagsisimula sa mga pangalan at timestamp kung ang mga file na inihambing, at isa o higit pang mga seksyon na naglalarawan ng mga pagkakaiba. Ang bawat seksyon ay ganito:

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers at to-file-line-numbers - Ang mga linya ng linya o pinaghihiwalay ng komma na hanay ng mga linya sa una at pangalawang file, ayon sa pagkakabanggit. from-file-line at to-file-line - Ang mga linya na naiiba at ang mga linya ng konteksto:
    • Ang mga linya na nagsisimula sa dalawang puwang ay mga linya ng konteksto, ang mga linya na pareho sa parehong mga file. Ang mga linya na nagsisimula sa simbolo ng minus ( - ) ay ang mga linya na nauugnay sa wala sa pangalawang file. Ang mga linya na nawawala sa pangalawang file.Lines na nagsisimula sa plus simbolo ( + ) ay ang mga linya na nauugnay sa wala sa unang file. Ang mga linya na nawawala sa unang file.Lines na nagsisimula sa marka ng tandang ( ! ) Ay ang mga linya na nabago sa pagitan ng dalawang file. Ang bawat pangkat ng mga linya na nagsisimula sa ! mula sa unang file ay may kaukulang tugma sa pangalawang file.

Ipaliwanag natin ang pinakamahalagang bahagi ng output:

  • Sa halimbawang ito mayroon lamang kaming isang seksyon na naglalarawan ng mga pagkakaiba. *** 1, 6 **** at --- 1, 7 ---- nagsasabi sa amin ang saklaw ng mga linya mula sa una at pangalawang mga file na kasama sa seksyon na ito.Lines Ubuntu , Debian , Fedora , at ang huling walang laman na linya ay pareho sa parehong mga file. Ang mga linya na ito ay nagsisimula sa dobleng puwang.Line - Arch Linux mula sa unang file ay tumutugma sa wala sa pangalawang file. Kahit na ang linya na ito ay umiiral din sa pangalawang file, ang mga posisyon ay naiiba.Line + Kubuntu mula sa pangalawang file ay tumutugma sa wala sa unang file.Line ! CentOS ! CentOS mula sa unang file at linya ! Arch Linux ! Arch Linux at ! CentOS ! CentOS mula sa pangalawang file ay binago sa pagitan ng mga file.

Sa pamamagitan ng default ang bilang ng mga linya ng konteksto ay default sa tatlo. Upang tukuyin ang isa pang numero na gamitin ang pagpipilian na -C (- Mga --contexts ):

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Pinag-isang Format

Ang pinag-isang format ng output ay isang pinahusay na bersyon ng format ng konteksto at gumagawa ng isang mas maliit na output.

Gamitin ang -u pagpipilian upang sabihin sa diff upang i-print ang output sa pinag-isang format:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

Ang output ay nagsisimula sa mga pangalan at mga timestamp ng mga file at isa o higit pang mga seksyon na naglalarawan ng mga pagkakaiba. Ang bawat seksyon ay tumatagal ng sumusunod na form:

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ - Ang numero ng linya o saklaw ng mga linya mula sa una at pangalawang mga file na kasama sa bahaging ito. line-from-files - Ang mga linya na naiiba at ang mga linya ng konteksto:
    • Ang mga linya na nagsisimula sa dalawang puwang ay mga linya ng konteksto, ang mga linya na magkapareho sa parehong mga file. Ang mga linya na nagsisimula sa simbolo ng minus ( - ) ay ang mga linya na tinanggal mula sa unang file.Lines na nagsisimula sa plus simbolo ( + ) ay ang mga linya na idinagdag mula sa unang file.

Huwag pansinin ang kaso

Tulad ng napansin mo sa mga halimbawa sa itaas, ang diff utos ay sensitibo sa kaso sa pamamagitan ng default.

Gamitin ang -i pagpipilian upang sabihin na diff sa hindi papansin kaso:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

Konklusyon

Ang paghahambing ng mga file ng teksto para sa mga pagkakaiba ay isa sa mga pinaka-karaniwang gawain para sa mga administrator ng system ng Linux.

Inihahambing ng diff utos ang mga file na linya ayon sa linya. Para sa karagdagang impormasyon, ang uri ng man diff sa iyong terminal.

diff terminal