পার্থক্য কমান্ড লিনাক্স শেল থেকে ফাইল বা ডিরেক্টরি তুলনা করার একটি সহজ উপায়। সাধারণ ব্যবহারের কিছু উদাহরণ সহ এই নিবন্ধটি আপনাকে কীভাবে এটি ব্যবহার করতে হয় তা দেখাবে।
পার্থক্য কমান্ড দুটি ফাইল বা ডিরেক্টরির লাইন-বাই-লাইন তুলনা করে এবং তাদের মধ্যে পার্থক্য বের করে দেয়।
কেন আপনি ফাইল বা ডিরেক্টরির তুলনা করতে চান?
- আপনার কাছে একই নামের দুটি ফাইল থাকতে পারে যেগুলি একই রকম দেখতে এবং তাদের মধ্যে পার্থক্য দেখতে চান৷
- একটি প্রোজেক্টের প্রোগ্রামিং কোডের পরিবর্তনের তুলনা করা যা আপনি একটি নতুন এবং পুরানো সংস্করণের মধ্যে তৈরি করছেন৷
- আপনি অন্য ড্রাইভে অনেক ফাইল কপি করেছেন এবং নিশ্চিত করতে চান যে সবকিছু সফলভাবে এবং দুর্নীতি ছাড়াই কপি হয়েছে।
- আপনার এবং একজন বন্ধু উভয়েরই একটি ফোল্ডারে ফাইলের একই সেট রয়েছে৷ আপনি আপনার পরিবর্তন করেছেন, কিন্তু সেগুলিকে আবার আপনার বন্ধুর কাছে পাঠাতে চান না৷ আপনি diff ব্যবহার করতে পারেন শুধুমাত্র সেই ফাইলগুলিতে করা পরিবর্তনগুলি সম্বলিত একটি প্যাচ তৈরি করতে, এটি তাদের কাছে পাঠান এবং তারপর সবকিছু পুনরায় ডাউনলোড না করেই তাদের অনুলিপি আপ টু ডেট আনুন৷
ফাইল তুলনা করার জন্য আপনার নিজের কারণ থাকতে পারে, তাই diff এবং কিভাবে এটি ব্যবহার করবেন।
পার্থক্য সিনট্যাক্স
diff OPTIONS FILES
মনে রাখবেন:
- বিকল্পগুলি হল ঐচ্ছিক এবং নীচের টেবিল থেকে সরবরাহ করা যেতে পারে
- ফাইলগুলি৷ দুটি ফাইলের পাথ যা তুলনা করতে হবে, স্পেস দিয়ে আলাদা করা হয়
পার্থক্য বিকল্পগুলি
এখানে সবচেয়ে বেশি ব্যবহৃত বিকল্পগুলি পার্থক্য-এর জন্য কমান্ড, সরাসরি ব্যবহারকারী ম্যানুয়াল থেকে:
-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
…কমান্ড লাইন থেকে বিকল্পগুলির সম্পূর্ণ সেটের জন্য।
উদাহরণ
লিনাক্সে diff
-এর সাথে ফাইলের তুলনা করা
এটি হল diff-এর সবচেয়ে সহজ ব্যবহার কমান্ড এবং কনসোলে সরবরাহ করা দুটি ফাইলের মধ্যে পার্থক্য আউটপুট করবে:
diff file1.txt file2.txt
আউটপুট পুনঃনির্দেশ করা হচ্ছে
আপনি যদি প্যাচ তৈরি করার পরিবর্তে পার্থক্যগুলি দেখতে চান তবে কেবলমাত্র একটি ফাইলে আউটপুট পুনঃনির্দেশ করা দরকারী - যাতে অনেকগুলি থাকলে টার্মিনাল কোনও পরিবর্তন না করে:
diff -q file1.txt file2.txt > differences.txt
এটি তৈরি করবে (বা ওভাররাইট!৷ ) differences.txt, যা দুটি ফাইলের মধ্যে পার্থক্য সংক্ষিপ্ত করবে।
The -q বিকল্পগুলি যোগ করা হয়েছে যাতে শুধুমাত্র পার্থক্যগুলি তালিকাভুক্ত করা হয়; কি ঘটছে তা দেখতে সহজ করার জন্য একই ফাইলগুলি উল্লেখ করা হবে না৷৷
diff এর সাথে ডিরেক্টরির তুলনা করা
-r ব্যবহার করেও ডিরেক্টরির তুলনা করা যেতে পারে তাদের বিষয়বস্তু তুলনা করার জন্য (পুনরাবৃত্ত) বিকল্প:
diff -r -q /path/to/dir1 /path/to/dir2
আবার, আমি -q ব্যবহার করেছি এখানে বিকল্প যাতে শুধুমাত্র পার্থক্য তালিকাভুক্ত করা হয়।
বড় ফাইল বা বড় ফাইল ধারণকারী ডিরেক্টরির তুলনা করা
পার্থক্য একটি নিবিড় প্রক্রিয়া - তুলনা করা প্রতিটি ফাইল পড়া এবং তুলনা করা প্রয়োজন। এটি একটু সময় নিতে পারে৷
–স্পীড-বড়-ফাইল বিকল্প পরিবর্তন করে diff’s অ্যালগরিদম আপনি যদি বড় ফাইলের তুলনা করেন তাহলে এটিকে আরও দক্ষ করে তুলতে - জিনিসগুলিকে কিছুটা গতি দেয়।
একটি ফাইলের জন্য একটি প্যাচ তৈরি করা
একটি প্যাচ তৈরি করতে - দুটি ফাইলের মধ্যে পার্থক্যের একটি তালিকা যা প্রথম ফাইলের অন্য অনুলিপিতে প্রয়োগ করা যেতে পারে যাতে এটি দ্বিতীয়টির সাথে অভিন্ন হয়, নিম্নলিখিত কমান্ডটি ব্যবহার করা যেতে পারে:
diff -u file1.txt file2.txt > update.patch
-u বিকল্প একটি ইউনিফাইড-এ পার্থক্যগুলিকে আউটপুট করে বিন্যাস যা প্যাচ দ্বারা ব্যবহার করা যেতে পারে পরিবর্তন সহ মূল ফাইল আপডেট করার জন্য কমান্ড।
এটি উপযোগী যদি আপনার কোনো বন্ধু বা সহকর্মী থাকে যারা আপনার কিছু ডেটা বা প্রোগ্রামিং কোড ব্যবহার করছে এবং আপনি পুরো ডেটাসেট বা অ্যাপ্লিকেশন আবার না পাঠিয়ে আপনার করা আপডেটগুলি তাদের পাঠাতে চান৷
একটি ফাইলের জন্য একটি প্যাচ ইনস্টল করা
যখন আপনার বন্ধু প্যাচটি পায়, তখন তারা নিম্নলিখিত প্যাচ ব্যবহার করে এটি প্রয়োগ করতে পারে কমান্ড:
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