'কোন'র জন্য কি কোনও বাশ নির্মিত?


16

আমি ন্যূনতম ফেডোরা ইনস্টলটি পরীক্ষা করছি। পাইথন বা নোডের মতো দোভাষীদের জন্য পথটি পরীক্ষা করতে, আমি সাধারণত ব্যবহার করি which

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

আমি ব্যাশ ব্যবহার করছি 4.2।


1
উইন্ডোজ সমতুল্যর জন্য অনুসন্ধানগুলি আমাকে এখানে এনেছে; ভবিষ্যতের দর্শকদের জন্য: "যেখানে" আপনাকে প্রদত্ত ফাইলের পথটি বলবে।
রাবার হাঁস

1
আমি এই প্রশ্নোত্তর জুড়ে আসা যে কোনও ব্যক্তিকেও এই উত্তর ও উত্তর প্রশ্নোত্তর পড়তে উত্সাহিত করি। এটি আপনি যা জানতে চেয়েছিলেন তার সমস্ত কিছুই কভার করে whichকেন "কোন" ব্যবহার করবেন না? তাহলে কী ব্যবহার করবেন?
slm

উত্তর:


26

আপনি ব্যবহার করতে পারেন type, যা একটি বাশ অন্তর্নির্মিত:

$ type -P which
which is /usr/bin/which

ডকুমেন্টেশনের জন্য, দেখুন help [t]ype, যা ম্যান পৃষ্ঠাতে typeবিভাগ বোঝায় bash

( দুটি বিল্টিনেরhelp type সাহায্যের পৃষ্ঠাগুলি মুদ্রণ করে যা "টাইপ" স্ট্রিং দিয়ে শুরু হয় যার মধ্যে একটি অপ্রচলিত এবং এটি সম্পূর্ণরূপে সম্পর্কিত নয়।)


3
আমি type -aনিজেকে পছন্দ করি বন্ধনী কেন [t]ype?
গ্লেন জ্যাকম্যান

type -aযুক্তিটি নির্দেশ করে এমন সমস্ত জিনিস মুদ্রণ করবে এবং এটি টাইপ করার সময় কার্যকর হবে কি তা নয়।
l0b0

2
আমি এই প্রশ্নোত্তর জুড়ে আসা যে কোনও ব্যক্তিকেও এই উত্তর ও উত্তর প্রশ্নোত্তর পড়তে উত্সাহিত করি। এটি আপনি যা জানতে চেয়েছিলেন তার সমস্ত কিছুই কভার করে whichকেন "কোন" ব্যবহার করবেন না? তাহলে কী ব্যবহার করবেন?
slm

তালিকার প্রথম জিনিসটি type -aসর্বদা এটি কার্যকর করে। আমি গ্লেনের মতোই করি এবং সর্বদা ব্যবহার type -aকরি।
slm

1
type -pকমান্ড একটি উপনাম হলে পথ দেখায় না। type -Pসর্বদা সঠিকভাবে কমান্ডের পথ প্রদর্শন করে। আমি মনে করি. আমাদের গৃহীত উত্তর type -P@ l0b0 হিসাবে আপডেট করা উচিত
তারিখের

10

আপনি ব্যবহার করতে পারেন typeবা command -v। এর ফলাফল typeমানুষের পাঠযোগ্য; এর আউটপুট command -vবাশ দ্বারা চালিত হতে পারে।

নোট করুন যে এগুলি আসলে কিছুটা আলাদা। typeএবং commandকমান্ডের হ্যাশড মানটি সন্ধান করুন। এর অর্থ হ'ল, আপনি যদি টাইপ করেন cmd, type cmdবা command -v cmdঠিক কী চালানো হবে তা বলবেন। এগুলি এলিয়াস, ব্যাশ ফাংশন এবং বাশ বিল্টিনগুলিতেও কাজ করে (যদিও type -pএগুলি উপেক্ষা করবে এবং কেবল সত্য ফাইলগুলি ফিরিয়ে দেবে)।

whichশুধু পথের উপর একটি অনুসন্ধান করে। এটি ভিন্ন কারণ:

  • যদি একই নামের সাথে কোনও উপনাম, ফাংশন বা বিল্টিন থাকে তবে এটির পরিবর্তে কল করা হবে।
  • প্যাথএইচ-তে শেষ বার হ্যাশ হওয়ার পরে যদি কোনও কমান্ড যুক্ত করা হয়েছিল তবে এটি পাওয়া যাবে whichতবে এই আদেশটি কার্যকর করলে হ্যাশ মানটি ব্যবহার করা হবে (আপনি জোর করে বাশ-এ হ্যাশ আপডেট করতে বাধ্য করতে পারেন hash -r)।

সাধারণত লোকেরা প্রকৃতপক্ষে অন্তত ইন্টারেক্টিভ ব্যবহারের জন্য typeনা which, যেমন তারা এটি ব্যবহার করে এটি ব্যবহার করতে চায় "যখন আমি এটি চালাব তখন এই আদেশটি কোথা থেকে আসবে?" আপনি কেবল তখনই ব্যবহার whichকরতে পারেন যদি আপনি সত্যই কোনও পথের অনুসন্ধান করতে চান।


command -vএর সমতূল্য ksh whence
হেন্ক ল্যাঙ্গভেল্ড

1
সুতরাং আমরা আছে where, whenceএবং অবশ্যই এছাড়াও who, whyএবং when? কেন নেই what?
হেগেন ভন ইটজেন

echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what
ইভান ভুইকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.