یک پنجره ترمینال که روی یک رایانه لپ تاپ لینوکس کار می کند.
Fatmawati Achmad Zaenuri / Shutterstock

Linux که با فرمان باینری را اجرا می کند که هنگام صدور فرمان به پوسته ، راه اندازی می شود. اگر نسخه های مختلفی از همان برنامه را در رایانه خود دارید ، می توانید از که برای یافتن اینکه کدام پوسته استفاده خواهد کرد ، استفاده کنید.

Binaries and Paths

هنگامی که می خواهید برنامه ای را اجرا کنید یا فرمان از پنجره ترمینال ، پوسته (معمولاً Bash در توزیع های مدرن) باید آن دستور را پیدا کرده و آن را راه اندازی کند. بعضی از دستورات ، مانند CD ، تاریخچه و pwd درون پوسته ساخته شده اند ، بنابراین Bash برای یافتن این موارد لازم نیست خیلی سخت کار کند.

اما چگونه Bash دستورات ، برنامه ها و مستقلهای خارجی را به طور مستقل پیدا می کند. باینری؟ خوب ، Bash از مسیری استفاده می کند ، که در واقع مجموعه ای از مسیرها است که هر کدام به یک فهرست راهنما اشاره می کنند. سپس هرکدام از آن فهرستها را برای اجرایی جستجو می کند که با دستور یا برنامه ای که می خواهید اجرا کنید مطابقت دارد. هنگامی که یکی را پیدا کرد ، Bash آن را راه اندازی می کند و جستجو را متوقف می کند.

می توانید از echo استفاده کنید تا متغیر $ PATH را بررسی کنید و دایرکتوری ها را در مسیر خود مشاهده کنید. برای انجام این کار ، موارد زیر را تایپ کرده و سپس Enter را بزنید:

 echo $ PATH 

 The

لیست خروجی هر مسیر را با ستون ها جدا می کند (:). بر روی رایانه ای که ما استفاده می کنیم ، Bash فهرست های زیر را به این ترتیب جستجو می کند:

  • / usr / local / sbin
  • / usr / local / bin
  • / usr / sbin
  • / usr / bin
  • / sbin
  • / bin
  • / user / games
  • / usr / local / games
  • / snap / bin

تعداد زیادی پوشه به نام / sbin و / bin در سیستم پرونده وجود دارد که می تواند منجر به سردرگمی شود.

سازمان دیده بان آن راه ها

بیایید بگوییم که ما یک نسخه به روز شده از برنامه ای به نام htg را داریم. در فهرست کنونی ما قرار دارد و ما می توانیم با تایپ دستور زیر آن را اجرا کنیم:

./ htg

 برنامه زیادی نیست. فقط شماره نسخه را چاپ کنید ، و سپس بسته می شود. نسخه جدید 1.2.138 است.

برای اجرای برنامه در فهرست کار فعلی ، باید "./" را در مقابل نام برنامه تایپ کنید ، بنابراین Bash می داند آن را پیدا کند.

زیرا ما می خواهیم. این برنامه خاص را از هر فهرست راهنمایی اجرا کنید ، ما می خواهیم اجرایی را به فهرست / usr / bin منتقل کنیم. Bash آن برنامه را در مسیر پیدا می کند و آن را برای ما اجرا می کند.

ما به فهرست موجود خود نیاز نداریم و مجبور نیستیم "./" را مقابل نام برنامه تایپ کنیم ، همانطور که در زیر آمده است:

 sudo mv htg / usr / bin 

 The

