محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

BASH چیست؟ معرفی Bourne Again Shell لینوکس به زبان ساده

قبلا در توسینسو در خصوص انواع Shell در لینوکس صحبت کرده ایم و همچنین در مطلبی در خصوص تفاوت بین Shell و Kernel در سیستم عامل لینوکس هم مطالبی را گفته ایم اما امروز می خواهیم بصورت تخصصی در خصوص یکی از Shell های معروف لینوکس به نام BASH صحبت کنیم. بصورت خلاصه Shell به عنوان یک زبان مترجم خط فرمانی یا Command Line ای شناخته می شود که دستوراتی که شما به سیستم عامل می دهید را به زبان آن ترجمه می کند ، در واقع Shell یک برنامه است که رابط بین Kernel و سخت افزار است و همچنین لایه رابط کاربری ما با هسته سیستم عامل نیز محسوب می شود.

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

در سیستم عامل لینوکس انواع و اقسام Shell وجود دارد اما Bourne Again Shell یا BASH یکی از جدیدترین ، بروز ترین و پیشرفته ترین Shell هایی است که امروزه استفاده می شود و بصورت پیشفرض در اکثر توزیع های لینوکس وجود دارد ، این Shell دستورات بسیار زیاد و متنوعی را درون خودش جای داده است که شما می توانید با استفاده از آنها برنامه های دیگر را براحتی استفاده کنید ، BASH به شما کنترل کاملی از سیستم عامل را ارائه می دهد به ویژه اینکه شما می توانید بر روی برنامه هایی که از طریق این Shell اجرا می شوند کنترل کاملی داشته باشید.

همانطور که می دانید و قبلا هم در خصوص تفاوت بین Linux و UNIX در انجمن تخصصی فناوری اطلاعات ایران صحبت کرده ایم ، لینوکس یک سیستم عامل Open Source و تحت لیسانس پروژه GNU است در حالیکه UNIX یک سیستم عامل با هسته بسته است که دستکاری در آن نمی توان انجام داد ، خط فرمانی که در سیستم عامل UNIX استفاده می شد به نام Bourne Shell معروف بود که در واقع می توان از Bourne Again Shell یا BASH به عنوان Bourne Shell ای نام برد که بصورت ویژه برای پروژه GNU طراحی شده است. هدف اصلی از پروژه GNU که توسط پدر نرم افزارهای آزاد یعنی ریچارد استالمن ایجاد شد ایجاد کردن نرم افزارهای رایگان برای سیستم عامل های شبیه به Unix بود. از BASH می توان به عنوان نسخه رایگان Bourne Shell یاد کرد.

هر برنامه ای که در BASH اجرا شود به عنوان یک Job شناخته می شود. زمانیکه یک Job اجرا و شروع می شود خود را بر روی یک Terminal قرار می دهد ، یک Terminal می تواند یک رابط متنی یا فایل متنی باشد و یا اینکه یک پنجره Teminal که در صفحه X Windows لینوکس باز شده است. به Terminal های متنی در لینوکس به عنوان Straight-Text یا tty و به Terminal هایی که توسط X Windows باز می شوند pseudo-terminal یا pty گفته می شود. اگر می خواهید برنامه شما بدون دخالت Terminal اجرا شود و بصورت مستقل و به BASH هم این امکان را بدهد که یک اعلان به کاربر نمایش دهد کافیست برنامه خود را بعد از نام بردن در Terminal با استفاده از کاراکتر ampersand یا & به شکل زیر وارد کنید :

 root@itpro-debian:/#gedit &

معمولا علامت ampersand را بصورت بالا در Shell Script ها استفاده می کنند ، این علامت به شما اجازه می دهد که ضمن اینکه در پس زمینه یا Background اسکریپت مورد نظر اجرا می شود و شما از اجرا شدن و مراحل اجرای آن خبر نداشته باشید امکان استفاده همزمان از Terminal را نیز به شما می دهد. علامت number sign یا # بعد از prompt مربوط به BASH به این معناست که شما با کاربر super user لینوکس در حال اجرای terminal و دستورات هستید و اگر همین حالت با استفاده از علامت دلار یا $ نمایش داده شود یعنی کاربر شما یک کاربر عادی در لینوکس است. در prompt مربوط به BASH اولین قسمت به عنوان شناسه نام کاربری یا user id دومین قسمت به نام کامپیوتر و آخرین قسمت دایرکتوری را نمایش می دهد که در آن Shell را اجرا کرده ایم یا working directory اشاره می کند. علامت ~ نمایانگر home directory کاربر است. به مثال های زیر دقت کنید :

root@itpro-debian:/#  کاربر مدیر سیستم دستورات را اجرا می کند
unity@itpro-debian:~$کاربر عادی سیستم دستورات را اجرا می کند   


در مثال بالا همانطور که مشاهده می کنید نام کاربری unity است ، نام کامپیوتر itpro-debian است و در دو حالت کاربر عادی و کاربر مدیر دستورات می تواند اجرا شود ، دقت کنید که کاربر unity در home directory دستورات خود را اجرا خواهد کرد. Bourne Again Shell برای بهینه سازی کردن و بهبود کارایی های sh shell معرفی شد اما شامل قابلیت های زیادی از جمله بیشتر قابلیت های Korn Shell و C Shell نیز می شود. از BASH به عنوان Shell استانداردی که امروزه در استانداردهای IEEE POSIX استفاده می شود می توان یاد کرد ، دستوراتی که در sh shell نوشته شده اند و یا Shell Script هایی که در sh نوشته شده اند همگی قابلیت اجرا شدن بر روی BASH را دارند.

نکته جالب در خصوص Bourne Again SHell این است که معمولا حرف H در Shell را با حرف بزرگ می نویسند که به معنای Hell یا جهنم است و این به دلیل برخی از افراد است که استفاده کردن از این Shell را کمی سخت احساس می کنند و همین خاطر به آن Shell جهنمی می گویند. امروزه BASH به عنوان Shell پیشفرض لینوکس در اکثر توزیع های آن مورد استفاده قرار می گیرد و اکثر کارهایی که در انجمن ITPRO با لینوکس انجام می دهیم در این Shell انجام می شود. ITPRO باشید


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات