10 เครื่องมือเปรียบเทียบไฟล์และความแตกต่าง (Diff) ที่ดีที่สุดใน Linux
ในขณะที่เขียนไฟล์โปรแกรมหรือไฟล์ข้อความปกติ บางครั้งโปรแกรมเมอร์และผู้เขียนต้องการทราบความแตกต่างระหว่างไฟล์สองไฟล์หรือสองเวอร์ชันของไฟล์เดียวกัน
เมื่อคุณเปรียบเทียบไฟล์คอมพิวเตอร์สองไฟล์บน Linux ความแตกต่างระหว่างเนื้อหาจะเรียกว่า ความแตกต่าง คำอธิบายนี้เกิดจากการอ้างอิงถึงเอาต์พุตของ diff ซึ่งเป็นยูทิลิตีการเปรียบเทียบไฟล์บรรทัดคำสั่ง Unix ที่รู้จักกันดี
มีเครื่องมือเปรียบเทียบไฟล์หลายอย่างที่คุณสามารถใช้ได้บน Linux และในการรีวิวนี้ เราจะมาดูเครื่องมือที่ใช้เทอร์มินัลและ GUI diff ที่ดีที่สุดบางส่วนที่คุณสามารถใช้ประโยชน์ได้ในขณะที่เขียนโค้ดหรือไฟล์ข้อความอื่นๆ
1. คำสั่งต่าง
ฉันชอบเริ่มต้นด้วยเครื่องมือบรรทัดคำสั่ง Unix ดั้งเดิมที่แสดงความแตกต่างระหว่างไฟล์คอมพิวเตอร์สองไฟล์ Diff นั้นเรียบง่ายและใช้งานง่าย มีการติดตั้งไว้ล่วงหน้าแล้วบน Linux ส่วนใหญ่ ซึ่งจะเปรียบเทียบไฟล์ทีละบรรทัดและแสดงความแตกต่างระหว่างไฟล์เหล่านั้น
เพื่อเปรียบเทียบสองไฟล์และแสดงความแตกต่าง
diff file1.txt file2.txt
คุณสามารถตรวจสอบการป้อนข้อมูลด้วยตนเองสำหรับ diff เพื่อให้ใช้งานได้ง่าย
man diff
มี Wrapper บางส่วนสำหรับเครื่องมือ diff ที่ปรับปรุงฟังก์ชันการทำงาน และรวมถึง:
คำสั่ง colordiff
Colordiff เป็นสคริปต์ Perl ที่สร้างผลลัพธ์เหมือนกับ diff แต่มีการเน้นสีและไวยากรณ์ มีโทนสีที่ปรับแต่งได้
คุณสามารถติดตั้ง Colordiff บนระบบ Linux โดยใช้เครื่องมือจัดการแพ็คเกจเริ่มต้นที่เรียกว่า yum, dnf และ apt-get หรือ apt ตามที่แสดง
sudo apt install colordiff [On Debian, Ubuntu and Mint]
sudo yum install colordiff [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/colordiff [On Gentoo Linux]
sudo apk add colordiff [On Alpine Linux]
sudo pacman -S colordiff [On Arch Linux]
sudo zypper install colordiff [On OpenSUSE]
เพื่อเปรียบเทียบไดเร็กทอรีแบบวนซ้ำ
colordiff file1.txt file2.txt
คุณสามารถตรวจสอบการป้อนด้วยตนเองสำหรับ colordiff ดังที่แสดง
man colordiff
คำสั่ง wdiff
ยูทิลิตี wdiff เป็นคำสั่งส่วนหน้าถึง diff ที่ใช้ในการเปรียบเทียบไฟล์แบบคำต่อคำ โปรแกรมนี้มีประโยชน์มากเมื่อเปรียบเทียบข้อความสองข้อความกับคำที่เปลี่ยนแปลงและย่อหน้าใดที่ถูกเติมใหม่
หากต้องการติดตั้ง wdiff บนระบบ Linux ให้เรียกใช้:
sudo apt install wdiff [On Debian, Ubuntu and Mint]
sudo yum install wdiff [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/wdiff [On Gentoo Linux]
sudo apk add wdiff [On Alpine Linux]
sudo pacman -S wdiff [On Arch Linux]
sudo zypper install wdiff [On OpenSUSE]
หากต้องการแสดงทั้งสองไฟล์เคียงข้างกัน โดยเน้นความแตกต่างระดับคำ
wdiff file1.txt file2.txt
ใช้คู่มือ wdiff เกี่ยวกับวิธีการใช้งานบน Linux
man wdiff
2. กองบัญชาการวิมดิฟฟ์
Vimdiff ทำงานในลักษณะขั้นสูงเมื่อเปรียบเทียบกับยูทิลิตี diff ซึ่งช่วยให้ผู้ใช้สามารถแก้ไขไฟล์ได้ถึงสี่เวอร์ชันในขณะที่แสดงความแตกต่าง เมื่อคุณเรียกใช้ Vimdiff จะเปิดไฟล์สองหรือสามหรือสี่ไฟล์โดยใช้โปรแกรมแก้ไขข้อความ Vim
หากต้องการใช้ vimdiff คุณจะต้องติดตั้ง Vim ในระบบของคุณ แต่หากยังไม่ได้ติดตั้ง คุณสามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจ
sudo apt install vim [On Debian, Ubuntu and Mint]
sudo yum install vim [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/vim [On Gentoo Linux]
sudo apk add vim [On Alpine Linux]
sudo pacman -S vim [On Arch Linux]
sudo zypper install vim [On OpenSUSE]
หากต้องการเปรียบเทียบสองไฟล์โดยใช้ vimdiff คุณจะต้องดำเนินการคำสั่งต่อไปนี้
vimdiff file1.txt file2.txt
คุณยังสามารถใช้ vimdiff เพื่อเปรียบเทียบไฟล์สามไฟล์ได้
vimdiff file1.txt file2.txt file3.txt
สำหรับข้อมูลรายละเอียดเพิ่มเติมและตัวเลือกการใช้งาน คุณสามารถเข้าถึงหน้าคู่มือได้โดยการเรียกใช้
man vimdiff
3.sdiff
คำสั่ง sdiff ใช้เพื่อเปรียบเทียบไฟล์สองไฟล์เคียงข้างกัน โดยเน้นความแตกต่างระหว่างไฟล์เหล่านั้น โดยจะแสดงเนื้อหาของทั้งสองไฟล์ในคอลัมน์แยกกัน โดยมีบรรทัดที่เพิ่มขึ้นนำหน้าด้วย ">"
บรรทัดที่ถูกลบขึ้นนำหน้าด้วย "<"
และบรรทัดทั่วไปที่แสดงโดยไม่มีคำนำหน้าใดๆ .
โดยทั่วไปคำสั่ง sdiff จะมาพร้อมกับการติดตั้งมาตรฐานของ Linux ส่วนใหญ่ อย่างไรก็ตาม หากไม่ได้ติดตั้ง คุณสามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจของคุณ
sudo apt install diffutils [On Debian, Ubuntu and Mint]
sudo yum install diffutils [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/diffutils [On Gentoo Linux]
sudo apk add diffutils [On Alpine Linux]
sudo pacman -S diffutils [On Arch Linux]
sudo zypper install diffutils [On OpenSUSE]
เพื่อเปรียบเทียบสองไฟล์และแสดงความแตกต่างแบบเคียงข้างกัน
sdiff file1.txt file2.txt
เมื่อพิจารณาเครื่องมือ diff แบบเก่าแล้ว เรามาดูเครื่องมือ diff บางตัวที่มีอยู่บน Linux กันดีกว่า
4. คอมปาเร
คอมปาเรคือเครื่องมือสร้างความแตกต่างและผสานแบบกราฟิกที่ให้ผู้ใช้สามารถเปรียบเทียบและดูความแตกต่างระหว่างไฟล์และรวมเข้าด้วยกันได้
หากต้องการติดตั้ง Kompare บน Linux คุณสามารถใช้ตัวจัดการแพ็คเกจเฉพาะสำหรับระบบของคุณได้
sudo apt install kompare [On Debian, Ubuntu and Mint]
sudo yum install kompare [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/kompare [On Gentoo Linux]
sudo apk add kompare [On Alpine Linux]
sudo pacman -S kompare [On Arch Linux]
sudo zypper install kompare [On OpenSUSE]
คุณสมบัติบางอย่างประกอบด้วย:
- รองรับรูปแบบที่แตกต่างกันหลายรูปแบบ
- รองรับการเปรียบเทียบไดเร็กทอรี
- รองรับการอ่านไฟล์ diff
- อินเทอร์เฟซที่ปรับแต่งได้
- การสร้างและใช้แพตช์กับไฟล์ต้นฉบับ
5. ดิฟผสาน
DiffMerge เป็นแอปพลิเคชัน GUI ข้ามแพลตฟอร์มสำหรับการเปรียบเทียบและรวมไฟล์ มีกลไกการทำงานสองแบบ ได้แก่ กลไก Diff ซึ่งแสดงความแตกต่างระหว่างสองไฟล์ และสนับสนุนการไฮไลต์และการแก้ไขภายในบรรทัด และกลไก ผสาน ซึ่งส่งออกบรรทัดที่เปลี่ยนแปลงระหว่าง สามไฟล์
มันมีคุณสมบัติดังต่อไปนี้:
- รองรับการเปรียบเทียบไดเร็กทอรี
- การรวมเบราว์เซอร์ไฟล์
- กำหนดค่าได้สูง
6. เครื่องมือ Meld – Diff
Meld เป็นเครื่องมือกระจายและผสาน GUI แบบน้ำหนักเบา ซึ่งช่วยให้ผู้ใช้สามารถเปรียบเทียบไฟล์ ไดเร็กทอรี และโปรแกรมที่ควบคุมเวอร์ชันได้ สร้างขึ้นเพื่อนักพัฒนาโดยเฉพาะ โดยมาพร้อมกับคุณสมบัติดังต่อไปนี้:
- การเปรียบเทียบไฟล์และไดเร็กทอรีแบบสองทางและสามทาง
- อัปเดตการเปรียบเทียบไฟล์เมื่อผู้ใช้พิมพ์คำเพิ่มเติม
- ทำให้การผสานง่ายขึ้นโดยใช้โหมดการผสานอัตโนมัติและการดำเนินการกับบล็อกที่เปลี่ยนแปลง
- การเปรียบเทียบอย่างง่ายโดยใช้การแสดงภาพ
- รองรับ Git, Mercurial, Subversion, Bazaar และอีกมากมาย
หากต้องการติดตั้ง Meld บน Linux คุณสามารถใช้ตัวจัดการแพ็คเกจเพื่อติดตั้งจากที่เก็บข้อมูลอย่างเป็นทางการ
sudo apt install meld [On Debian, Ubuntu and Mint]
sudo yum install meld [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/meld [On Gentoo Linux]
sudo apk add meld [On Alpine Linux]
sudo pacman -S meld [On Arch Linux]
sudo zypper install meld [On OpenSUSE]
7. กระจาย – เครื่องมือ GUI Diff
Diffuse เป็นเครื่องมือกระจายและผสาน GUI ยอดนิยม ฟรี ขนาดเล็ก และเรียบง่ายที่คุณสามารถใช้กับ Linux เขียนด้วยภาษา Python มีฟังก์ชันหลักสองฟังก์ชัน นั่นคือ: การเปรียบเทียบไฟล์และการควบคุมเวอร์ชัน ช่วยให้สามารถแก้ไขไฟล์ และรวมไฟล์ และยังแสดงความแตกต่างระหว่างไฟล์อีกด้วย
หากต้องการติดตั้ง Diffuse บน Linux คุณสามารถใช้ตัวจัดการแพ็คเกจตามที่แสดง
sudo apt install diffuse [On Debian, Ubuntu and Mint]
sudo yum install diffuse [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/diffuse [On Gentoo Linux]
sudo apk add diffuse [On Alpine Linux]
sudo pacman -S diffuse [On Arch Linux]
sudo zypper install diffuse [On OpenSUSE]
คุณสามารถดูสรุปการเปรียบเทียบ เลือกบรรทัดข้อความในไฟล์โดยใช้พอยเตอร์เมาส์ จับคู่บรรทัดในไฟล์ที่อยู่ติดกัน และแก้ไขไฟล์ต่างๆ
คุณสมบัติอื่น ๆ ได้แก่ :
- การเน้นไวยากรณ์
- แป้นพิมพ์ลัดเพื่อการนำทางที่ง่ายดาย
- รองรับการเลิกทำไม่จำกัด
- การสนับสนุนยูนิโค้ด
- รองรับ Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK และ Monotone
8. XXdiff – เครื่องมือแยกความแตกต่างและผสาน
XXdiff เป็นเครื่องมือเปรียบเทียบไฟล์และไดเร็กทอรีที่มีประสิทธิภาพฟรีและผสานการทำงานบนระบบปฏิบัติการแบบ Unix เช่น Linux, Solaris, HP/UX, IRIX และ DEC Tru64 ข้อจำกัดประการหนึ่งของ XXdiff คือการขาดการสนับสนุนไฟล์ Unicode และการแก้ไขไฟล์ diff แบบอินไลน์
มันมีรายการคุณสมบัติดังต่อไปนี้:
- การเปรียบเทียบแบบตื้นและแบบเรียกซ้ำของสอง, สามไฟล์หรือสองไดเร็กทอรี
- การเน้นความแตกต่างในแนวนอน
- การรวมไฟล์แบบโต้ตอบและการบันทึกผลลัพธ์ผลลัพธ์
- รองรับการทบทวน/การตรวจตราแบบรวม
- รองรับเครื่องมือ diff ภายนอก เช่น GNU diff, SIG diff, Cleareddiff และอื่นๆ อีกมากมาย
- ขยายได้โดยใช้สคริปต์
- ปรับแต่งได้อย่างเต็มที่โดยใช้ไฟล์ทรัพยากรพร้อมคุณสมบัติรองอื่นๆ อีกมากมาย
9. KDiff3 – – เครื่องมือแยกความแตกต่างและผสาน
KDiff3 เป็นอีกหนึ่งเครื่องมือกระจายและผสานข้ามแพลตฟอร์มที่ยอดเยี่ยมที่สร้างจาก KDevelop ซึ่งทำงานบนแพลตฟอร์มที่คล้ายกับ Unix ทั้งหมด รวมถึง Linux และ Mac OS X, Windows
หากต้องการติดตั้ง KDiff3 บน Linux คุณสามารถใช้ตัวจัดการแพ็คเกจตามที่แสดง
sudo apt install kdiff3 [On Debian, Ubuntu and Mint]
sudo yum install kdiff3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/kdiff3 [On Gentoo Linux]
sudo apk add kdiff3 [On Alpine Linux]
sudo pacman -S kdiff3 [On Arch Linux]
sudo zypper install kdiff3 [On OpenSUSE]
สามารถเปรียบเทียบหรือรวมไฟล์หรือไดเร็กทอรีได้สองถึงสามไฟล์และมีคุณสมบัติเด่นดังต่อไปนี้:
- ระบุความแตกต่างทีละบรรทัดและอักขระต่ออักขระ
- รองรับการรวมอัตโนมัติ
- เครื่องมือแก้ไขที่สร้างขึ้นเพื่อจัดการกับข้อขัดแย้งในการผสาน
- รองรับ Unicode, UTF-8 และตัวแปลงสัญญาณอื่น ๆ อีกมากมาย
- ช่วยให้สามารถพิมพ์ความแตกต่างได้
- รองรับการรวม Windows Explorer
- นอกจากนี้ยังรองรับการตรวจจับอัตโนมัติผ่านเครื่องหมายลำดับไบต์ “BOM”
- รองรับการจัดแนวเส้นด้วยตนเอง
- GUI ที่ใช้งานง่ายและอีกมากมาย
10. ทีเคดิฟ
TkDiff ยังเป็น Wrapper GUI ข้ามแพลตฟอร์มและใช้งานง่ายสำหรับเครื่องมือ Unix diff ที่ให้มุมมองแบบเคียงข้างกันของความแตกต่างระหว่างไฟล์อินพุตสองไฟล์ สามารถทำงานบน Linux, Windows และ Mac OS X
นอกจากนี้ยังมีฟีเจอร์ที่น่าตื่นเต้นอื่น ๆ เช่น บุ๊กมาร์กต่าง แผนที่แสดงความแตกต่างแบบกราฟิกเพื่อการนำทางที่ง่ายและรวดเร็ว และอีกมากมาย
หากต้องการติดตั้ง TkDiff บน Linux คุณสามารถใช้ตัวจัดการแพ็คเกจตามที่แสดง
sudo apt install tkdiff [On Debian, Ubuntu and Mint]
sudo yum install tkdiff [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tkdiff [On Gentoo Linux]
sudo apk add tkdiff [On Alpine Linux]
sudo pacman -S tkdiff [On Arch Linux]
sudo zypper install tkdiff [On OpenSUSE]
บทสรุป
เมื่ออ่านบทวิจารณ์เครื่องมือเปรียบเทียบไฟล์และไดเร็กทอรีที่ดีที่สุดและเครื่องมือผสานแล้ว คุณอาจต้องการลองใช้บางส่วน
สิ่งเหล่านี้อาจไม่ใช่เครื่องมือ diff เพียงอย่างเดียวที่คุณสามารถพบได้บน Linux แต่เป็นที่รู้กันว่ามีคุณสมบัติที่ดีที่สุด คุณอาจต้องการแจ้งให้เราทราบถึงเครื่องมือ diff อื่น ๆ ที่คุณได้ทดสอบและคิดว่าสมควรได้รับ ได้รับการกล่าวถึงในหมู่สิ่งที่ดีที่สุด