সনাক্ত / যেখানে / এর মধ্যে পার্থক্য কী


13

কমান্ড locate whereisএবং whichকমান্ডের মধ্যে মূল পার্থক্য কি ।

আমি যে মৌলিক পার্থক্যটি লক্ষ্য করেছি তা হ'ল locateসম্পূর্ণ ফাইল সিস্টেমের সাথে সম্পর্কিত সমস্ত ফাইলের নাম সনাক্ত করা হয় , whereisএবং whichআদেশগুলি কেবল ইনস্টলড অ্যাপ্লিকেশনটির অবস্থান (সিস্টেম / ফাইলের স্থানীয় ঠিকানা) দেয়। আমার পর্যবেক্ষণ কতটা সঠিক?

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


2
এবং কি সম্পর্কে type? : পি
জেমসস্টোন

@ জামেসমস্টোন আপনার অর্থ কী type, দয়া করে বিশদ করুন
চিন্মায় বি

2
দুঃখিত আমি আপনার প্রশ্নটি যুক্ত করার চেষ্টা করছিলাম। typeহ'ল আরেকটি আদেশ যা দেখেছি (আমার দৃষ্টিতে) আপনি উল্লিখিত ব্যক্তির সাথে একই কাজ করেন।
জেমসস্টোন

@ জেমসমস্টোন আমি মনে করি না যে আমার সিস্টেমে কোনও ধরণের কমান্ড রয়েছে। typeকমান্ডের জন্য আমি কোনও ম্যানুয়াল বা তথ্য পৃষ্ঠা সন্ধান করতে অক্ষম । আমি চেষ্টা করেছি man typeএবং info type
চিন্মায় বি

হুম আমি ভাবছি কেন ... আপনি ব্যাশ ব্যবহার করছেন?
জেমস্মস্টোন

উত্তর:


17

whichপ্রোগ্রামের বাইনারি এক্সিকিউটেবলের সন্ধান করে (এটি যদি আপনার রাস্তায় থাকে)। man whichআরও পরিষ্কারভাবে ব্যাখ্যা:

যা বর্তমান পরিবেশে কার্যকর করা হবে এমন ফাইলগুলির (বা লিঙ্কগুলি) নামগুলি প্রদান করে, যদি তার যুক্তিগুলি কঠোরভাবে পসিক্স-কনফর্মেন্ট শেলটিতে আদেশ হিসাবে দেওয়া হত। এটি আর্গুমেন্টের নামের সাথে মিলে এক্সিকিউটযোগ্য ফাইলগুলির জন্য PATH অনুসন্ধান করে এটি করে। এটি প্রতীকী লিঙ্কগুলি অনুসরণ করে না।

whereisএকটি প্রোগ্রামের জন্য বাইনারি, উত্স এবং ম্যান পৃষ্ঠা ফাইলগুলি সন্ধান করে। উদাহরণ স্বরূপ

$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

আপনি এই কমান্ডগুলির আউটপুটটি আর্গুমেন্ট হিসাবে ls -lবা পাস করার মাধ্যমে অতিরিক্ত বিশদ পেতে পারেনfile

$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8

$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8

locateপ্রকৃতপক্ষে সমস্ত ফাইলের প্যাটার্ন নির্দিষ্ট করে দেওয়া হয়েছে যেগুলি তাদের পথে যে কোনও জায়গায় anywhere আপনি কেবল এটি ফাইল এবং ডিরেক্টরিগুলি অনুসন্ধান করতে বলতে পারেন যার নামগুলি (পুরো পাথের চেয়ে) -bবিকল্পের সাথে প্যাটার্নটি অন্তর্ভুক্ত করে , যা সাধারণত আপনি চান, এবং একটি অল্প অল্পস্বল্প তালিকা দেয়।

locateদ্রুত কারণ এটি একটি বাইনারি ডেটাবেস ব্যবহার করে যা পর্যায়ক্রমে আপডেট হয় (একবারে একবার করে cron) gets চালিয়ে গিয়ে সম্প্রতি যুক্ত হওয়া ফাইলগুলি পাওয়া যায় তা নিশ্চিত করতে আপনি নিজে এটি আপডেট করতে পারেনsudo updatedb

আরও একটি বিষয় locate- এটি ফাইলগুলি এখনও বিদ্যমান কিনা তা বিবেচ্য নয়, সুতরাং সম্প্রতি মুছে ফেলা ফাইলগুলি এড়ানোর জন্য, ব্যবহার করুন -elessতালিকাটি দীর্ঘ হতে পারে বলে প্রায়শই আমি পাইপও করি । সাধারণত আমি করি:

sudo updatedb && locate -b -e gimp | less

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


আপনি ড্যাশ তুলনা করতে এবং কমান্ড কর্মক্ষমতা এবং বাস্তবায়ন বিশদ সনাক্ত করতে পারেন? বাইনারি ডাটাবেসের আপডেটটি সিস্টেমে কোনও নতুন ফাইল তৈরির পরে করা উচিত তাই নয় যে সময়টি অনির্দিষ্টকালের সঠিক হবে বা এটি সিস্টেম প্রক্রিয়াগুলি দ্বারা পরিচালিত হয়?
চিন্মায় বি

2
@ ক্রিয়েটর প্রতিদিন স্বয়ংক্রিয়ভাবে ডাটাবেস আপডেট করে ক্রোন দ্বারা সম্পন্ন হয়। আপনি যখন এমন কোনও ইনস্টল করেন তখন তা যাচাই করে নিতে পারেন যা দিয়ে তাত্ক্ষণিকভাবে ফাইলগুলি খুঁজে পেতে পারেন না locate। ড্যাশ সম্পূর্ণ ভিন্ন সূচক ব্যবহার করে - ধীর কারণ এটি আরও স্টাফ করে (আমি আমার উত্তর সম্পাদনা করেছি)
জান্না

1
সুতরাং সংক্ষিপ্তসারটি কার্যকর বা তার থেকে আরও শক্তিশালী তবে ড্যাবটি আরও শক্তিশালী এবং মেশিন লার্নিং প্রয়োগ করে d এবং sudo updatedbআপনার কমান্ডের জন্য ধন্যবাদ খুব সহায়ক যে আপনি জানেন না যদিও আমি নিয়মিত ব্যবহার করি।
চিন্মায় বি

@ নির্মাতা হ্যাঁ আপনি এটিকে আরও ভাল করে বলেছিলেন :) খুশি যে এটি সাহায্য করেছে
জান্না

0

কেবল

$ which samba

কোন কমান্ডটি PATH সেটিংসের মাধ্যমে তালিকাভুক্ত প্রোগ্রামগুলির তালিকা অনুসন্ধান করে

$ whereis samba

যেখানে কমান্ড প্যাট সেটিং-এ উপস্থিত না এমন প্রোগ্রামগুলির জন্য অনুসন্ধান করে

$locate samba

ফাইল নাম দ্বারা ফাইলগুলি সন্ধান করে কিন্তু ডিরেক্টরি কাঠামো নিজেই অনুসন্ধান করে না তবে আপডেটড দ্বারা প্রস্তুত একটি ডাটাবেস কেবল অনুসন্ধান করে। কারণ এর অবস্থান অনুসন্ধানের চেয়ে দ্রুত তবে কম নির্ভুল। উদাহরণ:

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