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

ruin3r

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
10/5/15
ارسال ها
146
امتیاز
6
با سلام خدمت تمامی کاربران محترم ایران وب ادمین.
در این تاپیک آموزش برنامه نویسی بش رو از ابتدا تا حرفه ای آموزش خواهیم داد.
لطفا در این تاپیک سوالات خود را نپرسید و اجازه دهید تاپیک روند پیش روی خود را در بر بگیرد.
برای پرسیدن سوالات خود به تاپیک زیر مراجعه کنید:
سرفصل های آموزشی شامل :

images.png
 
آخرین ویرایش:

ruin3r

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
10/5/15
ارسال ها
146
امتیاز
6
معرفی زبان برنامه نویسی Bash

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


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

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

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

ruin3r

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

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

در ادامه اولین برنامه خود را شروع میکنیم.
 

ruin3r

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

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

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

در پست بعدی برنامه hello word رو با هم می نویسیم.
 

ruin3r

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
10/5/15
ارسال ها
146
امتیاز
6
سلام.
در این پست به شما آموزش نوشتن یک اسکریپت کوچک رو خواهم داد که توسط اون شما متن hello word رو با اجرای اسکریپت در کنسول پرینت می کنید
کد اسکریپت به صورت زیر است.با توجه به آموزش های بالا اسکریپت خود را ایجاد.سپس دسترسی های لازمه را بدهید و بعد اجرا کنید:
کد:
#!/bin/bash
#script name : hello world
echo "hello world"

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

کد:
[root@srv ~]# ./test.sh
hello world
این اولین اسکریپت ما در زبان برنامه نویسی بش بود.
در آموزش بعدی به سراغ معرفی متغیر ها خاهیم رفت و برای این مورد مثال هایی را اجرا خواهیم نمود.
 

ruin3r

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

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

کد:
[root@srv ~]# add()
> {
> local sum=$(($1+$2))
> }
[root@srv ~]# add 1 3
[root@srv ~]# echo $sum

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

....
 

rominga

عضو تایید شده
کاربر انجمن
عضویت
19/6/17
ارسال ها
1
امتیاز
1
سن
44
مبتدی تا حرفه ای
همین بود
 
بالا