কমান্ড লাইন থেকে অ্যাপ্লিকেশনটির পথ কীভাবে সন্ধান করবেন?


109

উদাহরণস্বরূপ, আমি gitআমার সিস্টেমে ইনস্টল করেছি। তবে আমি এটি কোথায় ইনস্টল করেছি তা মনে নেই, সুতরাং এটি খুঁজে পাওয়ার জন্য কোন আদেশটি উপযুক্ত?


45
which
হি

উত্তর:


123

যদি এটি আপনার পথে থাকে তবে আপনি চালাতে পারেন type gitবা হয় which gitwhichকমান্ড সমস্যার সঠিক পথ (পরিবেশ এবং বিন্দু ফাইলের মধ্যে বিভ্রান্তি) পেয়ে ছিল। কারণ type, আপনি -pযুক্তি দিয়ে কেবল পথ পেতে পারেন ।

যদি এটি আপনার পথে না থাকে, তবে এটির সাথে সন্ধান করা ভাল locate -b git এটি 'গিট' নামে কিছু খুঁজে পাবে। এটি একটি দীর্ঘ তালিকা হবে, তাই এটির সাথে যোগ্যতা অর্জন করা ভাল locate -b git | fgrep -w bin


10
আমি locateঅবিরাম ব্যবহার করি (এটি খুব দ্রুত) তবে এটি সম্পর্কে অসচেতনদের locateজন্য কেবলমাত্র এটি সর্বশেষতম ডাটাবেস আপডেট হিসাবে আপ টু ডেট which যা আমার উবুন্টুতে স্বয়ংক্রিয়ভাবে প্রতিদিন চালিত হয়। রিফ্রেশ কমান্ড sudo updatedb... এছাড়াও locate: বিল্ট ইন Regex ক্ষমতা উপলব্ধ রয়েছে, তাই এই মত কমান্ড কাজ করে locate -br "^git$"-b` উপায়ে মাত্র অনুসন্ধানকে সীমাবদ্ধ ... basename ... অথবা ছাড়া -b, এটা সম্পূর্ণ পথনাম অনুসন্ধান করে .. এছাড়াও , এটি অনুসন্ধানের জন্য আপনি এটি কনফিগার করেছেন এমন পাথগুলি অনুসন্ধান করে .. আপনার রেজেক্স ফিল্টার ব্যতীত এর কোনও কমান্ড-লাইন নিয়ন্ত্রণ নেই।
পিটার.ও

7
পছন্দ typeকরার whichwhichসহজেই বিভ্রান্ত হয়
গিলস

@ গিলিস, এটি আমার পক্ষে মজার আচরণের বিপরীত: typeশেল বিল্টিন যা আমাকে এলিয়াস এবং এ জাতীয় কথা বলে এবং whichএটি একটি বহিরাগত প্রোগ্রাম যা আমাকে কার্যকর করার পথে দেখায় ... যদিও সেখানে যদি কোনও বিল্টিন থাকে যা যেভাবে এক্সিকিউটেবল কল হবে না।
কোডলিবেটর

@ কোডলিবিটারের সমস্যাগুলি হ'ল whichএটি শেল বিল্ট-ইনগুলি এবং ফাংশনগুলি সম্পর্কে জানেন না (যা আপনি যখন কমান্ডটি টাইপ করবেন তা ভাবছেন তখন প্রাসঙ্গিক) এবং এটি $PATHকিছু সিস্টেমে আলাদা ব্যবহার করে।
গিলস

48

POSIX মান এই কাজ করতে উপায় command -v git। সমস্ত ইউনিক্স-এর মতো সিস্টেমে এটি সমর্থন করা উচিত।


4
আমি জানি এটি এক বছরের বেশি বয়সী, তবে আমি যা খুঁজছিলাম ঠিক এটি ছিল; আশ্চর্য হ'ল এটি গৃহীত উত্তর নয়।
আকোই মেক্সেক্স

13

whereis git এবং আপনি আদেশের পথ পান get

এটি কেবলমাত্র যদি গিটটি আপনার মধ্যে PATH ভেরিয়েবল থাকে তবে আপনি যদি এটি প্যাকেজ ম্যানেজারের মাধ্যমে না ইনস্টল করেন তবে এটি আরও জটিল এবং আপনার আদেশ findবা locateআদেশগুলি ব্যবহার করা উচিত ।


1
ব্যবহারের whichএছাড়াও উত্সাহ দেওয়া হয়।
নিখিল মুলি


13

এখানে অন্যান্য উত্তর মূলত লিনাক্স আধুনিক সংস্করণ প্রতি গতি বাড়ানোর হবে বলে মনে হচ্ছে, তাই যদি আপনি ব্যবহার করতে ঘটতে gitএকটি অপারেটিং সিস্টেম নেই যে locate, whereis, which, অথবা apropos(সোলারিস, HPUX, ইত্যাদি মত), তারপর সবসময়ই পুরাতন স্ট্যান্ডবাই হয় find

find / -name git 

উপরে তালিকাভুক্ত সিস্টেমগুলির কয়েকটি পুরানো সংস্করণ, আপনার -printসরবরাহিত বিকল্পের প্রয়োজন হতে পারে find

find / -name git -print

এবং যদি আপনি ব্যবহার করেন তবে locateনিশ্চিত হন যে আপনি updatedbপর্যায়ক্রমে চালাচ্ছেন । ( locate.updatedbকিছু বিএসডি ডেরিভেটিভসে)


8
পথে প্রোগ্রামগুলির জন্য, ব্যবহার করুনtype ; এটি নির্ভরযোগ্য এবং বহনযোগ্য (30 বছরের পুরানো সিস্টেমগুলি বাদে)।
গিলস

ধন্যবাদ, জিিলস আমি কখনই জানতাম না type। :) এটি অবশ্যই পুস্তকটিতে যাচ্ছে!
টিম কেনেডি

এটি সম্ভবত আপনার দিকে লক্ষ্য করা উপযুক্ত যা findআপনি যেখানেই এটি রুট করবেন সেখান থেকে শুরু হওয়া ফাইল সিস্টেমের সম্পূর্ণ গভীরতা-প্রথম অনুসন্ধান করে। সুতরাং find / -name gitআপনার পুরো সিস্টেম অতিক্রম করবে। আপনি যদি জানেন যে প্রোগ্রামটি আপনার পথে চলছে তবে আপনি সাধারণত করতে পারেন IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, যদিও ইউনিক্স ফাইল সিস্টেমগুলি পর্যাপ্ত পরিমাণে অনুমতিপ্রাপ্ত যে এটিতে আপনার যদি অদ্ভুত অক্ষর থাকে তবে এটি বিভিন্ন উপায়ে ভেঙে যেতে পারে PATH
Quodlibetor

আসলে আমি যে আদেশটি দিয়েছিলাম তা PATHহ'ল আপনার , সঠিক জিনিসটি (আগের মতো একই সাবধানবাণী সহ) ভঙ্গ হবে IFS=":"; for dir in $PATH; do find "$dir" -name git; done। এছাড়াও, পুনরাবৃত্তি করতে, এই উত্তরটি কেবলমাত্র এমন লোকদের দ্বারা ব্যবহার করা উচিত যাদের অ্যাক্সেস নেই typeবা which বা locate , অর্থাৎ প্রায় কেউই নেই। @ আর্জেজের উত্তরটি সঠিক।
কোডলিবেটর

5

ইনস্টলড প্রোগ্রামটির পথ পেতে আপনি হয় ব্যবহার করেন whereisবা which। যদি আপনি এর নামটি ভুলে যেতে চান তবে আপনি aproposআপনার ইউটিলিটির প্রতিশব্দ বা বর্ণনা সহ ব্যবহার করতে পারেন , উদাহরণস্বরূপ apropos "version control"পাবেন git। এটি অনুসরণ করা অবশ্যই whatisএকটি প্রোগ্রামের ক্রিয়াকলাপের সংক্ষিপ্তসারের জন্য আদেশ। এটি আপনার সিস্টেমে সমস্ত প্রোগ্রাম এবং ফাংশনের ক্ষেত্রে প্রযোজ্য নয়। উদাহরণস্বরূপ চেষ্টা করুন whatis "the meaning of life, universe and everything"


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