مقدمه
در درسهای گذشته با ماهیت دستورات و چگونگی دسترسی به مستندات آنها آشنا شدیم. یکی از زیباترین
ویژگیهای شل لینوکس این است که شما به استفاده از دستورات موجود محدود نیستید. شما میتوانید
ابزارهای خودتان را بسازید، دستورات طولانی را کوتاه کنید و وظایف تکراری را به یک کامند ساده تبدیل
نمایید. این کار نه تنها باعث صرفهجویی در وقت میشود، بلکه به شما حس تسلط بیشتری بر محیط
کاریتان میدهد.
در این درس، دو روش اصلی و بسیار پرکاربرد برای ساخت دستورات سفارشی را بررسی خواهیم کرد:
- نامهای مستعار (Aliases): برای ساخت میانبُرهای ساده و جایگزین برای دستورات موجود.
- اسکریپتهای شل (Shell Scripts): برای ساخت کامندهای پیچیدهتر که شامل چندین مرحله یا
منطق خاصی هستند.
با یادگیری این دو تکنیک، شما قادر خواهید بود تا خط فرمان را مطابق با نیازهای خود شخصیسازی کنید
و بهرهوری خود را به شکل چشمگیری افزایش دهید.
نگاهی عمیقتر به نامهای مستعار (Alias)
همانطور که در درس «ماهیت کامندهای لینوکسی» دیدیم، alias یک نام مستعار یا جایگزین برای یک دستور
دیگر است. این سادهترین راه برای ساخت یک کامند سفارشی است. برای مثال، به جای تایپ کردن ls
-alh برای دیدن لیست فایلها با جزئیات کامل، میتوانیم یک alias به نام ll
برای آن بسازیم.
$ alias ll='ls -alh'
دائمی کردن Aliasها
مشکلی که وجود دارد این است که aliasهایی که مستقیماً در ترمینال تعریف میکنیم، موقتی هستند و با
بستن پنجره ترمینال از بین میروند. برای اینکه aliasهای ما دائمی باشند، باید آنها را در فایلهای
پیکربندی شل ذخیره کنیم. برای شل bash که رایجترین شل در لینوکس است، این فایل معمولاً
~/.bashrc نام دارد. این فایل یک اسکریپت است که هر بار یک ترمینال جدید باز میکنید، به
صورت خودکار اجرا میشود.
مراحل دائمی کردن یک alias به صورت زیر است:
- فایل ~/.bashrc را با یک ویرایشگر متن باز کنید. ویرایشگر nano یک
گزینهی ساده و مناسب برای شروع است:
nano ~/.bashrc
- به انتهای فایل بروید و تعریف alias خود را در یک خط جدید اضافه کنید. برای مثال:
alias ll='ls -alh'
alias
update='sudo apt update && sudo apt upgrade'
- فایل را ذخیره کرده و از ویرایشگر خارج شوید (در nano با فشردن Ctrl+X،
سپس Y و در نهایت Enter).
- برای اعمال تغییرات در نشست فعلی ترمینال، دستور source را اجرا کنید:
source ~/.bashrc
پس از این، alias شما در تمام ترمینالهای جدیدی که باز میکنید در دسترس خواهد بود.
حذف کردن Aliasها
برای حذف یک alias از نشست فعلی، میتوانید از دستور unalias استفاده کنید.
$ unalias ll
برای حذف دائمی آن، کافی است خط مربوطه را از فایل ~/.bashrc پاک کنید.
ساخت کامند با اسکریپتهای شل
گاهی اوقات یک alias برای کار ما کافی نیست. ممکن است بخواهیم چندین دستور را پشت سر هم اجرا کنیم
یا منطق پیچیدهتری را پیادهسازی کنیم. در این موارد، به سراغ اسکریپتهای شل میرویم. یک اسکریپت
شل، چیزی نیست جز یک فایل متنی ساده که حاوی یک یا چند دستور لینوکس است.
اولین اسکریپت: کامند «بکاپبگیر»
بیایید یک کامند سفارشی به نام backup بسازیم که از یک دایرکتوری مشخص یک نسخهی پشتیبان
فشرده تهیه میکند.
- ساخت فایل اسکریپت: با ویرایشگر nano یک فایل به نام backup.sh
ایجاد کنید:
nano backup.sh
-
افزودن محتوا: محتوای زیر را در فایل کپی کنید.
#!/bin/bash
# A simple script to backup a directory
tar -czvf my_backup_$(date +%Y-%m-%d).tar.gz /home/me/Documents
خط اول که با #! شروع میشود، Shebang نام دارد و به سیستم میگوید که این
اسکریپت باید با مفسر /bin/bash اجرا شود. خط دوم یک کامنت است و خط سوم دستور اصلی
ماست که با استفاده از tar یک فایل فشرده با تاریخ روز از دایرکتوری
Documents میسازد.
- قابل اجرا کردن اسکریپت: به طور پیشفرض، فایلهای متنی جدید اجازهی اجرا ندارند. باید
با استفاده از دستور chmod این مجوز را به آن اضافه کنیم.
$ chmod +x backup.sh
- اجرای اسکریپت: حالا میتوانید اسکریپت را از همان دایرکتوری با دستور زیر اجرا کنید.
علامت ./ به شل میگوید که فایل اجرایی در همین دایرکتوری فعلی قرار دارد.
$ ./backup.sh
قرار دادن اسکریپت در مسیر $PATH
اجرای اسکریپت با ./backup.sh خوب است، اما ما میخواهیم مانند یک دستور واقعی، بتوانیم
آن را از هر مسیری فقط با تایپ کردن نامش (مثلاً backup) اجرا کنیم. برای این کار، باید
فایل اسکریپت خود را در یکی از دایرکتوریهایی قرار دهیم که در متغیر محیطی $PATH لیست
شدهاند.
بهترین روش برای اسکریپتهای شخصی، ایجاد یک دایرکتوری bin در پوشهی home خودمان است.
بسیاری از توزیعهای لینوکس به صورت خودکار این دایرکتوری را در صورت وجود به $PATH
اضافه میکنند.
- یک دایرکتوری به نام .local/bin در پوشهی home خود بسازید (این مسیر استاندارد
جدیدتری است):
$ mkdir -p ~/.local/bin
- اسکریپت خود را به آنجا منتقل کرده و نام آن را سادهسازی کنید:
$ mv backup.sh ~/.local/bin/backup
- ترمینال خود را ببندید و دوباره باز کنید. حالا سیستم باید کامند جدید شما را بشناسد. میتوانید
با دستور type این موضوع را بررسی کنید:
$ type backup
backup is /home/me/.local/bin/backup
تبریک! شما با موفقیت یک کامند سفارشی کاملاً کاربردی ساختید که از هر کجای سیستم قابل اجراست.