اکنون ، بیایید سعی کنیم برنامه را با تایپ کردن اجرا کنیم:

 htg 

 [

چیزی اجرا می شود ، اما آن برنامه جدید و به روز ما نیست. در عوض ، این نسخه قدیمی تر است ، 1.2.105.

آنچه فرمان می دهد

موضوعی که در بالا نشان دادیم این است که چرا که [] طراحی شده است.

در این مثال ما استفاده خواهیم کرد که و نام برنامه ای را که ما به عنوان پارامتر خط فرمان مورد بررسی قرار می دهیم منتقل می کند:

 که htg 

که گزارش می دهد یافت می شود نسخه ای از htg در فهرست / usr / local / bin . از آنجا که آن مکان در مسیری قبل از دایرکتوری که ما htg را جابجا کردیم ، ظاهر می شود ، Bash از نسخه اولیه آن استفاده می کند.

اگرچه ، ما از -a استفاده می کنیم. گزینه (همه) همانطور که در زیر نشان داده شده است ، که همچنان به جستجو می پردازد حتی اگر مسابقه پیدا کند:

 که -a htg 

سپس همه مسابقات را در هر دایرکتوری موجود در مسیر.

بنابراین ، این مشکل است – نسخه اولیه این برنامه در یک فهرست وجود دارد که در پچ نیز موجود است. و آن فهرست قبل از دایرکتوری جستجو می شود که نسخه جدید برنامه را حذف کردیم.

برای تأیید ، می توانیم موارد زیر را تایپ کرده و صریحاً هر نسخه از این برنامه را اجرا کنیم:

 / usr / local / bin / htg 
 / usr / bin / htg 

این مسئله را توضیح می دهد ، و راه حل ساده است.

در واقع ، ما گزینه هایی داریم. ما می توانیم نسخه قدیمی را در فهرست / use / local / bin حذف کنیم یا آن را از / usr / bin به / usr / local / bin منتقل کنیم.

تماشای آن نتایج

دو نتیجه لزوماً به معنی دو پرونده باینری نیستند.

بیایید به مثالی نگاه کنیم که در آن از دستور [] با دستور استفاده خواهیم کرد. گزینه (همه) و به دنبال نسخه های برنامه کمتر باشید:

 که -ا کمتر 

که دو مکان را گزارش می کند نسخه ای از برنامه کمتر را ارائه دهید ، اما آیا این واقعیت دارد؟ عجیب خواهد بود که دو نسخه مختلف (یا همان نسخه در چندین مکان) از کمتر روی یک رایانه لینوکس نصب شده باشد. بنابراین ، ما نمی خواهیم خروجی [ را بپذیریم. در عوض ، بیایید کمی عمیق تر حفاری کنیم.

می توانیم از ls ، -l (لیست طولانی) و -h استفاده کنیم (قابل خواندن توسط انسان) گزینه هایی برای دیدن آنچه اتفاق می افتد:

 ls -lh / usr / bin / less 

اندازه پرونده به عنوان نه بایت گزارش شده است! قطعاً این نسخه کاملی از کمتر نیست است.

اولین شخصیت این فهرست "l" است. یک پرونده معمولی دارای یک خط (-) به عنوان اولین شخصیت است. "l" نمادی است که به معنای پیوند نمادین است. اگر آن جزئیات را از دست داده اید ، نماد -> همچنین نشان می دهد که این یک پیوند نمادین است ، که می توانید به عنوان نوعی میانبر فکر کنید. این یکی به نسخه کمتر در / بن اشاره می کند.

بیایید دوباره با نسخه کمتر کمتر در / بن :

 ls -lh / bin / کمتر 

 [

این نوشته آشکارا یک باینری "واقعی" است. اولین کاراکتر فهرست یک hyphen (-) است ، به این معنی که یک پرونده معمولی است و اندازه پرونده آن 167 KB است. بنابراین ، فقط یک نسخه از کمتر نصب شده است ، اما یک لینک نمادین به آن از یک فهرست دیگر وجود دارد ، که Bash نیز هنگام جستجو در مسیر ، پیدا می کند.

ارتباط: با استفاده از دستور ls برای لیست کردن پرونده ها و دایرکتوری ها در لینوکس

چک کردن چندین دستور به یکباره

شما می توانید چندین برنامه و دستورات را به که منتقل کنید ، و آنها را بررسی کنید

به عنوان مثال ، اگر تایپ کنید:

 کدام یک از سران تاریخ تولد گربه 

که از طریق لیست برنامه ها و دستوراتی که شما تهیه کرده اید ، کار می کند. و نتیجه را برای هر کدام ذکر می کند.

کدام یک است؟

اگر شما خیلی متمایل هستید ، می توانید با تایپ کردن موارد زیر از که به خودی خود است ، استفاده کنید:

 19659077] به غیر از جستجوی سیستم پرونده لینوکس از کنجکاوی ،  که  مفید است وقتی انتظار یک مجموعه رفتار دارید 

می توانید از استفاده کنید که در این موارد برای تأیید فرمان دست اندازی Bash ، شخصی است که می خواهید از آن استفاده کنید.