শেল - কিছু কমান্ডের ডিরেক্টরি কীভাবে পাওয়া যায়?


127

আমি জানি যে আপনি যখন শেলটিতে থাকবেন তখন কেবলমাত্র কমান্ডগুলিই ব্যবহার করা যেতে পারে সেগুলি হ'ল PATH- র কোনও ডিরেক্টরি ডিরেক্টরিতে পাওয়া যেতে পারে। এমনকি আমার পথের চলকগুলিতে কীভাবে ডায়ার রয়েছে তা কীভাবে দেখতে হবে তা আমি জানি না (এবং এটি আরও একটি ভাল প্রশ্নের উত্তর দেওয়া যেতে পারে), আমি কী জানতে চাই:

আমি শেল এসে লিখতে:

$ lshw

আমি শেলের উপর একটি কমান্ড জানতে চাই যা এই আদেশটি কোথায় রয়েছে তা আমাকে বলতে পারে। অন্য কথায়, এই "এক্সিকিউটেবল ফাইল" কোথায় অবস্থিত?

কিছুটা এইরকম:

$ location lshw
/usr/bin

যে কেউ?

উত্তর:


187

আপনি যদি বাশ বা zsh ব্যবহার করছেন তবে এটি ব্যবহার করুন:

type -a lshw

এটি লক্ষ্যটি একটি বিল্টিন, একটি ফাংশন, একটি উপাস বা বাহ্যিক এক্সিকিউটেবল কিনা তা প্রদর্শিত হবে। যদি পরে থাকে তবে এটি আপনার কাছে প্রদর্শিত প্রতিটি স্থান দেখায় PATH

bash$ type -a lshw
lshw is /usr/bin/lshw
bash$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
bash$ zsh
zsh% type -a which
which is a shell builtin
which is /usr/bin/which

বাশ-এ, ফাংশনগুলির জন্য type -aফাংশন সংজ্ঞাও প্রদর্শন করা হবে। আপনি declare -f functionnameএকই জিনিসটি করতে ব্যবহার করতে পারেন (আপনার এটি zsh এর জন্য ব্যবহার করতে হবে, যেহেতু type -aহয় না)।


যারা উত্তর দিয়েছেন তাদের সবাইকে ধন্যবাদ, তবে এই উত্তরটি সবচেয়ে উত্তেজনাপূর্ণ ছিল! ধন্যবাদ! আমি ভাবছিলাম যে আমি পাগল, কারণ আমি এটি করার একটি উপায় (অনেক দিন আগে) সংজ্ঞায়িত করেছি: 'আপডেট', এবং এটি 'অ্যাপট-গেট আপডেট' করছে; আমার জন্য এপ-গেট ডিস-আপগ্রেড '। তবে আপাতত, আমি কোথাও কিছু আপডেট.sh ফাইল সন্ধান করার চেষ্টা করছিলাম এবং আমি এটি খুঁজে পেলাম না। এই কারণেই আমি এই প্রশ্নটি শুরু করেছি। তবে এখন, 'টাইপ -a আপডেট' ব্যবহার করে আমি দেখতে পেলাম যে এটি আমার b বাড়িতে অবস্থিত আমার .Bashrc- এ সংজ্ঞায়িত একটি উপনাম। সত্যিই আপনাকে ধন্যবাদ.
গ্যাব্রিয়েল এল। অলিভিরা

1
@ গ্যাব্রিয়েল: আপনি যদি এর সাথে পরিচিত না হন locateতবে ফাইলগুলি অনুসন্ধানে সহায়তা করতে পারেন। এটি একটি ডাটাবেস ব্যবহার করে updatedbযা পরিচালনা করে যা ক্রোন কাজ থেকে চালিত হয়। যেহেতু locateপুরো ফাইল সিস্টেমের চেয়ে একটি ডাটাবেস অনুসন্ধান করে এটি এর চেয়ে অনেক দ্রুত find(যা শেষ অবলম্বন হিসাবে ব্যবহৃত হতে পারে)।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

