6 Different Ways To Compare Files In Linux

03-Nov-23

คัมภีร์เทพ IT

See the original english version Click here!

 

การเปรียบเทียบไฟล์ใน Browsers หรือบน Desktop GUI นั้นไม่ใช่เรื่องยาก แต่จะเกิดอะไรขึ้นถ้าคุณทำสิ่งเดียวกันโดยใช้ Command Line? และจะเป็นอย่างไร ถ้าคุณต้องการเปรียบเทียบไฟล์บน Server ที่ไม่ได้ติดตั้ง GUI ด้วยซ้ำ? และในบทความนี้ จะกล่าวถึง 6 วิธีในการเปรียบเทียบไฟล์บน Linux

1. cmp

Source

หากคุณต้องการเปรียบเทียบไฟล์ในระดับ byte นี่ถือเป็นวิธีที่ง่ายที่สุดวิธีหนึ่ง โดย cmp Utility จะทำงานเหมือนกับชื่อของมันทุกประการ คือ มันจะทำการ "เปรียบเทียบ" 2 ไฟล์ หาก Character หรือแม้แต่ Space เปลี่ยนแปลงในไฟล์ใดไฟล์หนึ่งก็ตาม Program นี้จะตรวจจับและแสดงให้คุณได้เห็นถึงความแตกต่างอย่างแรก

ด้านล่างนี้เป็น Set ของ Demo Files อย่างง่าย: 

การตั้งค่า Demo Files

ตอนนี้ เราจะส่งไฟล์ทั้ง 2 นี้ ไปที่ cmp และให้มันแสดงค่าความแตกต่าง:

การ Run cmp กับ Demo Files

อย่างที่คุณเห็น จะพบว่ามีมีความผิดปกติที่ตัว Character จาก file2.txt ซึ่งเราบังเอิญเพิ่มตัว "e" เข้าไปโดยไม่ได้ตั้งใจ นี่จะชี้ให้เห็นอย่างชัดเจนว่า ความแตกต่างเริ่มต้นที่จุดใดและมันจะแสดงผลให้เราทราบในทันที โปรดทราบไว้ว่า สิ่งนี้จะช่วยค้นหาเฉพาะความแตกต่างอย่างแรก แต่จะไม่แสดงรายการออกมาทั้งหมด

Utility นี้เหมาะอย่างยิ่งสำหรับการค้นหาข้อผิดพลาดหรือการเปลี่ยนแปลงที่เกิดขึ้นกับ Set ของ Files และสิ่งนี้ก็สามารถใช้ร่วมเข้ากับ Shell Script ได้อย่างง่ายดาย เพื่อดูการเปลี่ยนแปลงของไฟล์หรือ Run เป็น Batch Job เพื่อตรวจจับข้อผิดพลาด

2. diff

Source

หากคุณต้องการเปรียบเทียบ Text Files ทีละบรรทัด นี่ถือเป็นหนึ่งใน Tool ที่ดีที่สุดตัวหนึ่ง โดย diff Utility มาพร้อมกับ Configuration Options มากมายและสามารถแสดงผลลัพธ์ออกมาได้หลากหลายรูปแบบ มันจะสร้าง Report ให้คุณโดยละเอียดเกี่ยวกับการเปลี่ยนแปลงระหว่างไฟล์ และจะว่าไปแล้ว ดูเหมือน diff จะมีความยืดหยุ่นมากกว่า cmp เล็กน้อยตามค่า Default

เรามาลองใช้ diff ในเบื้องต้นกับไฟล์ทั้ง 2 ของเรา จากข้อก่อนหน้านี้:

การ Run diff กับ Demo Files

ดูเหมือนว่า จะได้ผลลัพธ์ที่คล้ายกัน แต่อาจมีประโยชน์กว่าสักเล็กน้อย เพราะ Utility นี้มุ่งเน้นไปที่ความแตกต่างโดยเปรียบเทียบทีละบรรทัด ดังนั้น มันจึงมุ่งเน้นไปที่การทำแบบนั้น ในบรรทัดแรกของผลลัพธ์ ได้บ่งชี้ว่า มีการเปลี่ยนแปลงเพียงครั้งเดียวและเกิดขึ้นในบรรทัดที่ 1 ซึ่งก็ถือว่าดี แต่ต่อไป เราจะใช้ไฟล์ที่มีหลายบรรทัด เพื่อดูว่า diff มีประโยชน์มากแค่ไหน:

การ Run diff กับไฟล์ที่มีหลายบรรทัด

ตอนนี้เราสามารถเห็นได้อย่างชัดเจนว่า สิ่งต่าง ๆ มีการเปลี่ยนแปลง มีการลบ หรือ เพิ่ม ตรงจุดไหน เราไม่เพียงได้เห็นการเปลี่ยนแปลงของเราจากก่อนหน้าในบรรทัดแรก แต่ยังมีรายการ ที่ถูกลบจากบรรทัดที่ 3 ด้วย

สิ่งที่ยอดเยี่ยมอีกอย่างหนึ่งเกี่ยวกับ diff Utility ก็คือ คุณสามารถให้แสดงผลลัพธ์ออกมาในรูปแบบ RCS ได้ ซึ่งหมายความว่า หากคุณต้องการสร้าง Patch โดยใช้ Version ที่ Update แล้วของไฟล์ เพื่อใช้ใน Source Control คุณก็สามารถทำได้โดยใช้ Argument ง่าย ๆ

3. colordiff

Source

หากคุณคุณชอบคำสั่ง diff และชอบความยืดหยุ่นที่ยอดเยี่ยมของมัน แต่คุณอยากให้ Output มีสีสันมากกว่านี้อีกหน่อย โดย colordiff Utility เป็น Wrapper ที่เรียบง่ายสำหรับ diff ซึ่งใช้ Parameters เดียวกัน แต่มันมีประโยชน์ในเรื่อง Output ที่เพิ่มเติมสีสันขึ้นมา

