Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Linux Diff में मास्टरी: फ़ाइलें तुलना करें, परिवर्तन पहचानें, और पैच बनाएं – चरण-दर-चरण गाइड

diff कमांड Linux shell से फ़ाइलों या डायरेक्ट्रीज की तुलना करने का एक आसान तरीका है। यह लेख आपको दिखाएगा कि इसका उपयोग कैसे करें, कुछ सामान्य उपयोग के उदाहरणों के साथ।

diff कमांड दो फ़ाइलों या डायरेक्ट्रीज की लाइन-दर-लाइन तुलना करता है और उनके बीच के अंतर को आउटपुट करता है।

आप फ़ाइलों या डायरेक्ट्रीज की तुलना क्यों करना चाहेंगे?

  • आपके पास एक ही नाम की दो फ़ाइलें हो सकती हैं जो समान दिखती हैं और आप उनके बीच का अंतर देखना चाहते हैं।
  • आपके द्वारा बनाए जा रहे प्रोजेक्ट में प्रोग्रामिंग कोड में नए और पुराने संस्करण के बीच परिवर्तनों की तुलना करना।
  • आपने कई फ़ाइलों को दूसरे ड्राइव पर कॉपी किया है और यह सुनिश्चित करना चाहते हैं कि सब कुछ सफलतापूर्वक और बिना करप्शन के कॉपी हो गया है।
  • आप और एक मित्र दोनों के पास एक फ़ोल्डर में फ़ाइलों का एक ही सेट है। आपने अपने में परिवर्तन किए हैं, लेकिन उन सभी को फिर से अपने मित्र को नहीं भेजना चाहते। आप diff का उपयोग करके केवल उन फ़ाइलों में किए गए परिवर्तनों वाला एक पैच बना सकते हैं, इसे उन्हें भेज सकते हैं, और फिर पूरे डेटासेट या एप्लिकेशन को फिर से डाउनलोड किए बिना उनकी कॉपी को अपडेट कर सकते हैं।

फ़ाइलों की तुलना करने के आपके अपने कारण होंगे, तो चलिए diff और इसके उपयोग पर चलते हैं।

diff सिंटैक्स

diff OPTIONS FILES

ध्यान दें कि:

  • OPTIONS वैकल्पिक हैं और नीचे दी गई तालिका से प्रदान किए जा सकते हैं
  • FILES तुलना की जाने वाली दो फ़ाइलों का पथ है, जो स्पेस द्वारा अलग किए गए हैं

diff विकल्प

यहाँ यूजर मैनुअल से सीधे diff कमांड के लिए सबसे अधिक उपयोग किए जाने वाले OPTIONS हैं:

विकल्प विवरण
-q, –brief केवल तब रिपोर्ट करें जब फ़ाइलें भिन्न हों
-s, –report-identical-files रिपोर्ट करें जब दो फ़ाइलें समान हों
-u, -U NUM, –unified[=NUM] NUM (डिफ़ॉल्ट 3) लाइन्स का यूनिफाइड कॉन्टेक्स्ट आउटपुट करें
-N –new-file अनुपस्थित फ़ाइलों को खाली मानें
-l, –paginate 'pr' के माध्यम से आउटपुट पास करके पेजिनेट करें
-r, –recursive पाए गए किसी भी सबडायरेक्ट्रीज को रिकर्सिवली तुलना करें
–no-dereference सिम्बोलिक लिंक्स को फॉलो न करें
-a, –text सभी फ़ाइलों को टेक्स्ट मानें
-d, –minimal परिवर्तनों का एक छोटा सेट खोजने के लिए कड़ी मेहनत करें
–speed-large-files बड़ी फ़ाइलों और कई बिखरे हुए छोटे परिवर्तनों को मानें

आप यहां पूर्ण मैनुअल देख सकते हैं या चलाएं:

man diff

…कमांड लाइन से विकल्पों का पूरा सेट पाने के लिए।

उदाहरण

Linux में diff से फ़ाइलों की तुलना

यह diff कमांड का सबसे सरल उपयोग है और दो सप्लाई की गई फ़ाइलों के बीच के अंतर को कंसोल पर आउटपुट करेगा:

diff file1.txt file2.txt

आउटपुट को रीडायरेक्ट करना

यदि आप केवल अंतर देखना चाहते हैं बजाय पैच बनाने के, तो आउटपुट को फ़ाइल में रीडायरेक्ट करना उपयोगी है – ताकि टर्मिनल बहुत सारे परिवर्तनों होने पर किसी भी परिवर्तन को काट न दे:

diff -q file1.txt file2.txt > differences.txt

यह differences.txt बनाएगा (या ओवरराइट करेगा!), जो दो फ़ाइलों के बीच के अंतर को सारांशित करेगा।

-q विकल्प जोड़ा गया है ताकि केवल अंतर सूचीबद्ध हों; समान फ़ाइलों का उल्लेख नहीं किया जाएगा ताकि यह देखना आसान हो कि क्या हो रहा है।

diff से डायरेक्ट्रीज की तुलना करना

डायरेक्ट्रीज की तुलना भी -r (रिकर्सिव) विकल्प का उपयोग करके उनकी सामग्री की तुलना करके की जा सकती है:

diff -r -q /path/to/dir1 /path/to/dir2

फिर से, मैंने यहां -q विकल्प का उपयोग किया है ताकि केवल अंतर सूचीबद्ध हों।

बड़ी फ़ाइलों या बड़ी फ़ाइलों वाली डायरेक्ट्रीज की तुलना

diff एक गहन प्रक्रिया है – तुलना की जा रही हर फ़ाइल को पढ़ने और तुलना करने की आवश्यकता होती है। इसमें समय लग सकता है।

–speed-large-files विकल्प diff के एल्गोरिदम को बदल देता है ताकि यह अधिक कुशल हो अगर आप बड़ी फ़ाइलों की तुलना कर रहे हैं – चीजों को थोड़ा तेज कर देता है।

फ़ाइल के लिए पैच बनाना

एक पैच बनाने के लिए – दो फ़ाइलों के बीच अंतर की एक सूची जिसे पहली फ़ाइल की दूसरी कॉपी पर लागू करके इसे दूसरी फ़ाइल के समान बनाया जा सकता है, निम्न कमांड का उपयोग किया जा सकता है:

diff -u file1.txt file2.txt > update.patch

-u विकल्प अंतर को यूनिफाइड फॉर्मेट में आउटपुट करता है जिसे patch कमांड द्वारा मूल फ़ाइल को परिवर्तनों के साथ अपडेट करने के लिए उपयोग किया जा सकता है।

यह उपयोगी है यदि आपका कोई मित्र या सहकर्मी आपके कुछ डेटा या प्रोग्रामिंग कोड का उपयोग कर रहा है, और आप उन्हें अपने द्वारा किए गए अपडेट्स भेजना चाहते हैं बिना पूरे डेटासेट या एप्लिकेशन को फिर से भेजे।

फ़ाइल के लिए पैच इंस्टॉल करना

जब आपका मित्र पैच प्राप्त करता है, तो वे निम्न patch कमांड का उपयोग करके इसे लागू कर सकते हैं:

patch original.txt < update.patch

फ़ाइल के लिए पैच को पूर्ववत करना

यदि आपने गलती की है, तो आप -R विकल्प के साथ रिवर्स में पैच चलाकर इसे पूर्ववत कर सकते हैं:

patch -R original.txt < update.patch

डायरेक्ट्री के लिए पैच बनाना

निम्न कमांड -r (रिकर्सिव), -u (यूनिफाइड फॉर्मेट), और -N (अनुपस्थित फ़ाइलों को खाली मानें) विकल्प चलाकर पूरी डायरेक्ट्री के लिए पैच बनाएगा।

diff -ruN originalDir updatedDir > update.patch

डायरेक्ट्री के लिए पैच इंस्टॉल करना

पैच को -p0 विकल्प का उपयोग करके डायरेक्ट्री पर लागू किया जा सकता है, जो पैच को उसी डायरेक्ट्री संरचना पर लागू करेगा जिसमें इसे बनाया गया था:

patch -p0 < update.patch

डायरेक्ट्री के लिए पैच को पूर्ववत करना

अंत में, डायरेक्ट्री की पैचिंग को पूर्ववत/रिवर्स करना:

patch -R -p0 originalFile < patchFile
  1. लिनक्स के साथ ISO फाइलें कैसे निकालें लिनक्स के साथ ISO फाइलें कैसे निकालें

    आपने शायद पहले एक इमेज फाइल डाउनलोड की है, और एक अच्छा मौका है कि इसने लोकप्रिय ISO फाइल एक्सटेंशन का उपयोग किया हो। ये (आमतौर पर काफी बड़ी) फाइलें अनिवार्य रूप से ऑप्टिकल मीडिया डिस्क के डिजिटल संस्करण हैं। उस डिस्क पर मौजूद सभी फाइलें ISO आर्काइव के अंदर हैं। Apple macOS और Microsoft Windows के नए

  1. Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण

    Linux में watch कमांड एक काम करता है – एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहाँ इसका उपयोग कैसे करें। watch कमांड सिंटैक्स watch कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: OPTIONS नीचे दी गई तालिका से विकल्पों की

  1. चरण-दर-चरण गाइड: विंडोज 10 में छिपी फाइलें और फोल्डर दिखाएं चरण-दर-चरण गाइड: विंडोज 10 में छिपी फाइलें और फोल्डर दिखाएं

    जब आप ऑनलाइन होते हैं, तो सबसे महत्वपूर्ण चीजों में से एक यह जानना है कि अपनी महत्वपूर्ण फाइलों को चुभती नज़रों से कैसे बचाया जाए। लेकिन, क्या होगा अगर आप एक फाइल छुपाते हैं और भूल जाते हैं? या अंदर की सामग्री प्राप्त करने के लिए एक छिपी फाइल की जांच करना चाहते हैं? ठीक है, मुझे पता है कि छिपा हुआ ख