ধন্যবাদ. আমি এই সরঞ্জামটি অধ্যয়ন করব এবং উবুন্টুর ক্রোনজবগুলে আপডেটবিডি কীভাবে চালিত হবে তা দেখুন।
গ্যাব্রিয়েল এল। অলিভিরা

কখনও কখনও type -aবিভ্রান্ত হতে পারে। যেমন nvmকোন বাশ ফাংশনটি আমার করা দরকার: type -a nvm | head -n1ঠিক কী তা খুঁজে বের করতে nvm
মেরিনোস আন

@ মেরিনোসঅন: ফাংশনগুলির জন্য, type -aফাংশন সংজ্ঞা পাশাপাশি কার্যকর করার ধরণের ফলাফলকে আউটপুট করে। ব্যবহারের সাথে ঝুঁকিটি headহ'ল একাধিক প্রকারের সাথে নামের ক্ষেত্রে, অতিরিক্ত ধরণের আউটপুট হবে না। আপনি দেখতে চাইবেন type -t
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

64

এটার মত:

which lshw

আপনার পথে মেলে এমন সমস্ত কমান্ড দেখতে:

which -a lshw 

7
আপনার পথে মেলে এমন কমান্ডগুলির সমস্ত দেখতে কোনও lshw।
অ্যালজি

আমি বিশ্বাস করি এটি কেবল কমান্ডগুলির সাথে কাজ করে (AT PATH এ এক্সিকিউটেবল), ফাংশন নয়।
অলিভিয়ার লাকান

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

উপকরণ এবং ব্যাশ ফাংশনের জন্য কাজ করে না। কমপক্ষে উবুন্টু উপর। আরও ভাল ব্যবহারtype -a lshw
মেরিনোস আন

17

PATH এনভায়রনমেন্ট ভেরিয়েবল, এবং ইকো কমান্ডের সাহায্যে প্রদর্শিত হতে পারে:

echo $PATH

এটি কোলন চরিত্র দ্বারা পৃথক করা পাথের একটি তালিকা ' :'

whichকমান্ড আপনাকে বলে যা ফাইল মৃত্যুদন্ড কার্যকর করা যখন আপনি একটি কমান্ডটি প্রয়োগ করুন:

which lshw

কখনও কখনও আপনি যা পান তা হ'ল একটি সিমিলিংকের পথ; যদি আপনি সেই লিঙ্কটি সন্ধান করতে চান যেখানে প্রকৃত সম্পাদনযোগ্য জীবনযাপন করেন তবে আপনি readlinkএটিকে আউটপুট ব্যবহার করতে এবং খাওয়ান which:

readlink -f $(which lshw)

-fপরামিতি নির্দেশ readlinkসিমবলিক লিঙ্ক যাও recursively নিম্নলিখিত রাখা।

আমার মেশিনের একটি উদাহরণ এখানে:

$ which firefox
/usr/bin/firefox

$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh

5
~$ echo $PATH
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
~$ whereis lshw
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz

3

TENEX সি শেল সালে tcsh শেল , এক কমান্ড এর অবস্থান (গুলি) তালিকাবদ্ধ করতে পারেন, অথবা এটি হলে একটি বিল্ট-ইন কমান্ড ব্যবহার whereকমান্ড উদাহরণ:

tcsh% where python
/usr/local/bin/python
/usr/bin/python

tcsh% where cd
cd is a shell built-in
/usr/bin/cd

0

কর্ন শেল, বিল্ট-ইন kshঅফার করে whenceযা অন্যান্য শেল বিল্ট-ইনস, ম্যাক্রোস ইত্যাদি সনাক্ত করে। তবে whichকমান্ডটি আরও বহনযোগ্য।



0

এর বিকল্প type -aহ'লcommand -V

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

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