การใช้ colordiff กับ Demo Files

คุณสามารถใช้มันได้เหมือนกับ diff แต่คุณสามารถรับรู้การเปลี่ยนแปลงได้เร็วขึ้น เพราะว่า Output จะสว่างและสวยงามขึ้นมาเหมือนกับไฟประดับต้นคริสต์มาส โดยสรุปแล้วมันเป็น Tool ที่เรียบง่าย แต่กลับเป็นการปรับปรุงที่มีประสิทธิภาพสูง

4. vimdiff

Source

คุณใช้ Vim อยู่หรือไม่? คุณต้องการที่จะเปรียบเทียบไฟล์โดยใช้มันหรือไม่? แน่นอนคือ คุณสามารถทำได้

หากคุณคุ้นเคยกับ Syntax ของ Vim และคุ้นเคยกับการใช้งานมันอยู่แล้ว นี่คือ Tool ที่ยอดเยี่ยมมาก ด้วยการใช้ vimdiff คุณจะสามารถแสดง 2 ไฟล์ใน Vim Session ข้าง ๆ กันได้ และดูความแตกต่างที่ถูก Highlight ให้เห็นโดยอัตโนมัติ

เราลองมาดูไฟล์ทั้ง 2 ของเราโดยใช้ vimdiff กัน:

การ Run vimdiff กับ Demo Files

คุณจะได้เห็นสิ่งนี้:

ผลลัพธ์ของ vimdiff

ความแตกต่างของแต่ละรายการ จะถูก Highlight ทีละบรรทัดและทีละ Character เราจะเห็น "e" ที่เพิ่มเติมขึ้นมาในบรรทัดแรก พร้อม Highlight ที่ละเอียดยิ่งขึ้น ส่วนบรรทัดสุดท้ายที่ขาดหายไปจะแสดงทั้งบรรทัดที่เน้นด้วยสีม่วง สิ่งหนึ่งที่ควรรู้ไว้ก็คือ สิ่งนี้จะใช้ .vimrc ของคุณ ดังนั้น สีและ Style ของคุณอาจแตกต่างกันไป

vimdiff Tool เป็นวิธีที่รวดเร็วในการแสดงความแตกต่างแบบ Interactive เมื่อคุณใช้งาน vimdiff แล้ว คุณสามารถแก้ไขไฟล์ได้เหมือนกับ Vim Session อื่น ๆ

5. wdiff

Source

หากการเปรียบเทียบแบบทีละบรรทัด หรือทีละ Character นั้นยังไม่เพียงพอ คุณยังสามารถเปรียบเทียบเพื่อหาความแตกต่างแบบคำต่อคำโดยใช้ wdiff ซึ่ง Utility ขนาดเล็กตัวนี้จะแสดงผลลัพธ์โดยละเอียดว่า คำในไฟล์ของคุณมีความแตกต่างกันอย่างไร

เรามาดูกันว่า มันใช้งานง่ายแค่ไหน:

การใช้ wdiff กับ Demo Files

ตอนนี้เราสามารถเห็นมุมมองที่ผสมรวมกันของทั้ง 2 ไฟล์แล้ว แต่ความแตกต่างนั้นถูกรวมเข้าด้วยกันโดยใช้เครื่องหมายง่าย ๆ โดยตัว “e” ที่เกินขึ้นมาในบรรทัดที่ 1 ทำให้คำแสดงทั้งเครื่องหมายลบและเครื่องหมายบวก ส่วนบรรทัดสุดท้ายที่ขาดหายไปของเรา จะแสดงคำทั้งหมดที่มีเครื่องหมายลบด้วยสัญลักษณ์ [-

หากคุณใช้งานกับข้อความที่เป็นภาษาธรรมดาทั่วไปและต้องการเน้นไปที่การเปรียบเทียบการเปลี่ยนแปลงของคำแต่ละคำ นี่เป็น Tool ที่ยอดเยี่ยม อันที่จริงก็มี Arguments ที่ Config ค่าได้อยู่จำนวนหนึ่ง ที่คุณสามารถส่งผ่านได้ แต่ส่วนใหญ่มันมีไว้เพื่อควบคุมการเปลี่ยนแปลงที่เล็กน้อยในการจัดรูปแบบของ Output เท่านั้น

6. git-diff

Source

หากคุณคุ้นเคยในการทำงานกับ Git (เช่นเดียวกับพวกเราส่วนใหญ่) อยู่แล้ว นี่อาจเป็น Tool ใหม่ที่คุณน่าจะชื่นชอบ โดยคำสั่ง git diff สามารถแสดงให้เห็นถึงความแตกต่างระหว่างไฟล์ 2 ไฟล์ได้ และคุณก็ไม่จำเป็นต้องอยู่ใน Git Repository เพื่อให้มันทำงานได้

การใช้ git diff กับ Demo Files

Output ของ Git diff จาก Demo Files ของเรา

สิ่งนี้จะสร้างผลลัพธ์แบบเดียวกันกับสิ่งที่คุณเคยใช้กับ Git คุณอาจเคยใช้ git diff ใน Git Workflow ที่คุณมีอยู่ แต่ไม่รู้ว่ามันก็สามารถใช้ได้กับไฟล์อื่น ๆ ด้วย สิ่งที่คุณต้องทำก็คือ ส่ง Path ทั้ง 2 เข้าไป และมันจะทำให้คุณรู้สึกเหมือนว่า คุณไม่ได้ออกจาก Git Repo ของคุณเลย

ที่มา: https://blog.devops.dev/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด