در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها

سلام و وقت بخیر. در این دوره میخوایم اصول مدیریت سیستم های لینوکسی با استفاده از ترمینال لینوکس رو توصیح بدیم. مطالبی که ارائه خواهد شد پایه ای ترین مباحث لینوکس خواهند بود و مناسب کسانی که تازه لینوکس رو شروع کردن. سرفصل ها بیشتر جزء lpic1 خواهد بود ولی اگه لازم باشه از lpic2 یا جاهای دیگه هم میگم. کمی پیش زمینه یا مطالعه قبلی داشته باشید بهتره چون مطالب رو از صفر صفر نمیگم. امیدوارم مطالب مفید باشه. بسیار خوب. دستگاه لینوکسی خود را روشن کنید و ترمینال آنرا باز کنید.

SHELL چیست ؟؟

SHELL واسط میان ما و سیستم عامل است. SHELL دستورات را از کاربر گرفته و به زبان سطح پایین قابل فهم برای سیستم عامل ترجمه میکند. SHELL ها میتوانند بصورت رابط خط دستور CLI و یا بصورت رابط گرافیکی GUI باشند. مثلا در ویندوز Command Prompt یا CMD یک SHELL است. در بسیاری از توزیع های لینوکس SHELL پیش فرض BASH است. BASH یک رابط خط دستور است. انواع دیگری از SHELL هم وجود دارد به نام های ksh و csh و bsh و ... که کمتر و در موارد خاص استفاده میشوند و ما بیشتر با همان Bash کار میکنیم.

آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها

حال ترمینال سیستم خود را باز کنید. برای اینکه بفهمید از کدام SHELL استفاده میکنید دستور زیر را وارد کنید.

[root@CentOS6 ~]# echo $0
bash
[root@CentOS6 ~]# 

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

[root@CentOS6 ~]# echo $SHELL
/bin/bash
[root@CentOS6 ~]# 

تعریف متغیر

تعریف متغیر ها در Bash بسیار ساده است. ابتدا نام متغیر و سپس مساوی و مقدار آن. (بدون space). متغیر ها حساس به حروف کوچک و بزرگ هستند، ینی متغیر color با Color فرق دارد. برای چاپ کردن محتوای یک متغیر از کلمه کلیدی echo و علامت $ قبل نام متغیر استفاده میکنیم. برای جدا کردن دستورات از ; استفاده کنید.

[root@CentOS6 ~]# color='blue'
[root@CentOS6 ~]# echo $color
blue
[root@CentOS6 ~]# Color='red'
[root@CentOS6 ~]# echo $Color
red
[root@CentOS6 ~]# echo $Color ; echo $color
red
blue
[root@CentOS6 ~]# 
[root@CentOS6 ~]# 

از دستور echo برای چاپ انواع خروجی در صفحه استفاده میشود. برای چاپ مقدار محتوای یک متغیر در جمله از ساختار زیر استفاده کنید. به تفاوت دستور ها دقت کنید.

[root@CentOS6 ~]# echo "my Tshirt is $color"
my Tshirt is blue
[root@CentOS6 ~]# echo 'my Tshirt is $color'
my Tshirt is $color
[root@CentOS6 ~]# echo my Tshirt is $color
my Tshirt is blue
[root@CentOS6 ~]# 

برای دیدن نام کاربری که با آن وارد شدیم و مسیر home directory آن کاربر میتوانید متغیری که این مقادیر در آنها دخیره شده را چاپ کنید.

[root@CentOS6 ~]# echo $USER
root
[root@CentOS6 ~]# echo $HOME
/root
[root@CentOS6 ~]#

حال یک Shell دیگر با دستور bash باز کنید. دوباره سعی کنید که متغیر color را چاپ کنید. میبینید که همچین متغیری وجود ندارد. وقتی یک متغیر تعریف میکنیم، فقط در همان شلی که هستیم وجود دارد. برای اینکه متغیر سراسری شود، از دستور export استفاده میکنیم. هر shell یا بهتر بگم هر پروسه یک شماره شناسایی یکتا به نام pid در سیستم دارد با دستور $$ echo میتوان این شماره شناسایی یکتای شلی که در آن هستیم را ببینیم. به کد های زیر دقت کنید.

[root@CentOS6 ~]# color=red // یک متغیر تغریف کردم
[root@CentOS6 ~]# echo $$ // چاپ شماره شناسایی شلی که توش هستم
11080 
[root@CentOS6 ~]# bash  // با این دستور یک شل جدید زیر مجموعه این شل درست کردم
[root@CentOS6 ~]# echo $$ حالا شماره این شل جدید رو میخوام
11092
[root@CentOS6 ~]# echo $color // ببینم متغیر اینجا هم هست یا نه 

[root@CentOS6 ~]# exit // خروج از شل زیر مجموعه
exit
[root@CentOS6 ~]# echo $$ // مطمئن بشم تو شل قبلی هستم
11080
[root@CentOS6 ~]# export color // متعیر رو سراسری میکنم
[root@CentOS6 ~]# bash // دوباره یک شل زیرمجموعه میسازم
[root@CentOS6 ~]# echo $$ // میبینم که شماره شناساییش جدیده پس درست ایجاد شده
11101
[root@CentOS6 ~]# echo $color // دوباره ببینم متغیر هست یا نه
red
[root@CentOS6 ~]# 

دستور bash اصطلاحا یک subshell میسازد. وجود این subshell وابسته به وجود پدر خود است. اگر پدر از بین رود تمام subshell ها نابود میشوند. با دستور export یک متغیر را در شل پدر در شل های فرزندش کپی کردیم. با دستور ps میتوان دید چه پروسه هایی در حال اجراست. به خوبی مشخص میشود که چند subshell در حال اجرا هستند.

[root@CentOS6 ~]# bash
[root@CentOS6 ~]# bash
[root@CentOS6 ~]# bash
[root@CentOS6 ~]# ps
  PID TTY          TIME CMD
11338 pts/0    00:00:00 bash
11348 pts/0    00:00:00 bash
11357 pts/0    00:00:00 bash
11368 pts/0    00:00:00 bash
11377 pts/0    00:00:00 ps
[root@CentOS6 ~]# 

با دستور set میتوان تمام متغیر های محلی و سراسری را نشان داد و با دستور env میتوان متغیر های export شده را دید.

خوب برای یک جلسه کافیه. امیدوارم زیاد پیچیدش نکرده باشم. منتظر انتقادات و پیشنهادات اساتید itpro هستیم !!!

پایان قسمت اول از بخش اول

نویسنده : سید محمد باقر موسوی

منبع : جزیره لینوکس و سیستم های متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#نوشتن_shell_script_در_لینوکس #آموزش_لینوکس_فارسی #آموزش_linux_مقدماتی #آموزش_shell_scripting #آموزش_shell_scripting_در_لینوکس #دوره_آموزشی_shell_scripting_در_لینوکس #نوشتن_یک_shell_script_ساده #bash_shell_چیست
عنوان
1 آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها رایگان
2 آموزش لینوکس : مدیریت سیستم قسمت 2 : Shell سفارشی : تنظیمات Shell رایگان
3 آموزش لینوکس : مدیریت سیستم : قسمت 3 : Shell سفارشی : Aliases رایگان
4 آموزش لینوکس : مدیریت سیستم : قسمت 4: Shell سفارشی: Login Scripts رایگان
5 آموزش لینوکس : مدیریت سیستم : قسمت 5 : ایجاد اسکریپت رایگان
6 آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input رایگان
7 آموزش لینوکس : مدیریت سیستم : قسمت 6 : IF Statement رایگان
8 آموزش لینوکس : مدیریت سیستم : قسمت 7 : Case Statement رایگان
9 آموزش لینوکس : مدیریت سیستم : قسمت 8 : Loops رایگان
10 آموزش لینوکس : مدیریت سیستم : قسمت 9 : Managing Users رایگان
11 آموزش لینوکس : مدیریت سیستم : قسمت 10 : Managing Groups رایگان
12 آموزش لینوکس : مدیریت سیستم : قسمت 11 : ارتباط با اکتیودایرکتوری رایگان
13 آموزش لینوکس : مدیریت سیستم : قسمت 12 : OpenLDAP رایگان
14 آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch رایگان
15 آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables رایگان
زمان و قیمت کل 0″ 0
2 نظر
سید محمد باقر موسوی
[root@centos6 test]# testvar=red
[root@centos6 test]# set | grep testvar
testvar=red
[root@centos6 test]# 
[root@centos6 test]# env | grep testvar
[root@centos6 test]# 
[root@centos6 test]# export testvar
[root@centos6 test]# 
[root@centos6 test]# env | grep testvar
testvar=red
[root@centos6 test]# 
[root@centos6 test]# 

بطور کلی 2 دسته متغیر داریم. local shell var و environment var .... با دستور set هر دوی این ها را میتوان دید ولی دستور env فقط متغیر های environment یا متغیر هایی که export شده اند توسط shell را میتواند دید.

حامد  نبیلی

عالی بود ممنون

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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