ডিফ্ট আউটপুট বোঝা


87

আমার আছে file1.txt

this is the original text  
line2  
line3  
line4  
happy hacking !  

এবং file2.txt

this is the original text  
line2  
line4  
happy hacking !  
GNU is not UNIX  

যদি আমি করি: diff file1.txt file2.txtআমি পেয়েছি:

3d2  
< line3  
5a5  
> GNU is not UNIX  

আউটপুটটি সাধারণত কীভাবে ব্যাখ্যা করা হয়? আমি মনে করি তার <মানে মুছে ফেলা হয়েছে তবে কী 3d2বা এর 5a5অর্থ কি?

যদি আমি করি:

$ diff -u file1.txt file2.txt  
--- file1.txt        2013-07-06 17:44:59.180000000 +0200  
+++ file2.txt        2013-07-06 17:39:53.433000000 +0200  
@@ -1,5 +1,5 @@  
 this is the original text  
 line2  
-line3  
 line4  
 happy hacking !  
+GNU is not UNIX  

ফলাফলগুলি পরিষ্কার হয় তবে এর @@ -1,5 +1,5 @@অর্থ কী?

উত্তর:


96

আপনার প্রথম diffআউটপুটে (তথাকথিত "নরমল ডিফ" বলা হয়) এর অর্থ নিম্নরূপ

< - file1.txt এ লাইনগুলি বোঝায়

> - file2.txt এ লাইনগুলি বোঝায়

3d2এবং 5a5প্রভাবিত লাইন নম্বরগুলি চিহ্নিত করুন এবং কোন ক্রিয়া সম্পাদন করা হয়েছিল। dমুছে ফেলা মানে, aযোগ করার জন্য দাঁড়িয়েছে (এবং cপরিবর্তনের জন্য দাঁড়িয়েছে)। অক্ষরের বামে সংখ্যাটি ফাইল 1.txt এর লাইন নম্বর, ডানদিকে সংখ্যাটি ফাইল 2.txt এর লাইন নম্বর। সুতরাং 3d2আপনাকে বলে যে file1.txt এ তৃতীয় লাইনটি মুছে ফেলা হয়েছে এবং ফাইল 2.txt এ লাইন নম্বর 2 রয়েছে (বা আরও ভালভাবে বলা যায় যে মোছার পরে লাইন কাউন্টারটি লাইন 2 নম্বরে ফিরে গেছে)। 5a5আপনাকে বলে যে আমরা ফাইল 1.txt এর 5 নম্বর লাইন থেকে শুরু করেছি (যা আমরা পূর্ববর্তী ক্রিয়ায় একটি লাইন মুছে ফেলার পরে প্রকৃতপক্ষে খালি ছিল), লাইনটি যুক্ত করেছি এবং এই যুক্ত লাইনটি ফাইল 2.txt এর 5 নম্বর।

diff -uকমান্ডের আউটপুটটি কিছুটা আলাদাভাবে ফর্ম্যাট করা হয় (যাকে "ইউনিফাইড ডিফ" ফর্ম্যাট বলা হয়)। এখানে diffদুটি পৃথক পাঠ্যের পরিবর্তে আমাদের পাঠ্যের একটি টুকরা দেখায়। লাইনে @@ -1,5 +1,5 @@অংশটি -1,5file1.txt এবং অংশটি ফাইল 2.txt এর সাথে সম্পর্কিত +1,5। তারা আমাদের বলবে diffযা পাঠ্যের একটি অংশ প্রদর্শন করবে যা ফাইল 1.txt এর 1 নম্বর থেকে শুরু করে 5 লাইন দীর্ঘ। এবং ফাইল 2.txt সম্পর্কে একই - diffআমাদের লাইন 1 থেকে শুরু করে 5 টি লাইন দেখায়।

আমি ইতিমধ্যে বলেছি, উভয় ফাইলের লাইনগুলি একসাথে প্রদর্শিত হবে

 this is the original text  
 line2  
-line3  
 line4  
 happy hacking !  
+GNU is not UNIX  

এখানে -ফাইল 1.txt থেকে মুছে ফেলা +লাইনগুলি চিহ্নিত করে এবং যুক্ত করা রেখাগুলি বোঝায়।


25

সংক্ষিপ্তসার :

একটি দেওয়া diff file1 file2, <মানে লাইনটি অনুপস্থিত file2এবং এর >অর্থ লাইনটি অনুপস্থিত file13d2এবং 5a5উপেক্ষিত করা যেতে পারে, তারা কমান্ড হয় patchযা প্রায়ই সঙ্গে ব্যবহার করা হয় diff

পূর্ণ উত্তর :

অনেক * নিক্স ইউটিলিটিগুলি সহজ manপৃষ্ঠাগুলির পাশাপাশি টেক্সিনফো ম্যানুয়াল সরবরাহ করে । info commandউদাহরণস্বরূপ, আপনি এটি চালিয়ে অ্যাক্সেস করতে পারেন info diff। এই ক্ষেত্রে, আপনার যে বিভাগটি আগ্রহী তা হ'ল:

২.৪.২ সাধারণ ফরম্যাটের বিশদ বিবরণ


সাধারণ আউটপুট ফর্ম্যাটটিতে এক বা একাধিক পার্থক্য রয়েছে; প্রতিটি হুঙ্ক এমন একটি অঞ্চল দেখায় যেখানে ফাইলগুলি পৃথক হয়। সাধারণ ফর্ম্যাট কৃপণাগুলি এর মতো দেখতে:

 CHANGE-COMMAND
 < FROM-FILE-LINE
 < FROM-FILE-LINE...
 ---
 > TO-FILE-LINE
 > TO-FILE-LINE...

পরিবর্তন কমান্ড তিন ধরণের আছে। প্রত্যেকটিতে প্রথম ফাইলটিতে একটি লাইন নম্বর বা কমা-বিভাজিত রেখাগুলি থাকে, একটি একক অক্ষর যা পরিবর্তনের ধরণটি নির্দেশ করে এবং একটি লাইন নম্বর বা দ্বিতীয় ফাইলটিতে কমা-বিভাজিত রেখাগুলি অন্তর্ভুক্ত। সমস্ত লাইন নম্বর প্রতিটি ফাইলের মূল লাইন নম্বর। কমান্ডের পরিবর্তনগুলি হ'ল:

`LaR'
     Add the lines in range R of the second file after line L of the
     first file.  For example, `8a12,15' means append lines 12-15 of
     file 2 after line 8 of file 1; or, if changing file 2 into file 1,
     delete lines 12-15 of file 2.

`FcT'
     Replace the lines in range F of the first file with lines in range
     T of the second file.  This is like a combined add and delete, but
     more compact.  For example, `5,7c8,10' means change lines 5-7 of
     file 1 to read as lines 8-10 of file 2; or, if changing file 2 into
     file 1, change lines 8-10 of file 2 to read as lines 5-7 of file 1.

`RdL'
     Delete the lines in range R from the first file; line L is where
     they would have appeared in the second file had they not been

4

আমি ব্যবহার করার পরামর্শ দিচ্ছি:

diff -rupP file1.txt file2.txt > result.patch

তারপরে, আপনি যখন পড়বেন result.patch, আপনি তাত্ক্ষণিকভাবে পার্থক্যটি জানতে পারবেন।

কমান্ড লাইন সুইচগুলির অর্থ এই:

-আর : পুনরাবৃত্তি

-উ : লাইন নম্বর দেখায়

-p (ছোট): সি ফাংশনে পার্থক্য দেখায়

-পি (মূলধন): একাধিক ফাইলের ক্ষেত্রে সম্পূর্ণ পথ দেখানো হয়


3

উপরের উত্তরগুলি ভাল। তবে একটি শিক্ষানবিস হিসাবে, আমি তাদের বুঝতে কিছুটা অসুবিধা পেয়েছি এবং আরও অনুসন্ধান করার পরে, আমি একটি খুব দরকারী লিঙ্ক পেয়েছি: লিনাক্স ডিফ কমান্ড ও উদাহরণ

সাইটটি ধারণাটি একটি সহজ এবং সহজে বোঝার পদ্ধতিতে ব্যাখ্যা করে।

আপনি যদি এইভাবে বিবেচনা করেন তবে ডিফ কমান্ডটি বোঝা সহজ:

মূলত, এটি একটি ফাইলকে কীভাবে পরিবর্তন করতে হয় তা দ্বিতীয় ফাইলের সাথে অভিন্ন করার জন্য নির্দেশগুলির একটি সেট দেয় set

নিম্নলিখিত প্রতিটি ক্ষেত্রেই ভালভাবে ব্যাখ্যা করা হয়েছে:

একটি যোগ করার জন্য, সি পরিবর্তনের জন্য, ডি মুছতে


2

আপনাকে মনে রাখতে সহায়তার জন্য জিনিসগুলির নাম পরিবর্তন করুন!

diff  <file-to-edit>  <file-with-updates>   #Rather than diff f1 f2

ফলাফলগুলি বিভিন্ন সম্পাদনা করে ফাইল-টু সম্পাদনা (ফাইল 1) এ কাজ করে।


সাদৃশ্য, আমি ফলাফলগুলি ধারণার জন্য এই নামগুলি সহায়ক বলে মনে করি:

মুছুন = 'অপসারণ' & যোগ করুন = 'সন্নিবেশ'।

2,4d1 --- ডি (গুলি) - -n --- elete ( ' অপসারণ ') ডি লাইন (গুলি)। তারপরে উভয় ক্ষেত্রে লাইন এন এ সিঙ্ক করুন।

4a2,4 --- এন- এ- ইউ (গুলি) --- লাইনে এন, একটি ডিডি (' সন্নিবেশ ') আপডেটের লাইন ইউ

দ্রষ্টব্য: এগুলি প্রায় প্রতিসাম্যযুক্ত।


পরিবর্তন = 'সরান এবং সন্নিবেশ করান'।

2,4c5,6 --- আর (গুলি) - সি- ইউ (গুলি) আর (গুলি) লাইন সরান, তারপরে তাদের জায়গায় আপডেট হওয়া লাইনগুলি ইউ (গুলি) sertোকান ।



উদাহরণ স্বরূপ:

4a2,4 --- 4 থেকে শুরু করে, আপডেট হওয়া লাইনগুলিকে 2-4 যোগ করুন (অর্থাত 2,4 অর্থ 2, 3 এবং 4)

2,4d1 --- 2-4 লাইন সরান।

2,4c5,6 --- 2-4 লাইন সরান, এবং আপডেট হওয়া লাইনগুলি 5-6 sertোকান


  • আমি জানি যে এগুলি স্ট্রিম এডিটর কমান্ড এবং কোনও মেশিন দ্বারা প্রক্রিয়াজাতকরণের জন্য ডিজাইন করা হয়েছে। উদাহরণস্বরূপ, এটি আসলে এড কমান্ড অ্যাড, সন্নিবেশ নয়, তবে সন্নিবেশ সম্পর্কে চিন্তা করা আমার পক্ষে আরও সহায়ক যা শেষ পর্যন্ত ফাইলটিতে করা হচ্ছে। তারা স্ট্রিম অপারেশনগুলি ব্যবহার করে তবে আমি ফলাফলের দিক দিয়ে ভাবতে চাই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.