آموزش لینوکس

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

آموزش لینوکس

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

بررسی خط فرمان سیستم عامل لینوکس (Prompt)

پنجشنبه, ۲۳ اسفند ۱۳۹۷، ۰۴:۲۰ ب.ظ

در این مطلب به بررسی خط فرمان در سیستم عامل لینوکس می پردازیم.

Prompt عبارتی است که در زمان انتظار سیستم، برای دریافت دستور از کاربر به نمایش در می آید.

تغییر در شکل خط فرمان با استفاده از متغیرهای محیطی PS1,PS2,PS3,PS4 انجام می گیرد. اکنون به بررسی این چهار متغیر می پردازیم.
& متغیر PS1 : متغیر اصلی خط فرمان بوده و در زمان دسترسی کاربر به Shell، نمایش داده می شود. متغیر PS1 در حالت پیش‌فرض، بصورت زیر می باشد.

[masih@linux etc]$

  •   masih = نام کاربر
  •   @ = علامتی برای جدا نمودن نام کاربر و نام ماشین 
  •   linux = نام ماشین 
  •   etc =دایرکتوری جاری
  •   $ = $ علامت 
نکته : برای کاربر root این علامت به # تغییر می کند.
& متغیر PS2 : اگر دستوری بصورت ناقص اجرا شود این متغیر به نمایش در می آید. مقدار متغیر PS2 در حالت پیش‌فرض، علامت < می باشد.

در مثال زیر با اجرای ناقص دستور echo، خط فرمان متغیر PS2 به نمایش در می آید.

$ echo “Learn

> 

>Linux

>

Learn

linux

$

دستور echo منتظر دریافت علامت می‌باشد. در این حالت هر بار زدن کلید Enter سبب نمایش خط فرمان متغیر PS2 می شود.

& متغیر PS3 : این متغیر زمانی بعنوان خط فرمان به نمایش در می‌آید که اجرای یک دستور و یا Script، نیازمند دریافت ورودی از کاربر باشد. مقدار متغیر PS3 در حالت پیش‌فرض،?# می باشد.

در مثال زیر نحوه فراخوانده شدن متغیر PS3 را می بینیم.


$ cat mycity.sh

select city in Tehran Abadan Noor Exit

do

case $city in

Tehran) echo "Tehran";;

Abadan) echo "Abadan";;

Noor) echo "Noor";;

Exit) exit;;

esac

done


$ ./mycity.sh

1) Tehran

2) Abadan

3) Noor

4) Exit

#? 2

Abadan

#? 4

$



& متغیر PS4 : برای Trace دستورات استفاده می‌شود. دستورات، قبل از اجرا توسط Shell به نمایش در می آیند. مقدار متغیر PS4 در حالت پیش‌فرض، علامت + می باشد.

در مثال زیر نحوه فراخوانده شدن متغیر PS4 نشان داده شده است.

$ set -x

$ cd /etc

+ cd /etc

$

هر کاربر می‌تواند متغیرهای محیطی PS1,PS2,PS3,PS4 را مطابق با سلیقه ی خود مقداردهی نماید.

تنظیم خط فرمان اصلی در Shell هایbash ،ksh,sh با تغییر متغیر PS1 و برای Shell هایcsh ،tcsh,zsh با تغییر متغیر prompt، انجام می گیرد.

& با دستور زیر می‌توان خط فرمان را به عبارت دلخواه تغییر داد.

export PS1="(LearnLinux) -> "

(LearnLinux)->

نکته :  با اجرای دستور بالا شکل خط فرمان تغییر خواهد کرد، اما باید توجه داشت که این تغییر دائمی نبوده و فقط در این Session قابل مشاهده است. برای پایداری این تغییر باید این دستور در یکی از فایل‌های Bash Login نظیر  bashrc و  bash_profile قرار داد:

vi ~/.bashrc

export PS1="(LearnLinux) -> "

با یکی از روش های زیر این تغییر اعمال می شود.

1.   ایجاد Bash جدید ( بستن Session فعلی و ایجاد Session جدید )

2.   اجرای یکی از دستورات زیر

source ~/.bashrc        Or       . ~/.bashrc          

(LearnLinux) ->

& برای تنظیم Prompt، می‌توان از کاراکترهای ویژه ی در جدول زیر نیز استفاده نمود.

 

شکل خط فرمان

نحوه استفاده

عملکرد

Value

masih

PS1=" \u"

نمایش نام کاربر

u\

linux

PS1="\h"

نمایش نام ماشین

h\

etc

PS1="\W"

نمایش نام دایرکتوری جاری

W\

etc/sysconfig/

PS1="\w"

نمایش مسیر

w\

Wed Mar 06

PS1="\d"

نمایش تاریخ با فرمت (تاریخ روز  نام ماه  نام روز)

d\

19:48:36

PS1="\t"

نمایش ساعت با فرمت 24 ساعته (ثانیه:دقیقه:ساعت )

t\

07:48:36

PS1="\T"

نمایش ساعت با فرمت 12 ساعته (ثانیه:دقیقه:ساعت )

T\

19:48

PS1="\A"

نمایش ساعت با فرمت 24 ساعته (دقیقه:ساعت )

A\

07:48  PM

PS1="\@"

نمایش ساعت با فرمت 12 ساعته و نمایش AM/PM

@\

$  or  #

PS1="\$"

برای کاربران عادی کاراکتر $ و برای کاربر root کاراکتر # می باشد

$\

0

PS1="\j"

نمایش تعداد Job های در حای اجرا

j\

317

PS1="\!"

نمایش شماره Job بعدی در History

!\

-

PS1="\n"

رفتن به سطر بعد

n\

& برای دیدن مقدار فعلی متغیر PS1 از دستور زیر استفاده می کنیم.

echo $PS1

[\u@\h \W]\$

& تغییر خط فرمان با استفاده از کاراکترهای ویژه :

تعریف متغیر PS1 بصورت زیر سبب نمایش نام کاربر به همراه کاراکتر < در خط فرمان می شود.

vi ~/.bashrc

export PS1=" \u > "

masih >

تعریف متغیر PS1 بصورت زیر سبب نمایش عبارت مورد نظر و آدرس مکان فعلی می شود.

PS1=" Address = \w > "

Address = /home/masih/Desktop >

نوع دیگری از تنظیم خط فرمان با استفاده از کاراکترهای ویژه را در زیر می بینیم.

PS1='\d \t Job=\j \W \u \n > '

Thu Mar 07 13:47:13 Job=0 tmp masih 

& تغییر خط فرمان با استفاده از سایر متغیرهای سیستمی :

نمایش مدت زمان در دسترس بودن یک Shell برحسب ثانیه برای یک کاربر

PS1=’\u Session Is Active $SECONDS Seconds Ago > '

masih Session Is Active 1023 Seconds Ago >

نکته : با هر بار نمایش خط فرمان، زمان Update خواهد شد.

 & تغییر خط فرمان با استفاده از خروجی دستورات :

نمایش تعداد محتویات دایرکتوری فعلی در خط فرمان

PS1='Number Of Contents \w = $( ls | wc -l ) > '

Number Of Contents /etc = 267 >

نمایش ساختار ماشین در خط فرمان

PS1='$(arch) > '

x86_64 >

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

PS1='`uptime`\n \u $ '

15:04:02 up 1:32, 2 users, load average: 0.35, 0.40, 0.37

masih $

& افزودن رنگ و Style  به خط فرمان :

خط فرمان در حالت پیش‌فرض با رنگ سفید و  بدون حالت می باشد. کاربر می‌تواند از رنگها در تنظیم خط فرمان استفاده  نماید. بطور مثال برای کاربران مبتدی، تنظیم یک رنگ خاص در زمان دسترسی به کاربر root توصیه می شود.

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

عبارت ابتدایی = \[\e[شماره رنگ متن;شماره حالت;شماره رنگ پس زمینهm\]

عبارت انتهایی = \[\e[0m\]


اعداد زیر برای تنظیم رنگ متن، در خط فرمان استفاده می شود.

 

رنگ متن

رنگ پس زمینه

حالت متن

30 = سیاه

40 = سیاه

0 = Normal

31 = قرمز

41 = قرمز

1 = Bold

32 = سبز

42 = سبز

2 = Italic

33 = زرد

43 = زرد

3 = Dark

34 = آبی

44 = آبی

4 = Underline

35 = بنفش

45 = بنفش

 

36 = فیروزه ایی

46 = فیروزه ایی

 

37 = سفید

47 = سفید

 

 

 

 

 









بصورت زیر می توان رنگ Prompt را به قرمز تبدیل کرد.

PS1='\[\e[31m\]\t > \[\e[0m\]'

14:05:33 >

نکته : در صورت عدم استفاده از عبارت انتهایی در تعریف متغیر، سبب تغییر رنگ خط فرمان، دستورات ورودی بهمراه خروجی شان می شود.

PS1='\[\e[31m\]\t > '

مثال دیگری از تغییر رنگ خط فرمان

PS1='\[\e[44;1;37m\]\u \[\e[0m\]\[\e[4;31m\] \t\[\e[0m\] $ '

masih 14:56:21 $

با دستور بالا نام کاربر با رنگ سفید در پس زمینه آبی بصورت Bold و زمان سیستم به رنگ قرمز و بصورت Underline و در انتها علامت $ قرار می گیرد.


& تغییر خط فرمان با استفاده از حالت شرطی (if  else) :

با تعیین مقدار زیر برای متغیر PS1، شکل خط فرمان وابسته به وضعیت اجرای دستور کاربر می شود. بدین معنی که با اجرای صحیح دستور، در ابتدای Prompt شکلک خندان به رنگ سبز به نمایش در می‌یابد و در صورت وجود خطا نوع شکلک تغییر می کند.

PS1='$(if [[ $? == 0 ]]; then echo "\[\e[32m\]:)"; else echo "\[\e[31m\]:("; fi)\[\e[0m\] \u \w $ '

:) masih ~ $ cd /etc

:) masih /etc $

:) masih /etc $ llll

-bash: llll: command not found

:( masih /etc $

در زیر نوع دیگری از تعریف متغیر PS1 را با حالت شرطی می بینیم.

PS1="\`if [ \$? = 0 ]; then echo \[\e[32m\]✔\[\e[0m\]; else echo \[\e[31m\]✘\[\e[0m\]; fi\` \u \w $ "

isastar ~ $ cd /etc

masih /etc $

masih /etc $ llll

-bash: llll: command not found

masih /etc $


& چند مثال از تغییر خط فرمان سیستم :

* نمایش میزان حافظه آزاد برحسب مگابایت

vi ~/.bashrc

free_mem()

{

   awk '/^Mem/ {print $4}' <(free -m)

}

export PS1='Free Mem : $(free_mem) MB > '

Free Mem : 3062 MB >

 

or

 

vi ~/.bashrc

pp="\$(awk '/^Mem/ {print \$4}' <(free -m))"

export PS1='Free Mem : '$pp' MB > '

Free Mem : 3062 >

* نمایش میزان روشن بودن سیستم

vi ~/.bashrc

export PS1='`uptime -p | cut -f 1-2 -d ","` $ '

up 1 day, 7 hours $

 

* نمایش تعداد کاربران فعال سیستم

vi ~/.bashrc

export PS1='`uptime | cut -f 3 -d ","` $ '

 2 users $

* نمایش پارامتر SID در سیستم‌هایی که بانک Oracle بر روی آن‌ها قرار دارد. (برای کاربر Oracle)

vi ~/.bashrc

export PS1='\u@\h \W SID : $ORACLE_SID $ '

oracle@Linux  ~ SID : mokhader $

 

* نمایش تعداد فایل و فولدر مکان فعلی و حجم کل آنها

vi ~/.bashrc

export PS1="\[\e[32;1m\]\W \$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\]) > \[\e[0m\]"

etc 267 files, 2.0Mb) >

* نمایش آدرس IP سیستم

vi ~/.bashrc

export PS1='$(hostname -I) > '

10.47.52.25 >



۹۷/۱۲/۲۳
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی