آموزش زبان برنامه نویسی Bash ( مبتدی تا حرفه ای )

شروع موضوع توسط ruin3r ‏May 13, 2015 در انجمن بش اسکریپت

  1. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    با سلام خدمت تمامی کاربران محترم ایران وب ادمین.
    در این تاپیک آموزش برنامه نویسی بش رو از ابتدا تا حرفه ای آموزش خواهیم داد.
    لطفا در این تاپیک سوالات خود را نپرسید و اجازه دهید تاپیک روند پیش روی خود را در بر بگیرد.
    برای پرسیدن سوالات خود به تاپیک زیر مراجعه کنید:
    سرفصل های آموزشی شامل :

    images.png
     
    آخرین ویرایش: ‏Dec 26, 2015
    Zmahdi97 و kamran26 از این پست تشکر کرده اند.
  2. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    معرفی زبان برنامه نویسی Bash

    در این پست به معرفی زبان برنامه نویسی bash می پردازیم و پس از آن آموزش های مربوطهرا شروع خواهیم نمود.


    بَش یک پوسته یونیکس آزاد است که توسط برایان فاکس برای پروژه گنو نوشته شده‌است. نام بَش سرنام Bourne-again shell در انگلیسی است. بش یک پوسته پازیکس با تعداد قابل توجهی افزونه است. در ابتدا این پوسته برای سیستم‌عامل گنو طراحی شده‌بود. اما بش در اکثر سیستم‌عامل‌های خانواده شبه-یونیکس قابل اجراست. بَش پوسته پیش‌فرض در اکثر سیستم‌عامل‌هایی که از هسته لینوکس استفاده می‌کند، است.این زبان که مستقیما با خط فرمان گنو/لینوکس درگیر می شود، اجازه می دهد تا برنامه های منعطف، کارآمد و در عین حال ساده و سبک ایجاد کرد.
    در بش ما با توجه به دستوراتی که می نویسیم به سیستم عامل ارسال خواهیم کرد و پس از آن سیستم عامل دستورات ما را اجرا خواهد کرد.
    در قالب مثال بخواهیم بش را معرفی کنیم باید بگیم بش مانند گارسن رستورانی است که ما دستورات خود را به او داده و او این دستورات را برای ما اجرا خواهد کرد.
    با توجه به تجربه می توان گفت کسانی که با بش برنامه می نویسند آینده ای موفق در ضمینه لینوکس خواهند داشت.

    برای یادگیری بش دوستان سه چیز رو باید درنظر بگیرند.
    1)آشنایی با سیستم عامل لینوکس
    2)آشنایی با خط فرمان لینوکس
    3)تا حدودی زبان برنامه نویسی پرل (در حد آشنایی)

    در ادامه این پست به آموزش بش از ابتدا خواهیم پرداخت.
     
    Zmahdi97 و kamran26 از این پست تشکر کرده اند.
  3. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    با سلام.
    امروز دوتا پست ابتدایی برای برنامه نویسی به زبان بش رو براتون ارائه می کنم.
    دوستان عزیز قبل از شروع کامل آموزش هامون باید بگم خدمتتون که من در طی این آموزش ها از سیستم عامل لینوکس برپایه ردهت و یا redhat base استفاده میکنم که به شما پیشنهاد میکنم که از سیستم عامل سنت او اس که برپایه رد هت می باشد استفاده کنید.
    همچنین وبسایتی که در زیر به شما معرفی میکنم به صورت مجازی تا 99% محیط زبان های برنامه نویسی رو در خود دارد که می توانید با انتخاب centos در محیطی مجازی و یا virtual برنامه های خود را بنویسید و در همانجا خروجی بگیرید و مشاهده کنید.

    http://www.tutorialspoint.com/unix_terminal_online.php

    در ادامه اولین برنامه خود را شروع میکنیم.
     
    Zmahdi97 و kamran26 از این پست تشکر کرده اند.
  4. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    سلام.
    در لینوکس برای برنامه نویسی چندین پوسته وجود دارد مانند zshell,kshell و ... که آموزش ما میتنی بر bash می باشد.
    قبل تر توضیح دادیم که bash یک پوسته برای ارتباط کاربر با سیستم عامل می باشد که ما دستورات خود را در پوسته bash می نویسیم و سپس با اجرای آن دستورات به سمت سرور رفته و خروجی آن از سوی سیستم عامل برایمان نمایش داده می شود.
    برای برنامه نویسی در محیط لینوکس نیازمند استفاده از یک ویرایشگر هستیم.
    ویرایشگرهای معروف لینوکس : nano,vi,vim هستند که راحت ترین آنها nano می باشد ولی vi و vim برای برنامه نویسی مناسب ترین و کارآمد ترین می باشند.
    در ادامه همین بخش کتابهای آموزش ویرایشگر vi و vim رو در اختیارتان قرار خواهم داد.
    بریم سر اصل مطلب.

    برای اجرای یک برنامه به زبان bash باید از یک ویرایشگر با دستور زیر و در ادامه آن از نام یک فایل که با پسوند .sh به اتمام می رسد استفاده کنیم.
    کد:
    برای مشاهده محتوا شما بایستی ثبت نام کنید.
    حالا محیط ویرایش ما باز می شود.
    قبل از هر چیز یک نکته مهم رو یاد آور می شم.
    در زبان بش و زبان های دیگر علامت # به عنوان کامنت خوانده می شود.یعنی اگر در ابتدای یک دستور علامت # گزاشته شود پس از اجرای برنامه اون خط تفسیر نمی شود ولی در لینوکس یک استثنا وجود دارد.اون هم خط اول اسکریپتی است که می خواهیم بنویسیم که با قرار دادن علامت # نیز سیستم عامل اون خط رو تفسیر می کند.حالا اون دستور چیست:
    کد:
    برای مشاهده محتوا شما بایستی ثبت نام کنید.
    در واقع ما با این دستور مسیر مفسرمون رو به سیستم عامل معرفی می کنیم و اعلام می کنیم که مفسر ما در این مسیر قرار دارد و با آن برنامه را تفسیر کن.
    در دیگر جاهای کد علامت # تفسیر نمی شود.

    همچنین در نظر داشته باشید که در هر اسکریپی که ما می نویسیم این خط باید نوشته شود در غیر این صورت سیستم عامل قادر به تفسیر اسکریپت ما نمی باشد و خطا می دهد.

    در پست بعدی برنامه hello word رو با هم می نویسیم.
     
    Zmahdi97، kamran26 و H_afkhami60 از این ارسال تشکر کرده اند.
  5. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    سلام.
    در این پست به شما آموزش نوشتن یک اسکریپت کوچک رو خواهم داد که توسط اون شما متن hello word رو با اجرای اسکریپت در کنسول پرینت می کنید
    کد اسکریپت به صورت زیر است.با توجه به آموزش های بالا اسکریپت خود را ایجاد.سپس دسترسی های لازمه را بدهید و بعد اجرا کنید:
    کد:
    برای مشاهده محتوا شما بایستی ثبت نام کنید.

    خروجی باید به صورت زیر باشد:

    کد:
    برای مشاهده محتوا شما بایستی ثبت نام کنید.
    این اولین اسکریپت ما در زبان برنامه نویسی بش بود.
    در آموزش بعدی به سراغ معرفی متغیر ها خاهیم رفت و برای این مورد مثال هایی را اجرا خواهیم نمود.
     
    Zmahdi97 و kamran26 از این پست تشکر کرده اند.
  6. ruin3r

    ruin3r مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    انواع متغیر ها:
    به طور کل در زبان برنامه نویسی بش متغیر ها به دسته تقسیم بنده می شوند:
    1. متغیر های local یا محلی که اگر بخواهیم متغیرس را در یک function استفاده کنیم می توان آن را local تعریف کرد.
    2. متغیر های global یه به اختصار جهانی که این نوع متغیر ها را می تواندر کل برنامه فراخوانی نمود.
    در نظر داشته باشید که اگر متغیری local تعریف شود به فحض اینکه یک function اجرا شود شل به صورت اختصاصی فضایی را برای آن اختصاص می دهد و پس از تمام شدن آن,فضا را آزاد می کند.
    به این نکته توجه داشته باشد که اگر متغیری قرار باشد به صورت local اجرا شود باشد قبل از نام متغیر عبارت local را درج کنید.

    برای مثال اسکریپت زیر را بررسی کنید(کد هارو در کنسول تایپ کنید):

    کد:
    برای مشاهده محتوا شما بایستی ثبت نام کنید.
    با اجرای این کد ها متوجه می شوید که متغیر sum خروجی خالی رو چاپ می کند چون به صورت local تعریف شده است.
    متغیر محلی از حافضه (رم) است که مقداری را در خود ذخیره می کند.
    در نظر داشته باشید که سیستم عامل لینوکس به بزرگی و کوچکی حروف حساس است.به عنوان مثال دو نام sum و SUM متفاوت است.

    ....
     
    Zmahdi97، kamran26 و kevin_anderson از این ارسال تشکر کرده اند.

به اشتراک بگذارید

س