گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

پوسته پرکاربرد لینوکس

پوسته فرمان چیست؟

 

همانطور که رابط‌های گرافیکی کاربر امکان انجام امور روزمره را بر روی سیستم فراهم می‌کنند، پوسته فرمان نیز نوعی رابط کاربری ولی به صورت متنی است. تمامی اموری را که به صورت گرافیکی و با استفاده از رابط‌های گرافیکی کاربر قابل انجام هستند را می‌توانید توسط پوسته فرمان نیز انجام دهید.

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

مفسر فرمانی که به صورت پیش گزیده در گنو/لینوکس استفاده می شود،Bash نام دارد.نام آن گرفته از Bourne Again Shell  است.

 استفاده از پوسته فرمان چه مزایایی دارد؟

 

استفاده از پوسته فرمان دارای مزایای بسیاری است که برخی از آنها را در زیر بر می‌شماریم:

  • سرعت در اجرای کارها مخصوصا در کارهای تکراری.
  • قابلیت انعطاف بسیار زیاد.
  • امکان ترکیب چندین دستور برای انجام همزمان چند کار.
  • توانایی در خودکار سازی وظایف تکراری.
  • راحتی در انجام برخی از کارها.

در زیر به دو نمونه پرسش که با استفاده از دستورات Bash پاسخ داده می شود می پردازیم:


چطور می توانیم جدیدترین و قدیمی ترین فایل در یک دایرکتوری را پیدا کنیم؟


راه حل اغوا کننده،استفاده از ls  برای برونداد نام فایل های موجود، و اخذ اولین نتیجه می باشد.به طور کلی رویکرد ls نمی تواند مناسب باشد و به خاطر احتمال برخورد با کاراکترهای اختیاری(شامل سطر جدید) موجود در نام فایل ها،هرگز نباید در اسکریپت ها به کار برود. بنابراین به شیوه های دیگری برای سنجش فوق داده های (metadata) فایل، نیاز داریم.

Bash و همه نگارش های متنوع ksh می توانند زمانهای ویرایش(mtime) را با استفاده از عملگرهای -nt  و -ot در عبارت شرطی دستور مرکب،مقایسه کنند:  

# bash/ksh

unset –v latest

for file in "$dir"/*;do    

[[ $file –nt $latest ]] && latest =$file

done

یا برای یافتن قدیمی ترین:

# bash/ksh

unset –v oldest

for file in "$dir"/*;do    

[[ $file –nt $ oldest ]] && oldest =$file

done

 

به خاطر داشته باشید که mtime در مورد دایرکتوری ها،مربوط به آن شاخه ای است، که آخرین افزودن،حذف یا تغییر نام فایل در آن انجام شده است.

چطور می توانیم سطر شماره n از یک فایل را چاپ کنیم؟

یک روش این است که جهت چاپ سطر $n از فرمان"p" استفاده کنیم و به دنبال آن "q" را برای خروج از اسکریپت استفاده کنیم :


Sed –n "$n{p;q; }" "$file"


راهکار دیگر، به کاربردن AWKاست:

 

awk" NR= =$n{print;exit}"file

 

در Bash نگارش 4،با استفاده از دستور داخلی mapfile یک راهکار فشرده مختص-bash می تواند حاصل شود. با همراه کردن شناسه –n این فرمان،بیش از یک سطر می تواند در آرایهMAPFILE خوانده شود:


Mapfile –ts $((n-1)) –n 1<" $file"

echo "${MAPFILE[0]}"

 



 احدی

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد