لینوکسی بشیم: شناخت بیشتر bash

در قسمت قبلی با شل به طور کلی آشنا شدیم. حالا میخوایم بش رو بیشتر بشناسیم. این مطلب به درد کسایی که میخوان وارد دنیای لینوکس ادمینی بشن میخوره. هم‌چنین برنامه‌نویس‌هایی که نیاز دارن در محیط لینوکس کار کنن هم اطلاعات مفیدی کسب خواهند کرد. حتی اگه یه کاربر ساده لینوکس هم هستید میتونید ازش استفاده کنید.

در این مطلب مثل مطلب قبلی فرض بر اینه که آشنایی اولیه‌ای با لینوکس داشته باشید. هم‌چنین خوبه که قسمت قبلی رو خونده باشید.

حالا راجع به چی دقیقا میخوایم الان صحبت کنیم؟ میخوایم دستورها و ویژگی‌های خود بش رو ببینیم. تو قسمت قبل گفتیم برخی دستورها مختص شل نیستن و دستورهایی هم داریم که مربوط به یک شل خاص هستن؛ مثلا بش دستوری داره به نام type که بهمون میگه فلان دستور آیا مربوط به بش هست یا خارجیه:

می‌بینید جلوی type اسم دستور رو نوشتم. میگه که cat یه دستور خارجیه که فایل باینری اجرایی اون توی اون مسیره. میتونید خود type رو هم تست کنید و ببینید چی میگه. یعنی بنویسید type type. دستوری که خیلی ممکنه استفاده کنید تو بش echo هست (حالا که داغیم یه type بگیرید ازش). این دستور هر چی جلوش بنویسید رو توی stdout مینویسه (منظور از stdout خروجی استاندارد هست) و توی خط فرمان می‌بینیدش:

شاید بی‌فایده به نظر بیاد اما بعدا می‌‌بینیم چقدر به درد بخوره.

میتونید توی بش یه بش دیگه باز کنید با دستور bash (بش اندر بش). تغییر خاصی رو مشاهده نخواهید کرد ولی واقعا یه پروسه جدید تو سیستم اجرا میشه. کار خوبی که میشه کرد اینه که تو یه فایل یه تعداد دستور بنویسید بعد به بش بگید اجراشون کنه:

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

شما میتونید history هم بگیرید؛ یعنی ببینید قبلا چه دستورایی زدید:

به شکل پیش فرض هزار دستور قبلی رو براتون مینویسه. با ترکیب این دستور و دستور grep میتونید یه دستور که قبلا زدید و بخشی از اون رو فقط یادتونه پیدا کنید. grep رو بعدا بهتر می‌بینیم. همون موقع متوجه کاربردش میشیم. با زدن دکمه بالا و پایین هم میتونید به ترتیب دستورهایی که زدید رو توی خط فرمان ببینید و استفاده کنید.

با گذاشتن نقطه ویرگول یا ; میشه هر چند تا دستور رو پشت سر هم اجرا کرد:

یکی از کارای خوبی که میشه تو بش کرد تعریف متغیره. مقدار متغیر رو با echo می‌بینیم:

به اون $ توجه کنید؛ چون اگه نذاریدش فقط همون اسم رو می‌نویسه. تو عکس این اشتباه رو عمدا انجام دادم. با دستور unset هم کلا یه متغیر از بین میره:

می‌بینید اگه یه متغیر تعریف نشده باشه echo یه خط خالی چاپ میکنه (نکته کنکوری).

نکته مهم در مورد متغیرهای بش اینه که رشته در نظر گرفته میشن و کار باهاشون دقت خاصی میخواد. در قسمت بعد قصد دارم راجع به متغیرها در بش بیشتر صحبت کنم و یه کم باهاشون ور بریم.

امیدوارم این مطلب براتون مفید بوده باشه. اگر نظر یا سوالی دارید همین پایین مطرح کنید.

قسمت قبلی

قسمت بعدی