ดังนั้น . ทำอย่างไร แตกต่าง คำสั่งใช้งานได้จริง? NS แตกต่าง คำสั่งเปรียบเทียบทั้งสองไฟล์และแสดงรายการความแตกต่างระหว่างทั้งสองไฟล์ แม่นยำยิ่งขึ้น ให้รายการการแก้ไขที่ต้องทำในไฟล์แรกเพื่อให้ตรงกับไฟล์ที่สอง NS แตกต่าง คำสั่งยังใช้โดยโปรแกรมเมอร์เพื่อรับความแตกต่างระหว่างไฟล์ซอร์สโค้ดสองไฟล์เพื่อพัฒนาแพตช์
ก่อนดำดิ่งสู่ตัวอย่าง โปรดทราบว่าลำดับของไฟล์มีความสำคัญมาก เพราะว่า แตกต่าง คำสั่งให้ผลลัพธ์ตามลำดับของไฟล์
วิธีใช้คำสั่ง diff ใน Linux เพื่อเปรียบเทียบไฟล์:
ไวยากรณ์ของ แตกต่าง คำสั่งถูกกล่าวถึงด้านล่าง:
$แตกต่าง [ตัวเลือก] [ไฟล์1] [file2]
ขั้นแรก สร้างสองไฟล์ ฉันกำลังสร้างไฟล์ข้อความโดยใช้ชื่อ test_file_1.txt และ test_file_2.txt . ไฟล์เหล่านี้มีเนื้อหาที่มีความแตกต่างเล็กน้อย:
ตอนนี้ใช้คำสั่งต่อไปนี้เพื่อรับความแตกต่าง:
$แตกต่างtest_file_1.txt test_file_2.txt
เอาต์พุตมาตรฐานแสดงบรรทัดที่ตรงกันตามลำดับของไฟล์ที่กล่าวถึงในคำสั่ง มาถอดรหัสผลลัพธ์กัน:
การเปรียบเทียบไฟล์จะมีป้ายกำกับ และแต่ละป้ายจะมีตัวเลขอยู่ด้านใดด้านหนึ่ง รูปแบบมีดังนี้:
[หมายเลขบรรทัดของไฟล์ 1][Label(a,c,d)][หมายเลขบรรทัดของไฟล์ 2]
มีสามป้าย:
- ถึง – เพิ่ม: เพิ่มเนื้อหาในไฟล์แรกเพื่อซิงค์กับไฟล์ที่สอง
- ค – เปลี่ยนแปลง: ระบุว่าจำเป็นต้องแก้ไขเนื้อหาของไฟล์แรกเพื่อให้ตรงกับไฟล์ที่สอง
- NS – ลบ: ลบเนื้อหาออกจากไฟล์แรกเพื่อให้ตรงกับไฟล์ที่สอง
2d1 หมายถึงลบบรรทัดที่ 2 ของไฟล์แรกเพื่อให้ตรงกับไฟล์ที่สองจากบรรทัดที่ 1
ในทำนองเดียวกัน 4c3 หมายถึงการเปลี่ยนแปลงในบรรทัดที่สี่ของไฟล์แรกเพื่อให้ตรงกับบรรทัดที่ 3 ของไฟล์ที่สองเนื่องจากทั้งสองบรรทัดมีความแตกต่างกันเล็กน้อย
มีอีกวิธีหนึ่งในการดูความแตกต่าง ใช้ แตกต่าง สั่งกับ -และ ตัวเลือก:
$แตกต่าง -และ -ใน 60test_file_1.txt test_file_2.txt
ในผลลัพธ์ข้างต้น เนื้อหาของ test_file_1.txt จะแสดงทางด้านซ้ายในขณะที่เนื้อหาของ text_file_2.txt จะแสดงทางด้านขวา ความแตกต่างถูกระบุโดยสัญลักษณ์:
- | — เส้นจะแตกต่างกันในไฟล์ที่สอง
- > — บรรทัดเพิ่มเติมในไฟล์ที่สอง
- <— Line has been deleted from the second file
-W ระบุความกว้างระหว่างเนื้อหาของสองไฟล์ หากต้องการแยกและดูความแตกต่าง ให้ใช้สิ่งต่อไปนี้:
$แตกต่าง -และ -ใน 60 --suppress-common-linestest_file_1.txt test_file_2.txt
วิธีรับเอาต์พุตในหนึ่งบรรทัดโดยใช้คำสั่ง diff:
หากวิธีการติดป้ายกำกับนั้นยากสำหรับคุณในการถอดรหัส แสดงว่ามีแนวทางที่ง่ายกว่า ใช้ -NS ตัวเลือกด้วย แตกต่าง คำสั่งให้เอาต์พุตในบรรทัดเดียว ไม่มีข้อมูลเพิ่มเติมแม้ว่า:
$แตกต่าง -NStest_file_1.txt test_file_2.txt
หากไฟล์ต่างกัน คำสั่งดังกล่าวจะให้ผลลัพธ์ หากไฟล์เหมือนกันจะไม่มีเอาต์พุต เพื่อแสดงให้เห็น ฉันกำลังสร้างสำเนาของ test_file_1.txt โดยใช้:
$cptest_file_1.txt test_file_3.txt
ไฟล์ใหม่จะถูกสร้างขึ้นโดยใช้ชื่อ test_file_3.txt ที่มีเนื้อหาเดียวกันกับที่ test_file_1.txt มี. ตอนนี้ใช้:
$แตกต่าง -NStest_file_1.txt test_file_2.txt
เนื่องจากทั้งสองไฟล์มีเนื้อหาที่คล้ายคลึงกัน ดังนั้นจึงไม่มีเอาต์พุต
วิธีตรวจสอบความแตกต่างของไฟล์ในโหมดบริบทโดยใช้คำสั่ง diff:
เพื่อให้ได้การเปรียบเทียบในโหมดบริบท คำสั่ง -ค ตัวเลือกจะถูกใช้กับ แตกต่าง สั่งการ:
$แตกต่าง -คtest_file_1.txt test_file_2.txt
มาผ่าเอาท์พุตกัน
เพื่อรักษาความแตกต่าง ไฟล์แรกจะถูกระบุด้วย *** พร้อมกับวันที่และเวลาของการสร้าง ในขณะที่ไฟล์ที่สองจะถูกระบุด้วย —
บรรทัดถัดไปหมายถึงช่วงของเส้นที่พิจารณาระหว่างการเปรียบเทียบ สำหรับไฟล์แรก มันคือ *** 1.6 **** และสำหรับไฟล์ที่สอง มันคือ —1.5—- :
ความแตกต่างถูกระบุโดยสัญลักษณ์:
- + : ไม่มีบรรทัดในไฟล์แรก แทรกลงในไฟล์แรกหรือลบออกจากไฟล์ที่สองเพื่อให้ตรงกับทั้งสองไฟล์
- – : มีบรรทัดอยู่ในไฟล์แรก แต่ไม่มีในไฟล์ที่สอง ลองแทรกในไฟล์ที่สองหรือลบออกจากไฟล์แรกเพื่อให้ตรงกับทั้งสองไฟล์
- ! : Line ต้องการการปรับเปลี่ยนเพื่อให้ตรงกัน
วิธีตรวจสอบความแตกต่างของไฟล์ในโหมดรวมโดยใช้คำสั่ง diff:
โหมดรวมจะค่อนข้างคล้ายกับโหมดบริบท แต่ไม่มีข้อมูลซ้ำซ้อน ธงที่เราใช้คือ -ยู :
$แตกต่าง -ยูtest_file_1.txt test_file_2.txt
ในผลลัพธ์ ไฟล์แรกถูกระบุด้วย — และไฟล์ที่สองด้วย +++ บรรทัดที่สองแสดงจำนวนบรรทัดที่พิจารณาเพื่อเปรียบเทียบในทั้งสองไฟล์ จากนั้นเนื้อหาที่จะลบ เพิ่ม หรือแก้ไขด้วยสัญลักษณ์ จะไม่มีสัญลักษณ์ที่มีบรรทัดที่คล้ายกันในทั้งสองไฟล์
วิธีละเว้นตัวพิมพ์เล็กในขณะที่ใช้คำสั่ง diff:
หากคุณต้องการเปรียบเทียบไฟล์โดยไม่สนใจความละเอียดอ่อนของตัวพิมพ์ ให้ใช้ปุ่ม -ผม ธง:
$แตกต่าง -ผมtest_file_1.txt test_file_2.txtสำหรับการสาธิตฉันได้ทำ NS ของ Deepin ในไฟล์แรกขนาดเล็ก:
ดังที่เห็นในคำสั่งแรก ความแตกต่างจะถูกระบุ; ขณะใช้ -ผม ความแตกต่างนั้นได้ถูกลบออกไปแล้ว
ตัวเลือกที่มีประโยชน์อื่น ๆ ของ แตกต่าง คำสั่งอยู่ด้านล่าง:
ตัวเลือก | คำอธิบาย |
---|---|
-ถึง | ตัวเลือกนี้ถือว่าไฟล์ทั้งหมดเป็นไฟล์ข้อความ |
-NS | ละเว้นการแก้ไขโดยที่บรรทัดว่างเปล่าทั้งหมด |
-และ | ตัวเลือกนี้ละเว้นการขยายแท็บ |
-ผม | ละเว้นการเปลี่ยนแปลงที่ทุกบรรทัดตรงกัน |
-NS | ให้ผลลัพธ์เมื่อสองไฟล์เหมือนกัน |
-ใน | ไม่สนใจพื้นที่สีขาวทั้งหมด |
-กับ | ไม่สนใจช่องว่างที่ปลายบรรทัด |
วิธีใช้ Vim Editor เพื่อเปรียบเทียบสองไฟล์:
อีกวิธีหนึ่งในการเปรียบเทียบสองไฟล์คือการใช้ vimdiff สั่งการ. เพื่อที่คุณจะต้องติดตั้ง vim:
$sudoฉลาดติดตั้ง ฉันมา
ตอนนี้เพื่อเปรียบเทียบสองไฟล์ให้ใช้:
$vimdiff test_file_1.txt test_file_2.txt
ไฟล์ทั้งสองจะถูกเปิดเคียงข้างกัน ส่วนที่ไม่ตรงกันจะถูกเน้น:
วิธีเปรียบเทียบสองไฟล์โดยใช้ colordiff:
อีกวิธีหนึ่งคือการจัดเรียงของส่วนขยายของ แตกต่าง สั่งการ. คุณสามารถทำให้การเปรียบเทียบสามารถระบุตัวตนได้มากขึ้นโดยการเพิ่มสีเข้าไป ในการติดตั้งให้ใช้:
$sudoฉลาดติดตั้งcolordiff
หากต้องการเปรียบเทียบไฟล์ ให้ใช้:
$colordiff test_file_1.txt test_file_2.txt
เปลี่ยนได้ แตกต่าง กับ colordiff เพื่อให้ได้ผลลัพธ์มาตรฐานของ แตกต่าง คำสั่งในรูปแบบสี
บทสรุป:
เพื่อเปรียบเทียบไฟล์ใน Linux และแม้แต่ใน macOS ยูทิลิตี้ที่ใช้เรียกว่า diff ยูทิลิตี้ diff เปรียบเทียบสองไฟล์และให้ข้อมูลเกี่ยวกับความแตกต่างระหว่างสองไฟล์ นักพัฒนาส่วนใหญ่ใช้คำสั่ง diff เพื่อสร้างไฟล์แพตช์
ในคู่มือนี้ เราได้กล่าวถึง แตกต่าง คำสั่งและวิธีใช้เปรียบเทียบสองไฟล์กับตัวเลือกที่ต่างกัน เรายังได้เรียนรู้วิธีการใช้งาน colordiff เพื่อทำให้ไฟล์แตกต่างเป็นที่รู้จักมากขึ้น แต่ถ้าคุณพบว่ายูทิลิตีแบบเทอร์มินัลใช้งานยาก ก็มีเครื่องมือที่ใช้ GUI ด้วยเช่นกัน เช่น Kompare, DiffMerge, Meld — Diff Tool และ Diffuse — GUI Giff Tool