مقدمه
وقتی شروع به یادگیری لینوکس کردم، یکی از مهمترین چالشها برای من، درک ساختار سیستم فایل، آشنایی با دستورات خط فرمان و البته مفاهیم ابتدایی اسکریپتنویسی بود. به همین دلیل تصمیم گرفتم این مقاله رو بنویسم تا هم برای خودم مرور خوبی باشه و هم شاید برای بقیه مفید واقع بشه. در این نوشته، به مفاهیمی مثل ساختار دایرکتوریهای اصلی، مدیریت بستهها، ابزارهای مانیتورینگ منابع سیستم و همینطور چند دستور مهم ترمینال میپردازم که شخصاً خیلی برام کاربردی بودن.
دستورات پایه در ترمینال و اسکریپتنویسی
یکی از چیزهایی که خیلی زود متوجهش شدم این بود که ترکیب چند دستور ساده میتونه کارهای خیلی پیچیدهای انجام بده. بعضی از این دستورها شاید در ظاهر خیلی ساده باشن، اما توی اسکریپتنویسی یا کارهای روزمره، کلی کمکمون میکنن:
echo
برای چاپ متن یا متغیر توی ترمینال استفاده میشه. خیلی وقتا برای تست کردن یه مقدار یا نمایش ساده ازش استفاده میکنم.cat
برای نمایش محتویات یه فایل هست. البته تو فایلهای بزرگ،less
به نظرم انتخاب بهتریه.cut
یه ابزار خیلی خوب برای جدا کردن قسمتهایی از هر خط یه فایل متنیه. مثلاً وقتی با فایلهای CSV کار میکنم، خیلی کارم راه میندازه.- Pipe (
|
) یکی از جذابترین ویژگیهای Bash ـه. باهاش میتونیم خروجی یه دستور رو بدیم به ورودی دستور بعدی. tail
برای دیدن آخرین خطوط یک فایله، مخصوصاً لاگها. با-n
هم میتونیم تعداد خطوط رو مشخص کنیم.head
دقیقاً برعکسtail
عمل میکنه و چند خط اول رو نشون میده.- تعریف متغیر با ساختار
name=value
انجام میشه و با$name
میشه بهش دسترسی داشت. read
برای گرفتن ورودی از کاربره. توی اسکریپتها خیلی به کارم اومده.rev
هم یه دستور باحاله که متن رو برعکس میکنه. گاهی برای سرگرمی ازش استفاده کردم!
ساختار دایرکتوری اصلی در لینوکس
یکی از مفاهیم مهمی که اوایل کمی گیجم کرد، ساختار پوشههای اصلی لینوکس بود. همه چیز از /
شروع میشه، یعنی root. بقیهی پوشهها از اون منشعب میشن:
- /etc جاییه که تمام فایلهای تنظیمات سیستم و سرویسها ذخیره میشن.
- /bin شامل دستوراتی مثل
ls
،cp
،mv
و… هست. اینها معمولاً دستورات پایهای هستن که باید همیشه در دسترس باشن. - /lib کتابخونههایی که برای اجرای باینریهای
/bin
لازمه توی این پوشه هستن. - /home جاییه که اطلاعات و فایلهای شخصی هر کاربر نگهداری میشه. برای هر کاربر یه فولدر جدا داره.
- /tmp یه پوشه موقتیه که فایلهاش بعد از ریست شدن سیستم حذف میشن.
- /dev همهی دیوایسهای سختافزاری به صورت فایل توی این پوشه نمایش داده میشن. این خیلی برام جالب بود که تو لینوکس همه چیز حتی سختافزارها هم یه جور فایل حساب میشن.
- /proc یه سیستم فایل مجازیه که اطلاعات مربوط به پروسسها و هسته سیستم رو نشون میده. برای بررسی وضعیت پردازشها خیلی مفیده.
مدیریت بستهها (Package Manager)
تو لینوکس نصب برنامهها معمولاً از طریق Package Manager انجام میشه. من که با اوبونتو کار میکنم، بیشتر با apt
سر و کار دارم. مثلاً:
bashCopyEditsudo apt install iptraf
برای حذف برنامه هم:
bashCopyEditsudo apt remove iptraf
یه نکتهی مهم اینه که بیشتر دستورات مدیریتی نیاز به sudo
دارن. همچنین ابزار دیگهای مثل snap
هم هست که برنامهها رو به صورت بستههای مستقل نصب میکنه.
مانیتورینگ منابع سیستم
برای نظارت روی مصرف منابع سیستم مثل RAM و CPU، از ابزارهای زیادی میشه استفاده کرد. مثلاً:
top
وhtop
که پروسسها رو لحظهای نشون میدن.htop
محیط گرافیکیتر و جذابتری داره.watch
دستور خیلی خوبیه برای اجرای مداوم یه دستور. مثلاً باwatch -n 1 date
میتونید هر ثانیه زمان سیستم رو ببینید.
ابزارهای کاربردی دیگه
tree
ساختار پوشهها رو به صورت درختی نشون میده. برای فهمیدن ساختار یه پروژه خیلی مفیده.less
برای دیدن فایلهای بزرگ استفاده میشه، مخصوصاً وقتی نمیخوایم کل فایل رو یکجا ببینیم.mkdir
برای ساخت پوشه جدید.touch
برای ساخت فایل خالی.>
برای نوشتن یا بازنویسی فایلها.- Terminator یه ترمینال خیلی باحاله که میتونیم چند پنجره رو همزمان توش باز کنیم. کار کردن باهاش خیلی راحتتره.
tty-clock
یه ساعت دیجیتال برای محیط ترمیناله. بیشتر برای قشنگی ازش استفاده میکنم 😄timedatectl
هم برای تنظیم و دیدن ساعت و تاریخ سیستم استفاده میشه.
ویرایشگر Vim؛ دوست یا دشمن؟
راستش اوایل از Vim فراری بودم! اما کمکم فهمیدم برای کارهای سیستمی واقعاً لازمه. توی محیطهایی که هیچ ابزار گرافیکی نیست، داشتن یه ویرایشگر قدرتمند مثل Vim خیلی مهمه. هنوز دارم یادش میگیرم ولی میدونم که بهزودی به یکی از ابزارهای اصلیم تبدیل میشه.
جمعبندی
اگه بهتازگی وارد دنیای لینوکس شدی، آشنایی با ساختار دایرکتوریها، نحوه کار با ترمینال، و ابزارهای مدیریت منابع میتونه کلی بهت کمک کنه. بهنظر من، استفاده روزانه از این دستورات و تمرین باهاشونه که باعث میشه به مرور زمان بهشون مسلط بشی. امیدوارم این نوشته برات مفید بوده باشه. اگر سوالی داشتی یا نکتهای به ذهنت رسید، خوشحال میشم در موردش صحبت کنیم.