مقدمه
این آموزش که اولین مورد از مجموعه ای است که اصول لینوکس را آموزش می دهد، شروع کار با ترمینال، خط فرمان لینوکس و اجرای دستورات را پوشش می دهد. اگر با لینوکس تازه کار هستید، باید با ترمینال آشنا شوید، زیرا این روش استاندارد برای تعامل با سرور لینوکس است.
اگر میخواهید از این آموزش حداکثر استفاده را ببرید، برای اتصال و استفاده به سرور لینوکس نیاز دارید. اگر قبلاً یکی را ندارید، میتوانید با دنبال کردن این پیوند سریعاً یکی را بچرخانید: چگونه یک قطره اقیانوس دیجیتال ایجاد کنیم. این آموزش برای سرور اوبونتو 22.04 نوشته شده است، اما اصول کلی برای هر توزیع دیگر لینوکس اعمال می شود.
بیایید با توضیح اینکه شبیه ساز ترمینال چیست، شروع کنیم.
شبیه ساز ترمینال
شبیه ساز ترمینال برنامه ای است که امکان استفاده از ترمینال را در یک محیط گرافیکی فراهم می کند. از آنجایی که اکثر مردم از یک سیستم عامل با رابط کاربری گرافیکی (GUI) برای نیازهای روزمره رایانه خود استفاده می کنند، استفاده از شبیه ساز ترمینال برای اکثر کاربران سرور لینوکس یک ضرورت است.
در اینجا برخی از شبیه سازهای ترمینال رایگان و رایج توسط سیستم عامل آورده شده است:
- Macos: ترمینال (پیشفرض)، iTerm2
- ویندوز: ConEmu، Windows Terminal، PuTTy
- لینوکس: Gnome Terminal، Konsole، XTerm
هر شبیه ساز ترمینال مجموعه ای از ویژگی های خاص خود را دارد. به طور کلی، باید از یک شبیه ساز ترمینال مدرن انتظار داشته باشید که از پنجره های تب دار و برجسته سازی متن پشتیبانی کند.
پوسته
در یک سیستم لینوکس، پوسته یک رابط خط فرمان است که دستورات و فایلهای اسکریپت کاربر را تفسیر میکند و به سیستم عامل سرور میگوید که با آنها چه کند. چندین پوسته وجود دارد که به طور گسترده مورد استفاده قرار می گیرند، مانند پوسته Bourne-Again (bash) و پوسته Z (zsh). هر پوسته دارای مجموعه ویژگی ها و پیچیدگی های مربوط به نحوه تفسیر دستورات است، اما همه آنها دارای تغییر جهت ورودی و خروجی، متغیرها و تست شرط و موارد دیگر هستند.
این آموزش با استفاده از پوسته Bourne-Again نوشته شده است که معمولاً به آن bash می گویند که پوسته پیش فرض اکثر توزیع های لینوکس از جمله اوبونتو، فدورا و RHEL است.
خط فرمان
هنگامی که برای اولین بار به یک سرور وارد می شوید، معمولاً با پیام روز (MOTD) مواجه می شوید که معمولاً یک پیام اطلاعاتی است که شامل اطلاعات متفرقه ای مانند نسخه توزیع لینوکس است که سرور در حال اجرا است. پس از MOTD، شما در خط فرمان یا shell prompt قرار می گیرید، جایی که می توانید دستورات را به سرور صادر کنید.
اطلاعاتی که در خط فرمان ارائه می شود می تواند توسط کاربر سفارشی شود، اما در اینجا نمونه ای از خط فرمان پیش فرض Ubuntu 20.04 آورده شده است:
sammy@webapp:~$
در اینجا خلاصه ای از ترکیب خط فرمان آمده است:
- sammy: نام کاربری کاربر فعلی
- webapp: نام میزبان سرور
- ~: دایرکتوری فعلی. در bash که پوسته پیشفرض است، ~ یا tilde یک کاراکتر ویژه است که به مسیر فهرست اصلی کاربر فعلی گسترش مییابد. در این مورد، نشان دهنده /home/sammy است
- $: نماد اعلان. این نشان دهنده پایان خط فرمان است، پس از آن ورودی صفحه کلید کاربر ظاهر می شود
در اینجا مثالی از اینکه خط فرمان ممکن است به نظر برسد، اگر به عنوان root و در پوشه /var/log وارد شده باشد، آمده است:
root@webapp:/var/log#
توجه داشته باشید که نمادی که خط فرمان را به پایان میرساند یک # است که نماد خط استاندارد برای root است. در لینوکس، کاربر ریشه، حساب کاربری فوقالعاده است، که یک حساب کاربری ویژه است که میتواند عملکردهای مدیریتی در سراسر سیستم را انجام دهد. این یک کاربر نامحدود است که اجازه انجام هر کاری را در سرور دارد.
دستورات در حال اجرا
دستورات را می توان در خط فرمان با تعیین نام یک فایل اجرایی صادر کرد که می تواند یک برنامه باینری یا یک اسکریپت باشد. بسیاری از دستورات و ابزارهای استاندارد لینوکس وجود دارند که با سیستم عامل نصب می شوند و به شما امکان می دهند در سیستم فایل پیمایش کنید، بسته های نرم افزاری را نصب کنید و سیستم و برنامه های کاربردی را پیکربندی کنید.
یک نمونه از دستور در حال اجرا به عنوان یک فرآیند شناخته می شود. هنگامی که یک فرمان در پیش زمینه اجرا می شود، که روش پیش فرض اجرای دستورات است، کاربر باید قبل از بازگشت به خط فرمان، منتظر بماند تا فرآیند به پایان برسد، در این مرحله می تواند به صدور دستورات بیشتری ادامه دهد.
توجه به این نکته ضروری است که تقریباً همه چیز در لینوکس به حروف بزرگ و کوچک حساس است، از جمله نام فایل ها و دایرکتوری ها، دستورات، آرگومان ها و گزینه ها. اگر چیزی مطابق انتظار کار نمی کند، املا و حروف دستورات خود را دوباره بررسی کنید!
در اینجا چند مثال آورده شده است که اصول اجرای دستورات را پوشش می دهد.
بدون استدلال یا گزینه
برای اجرای دستور بدون آرگومان یا گزینه، نام دستور را تایپ کرده و Enter را فشار دهید.
اگر دستوری مانند این را اجرا کنید، رفتار پیش فرض خود را نشان می دهد که از دستوری به دستور دیگر متفاوت است. به عنوان مثال، اگر دستور cd را بدون هیچ آرگومان اجرا کنید، به فهرست اصلی کاربر فعلی خود بازگردانده می شوید. دستور ls فهرستی از فایل ها و دایرکتوری های دایرکتوری فعلی را چاپ می کند. دستور ip بدون هیچ آرگومان پیامی را چاپ می کند که نحوه استفاده از دستور ip را به شما نشان می دهد.
برای فهرست کردن فایلها و دایرکتوریها در فهرست فعلیتان، دستور ls را بدون آرگومان اجرا کنید (ممکن است وجود نداشته باشد):
ls
با استدلال
بسیاری از دستورات آرگومان ها یا پارامترهایی را می پذیرند که می توانند بر رفتار یک فرمان تأثیر بگذارند. به عنوان مثال، رایج ترین راه برای استفاده از دستور cd ارسال یک آرگومان واحد است که مشخص می کند به کدام دایرکتوری تغییر دهید. به عنوان مثال، برای تغییر به پوشه /usr/bin، که در آن بسیاری از دستورات استاندارد نصب شده است، این دستور را صادر کنید:
cd /usr/bin
جزء cd دستور است و اولین آرگومان /usr/bin از دستور پیروی می کند. توجه داشته باشید که چگونه مسیر فعلی خط فرمان شما به روز شده است.
سعی کنید دستور ls را اجرا کنید تا فایل هایی را که در دایرکتوری جدید فعلی شما قرار دارند را مشاهده کنید.
ls
Output
…
grub-mkrescue sdiff zgrep
grub-mkstandalone sed zipdetails
grub-mount see zless
grub-ntldr-img select-editor zmore
grub-render-label semver znew
grub-script-check sensible-browser
با گزینه ها
اکثر دستورات گزینه هایی را می پذیرند که به عنوان پرچم یا سوئیچ نیز شناخته می شوند که رفتار دستور را تغییر می دهند. گزینه ها از یک فرمان پیروی می کنند و با یک کاراکتر منفرد و به دنبال آن یک یا چند گزینه نشان داده می شوند که با حروف بزرگ یا کوچک نمایش داده می شوند. برخی از گزینه های چند کلمه ای می توانند با — و سپس متن پرچم شروع شوند.
برای مثالی از نحوه عملکرد گزینه ها، اجازه دهید به دستور ls نگاه کنیم. در اینجا چند گزینه رایج وجود دارد که هنگام استفاده از ls مفید هستند:
- -l: چاپ یک “فهرست طولانی”، که شامل جزئیات اضافی مانند مجوزها، مالکیت، اندازه فایل، و مُهر زمانی است.
- -a: فهرست همه فایلهای دایرکتوری، از جمله فایلهای مخفی (که با . شروع میشوند.)
برای استفاده از پرچم -l با ls، از این دستور استفاده کنید:
ls -l
توجه داشته باشید که فهرست شامل همان فایلهای قبلی است، اما با اطلاعات اضافی درباره هر فایل.
همانطور که قبلا ذکر شد، گزینه ها اغلب می توانند با هم گروه بندی شوند. اگر می خواهید از گزینه های -l و -a با هم استفاده کنید، می توانید ls -l -a را اجرا کنید یا فقط آنها را مانند دستور زیر ترکیب کنید:
ls -la
توجه داشته باشید که فهرست شامل موارد پنهان است. و .. دایرکتوری ها در لیست، به دلیل گزینه -a.
با گزینه ها و استدلال ها
هنگام اجرای دستورات تقریباً همیشه می توان گزینه ها و آرگومان ها را با هم ترکیب کرد.
به عنوان مثال، می توانید با اجرای دستور ls، محتویات /home را بدون توجه به فهرست فعلی خود بررسی کنید:
ls -la /home
ls فرمان است، -la گزینهها و /home آرگومان است که نشان میدهد کدام فایل یا فهرست را باید فهرست کرد. این باید فهرستی دقیق از فهرست /home را چاپ کند، که باید شامل دایرکتوری های اصلی همه کاربران عادی روی سرور باشد.
متغیرهای محیطی
متغیرهای محیطی مقادیر نامگذاری شدهای هستند که برای تغییر نحوه اجرای دستورات و فرآیندها استفاده میشوند. هنگامی که برای اولین بار وارد یک سرور می شوید، چندین متغیر محیطی به طور پیش فرض بر اساس چند فایل پیکربندی تنظیم می شوند.
مشاهده همه متغیرهای محیطی
برای مشاهده تمام متغیرهای محیطی که برای یک جلسه ترمینال خاص تنظیم شده اند، دستور env را اجرا کنید:
env
احتمالا خروجی زیادی خواهد داشت. به دنبال ورودی PATH باشید:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
متغیر محیطی PATH فهرستی از دایرکتوریها است که با کولون مشخص شدهاند که در آن پوسته هنگام صدور فرمان به دنبال برنامهها یا اسکریپتهای اجرایی میگردد. به عنوان مثال، دستور env در /usr/bin قرار دارد و شما می توانید بدون تعیین مسیر کامل آن را اجرا کنید زیرا مسیر آن در متغیر محیطی PATH است.
مشاهده مقدار یک متغیر
مقدار یک متغیر محیطی را می توان با پیشوند نام متغیر با یک $ بازیابی کرد. با این کار متغیر ارجاع شده به مقدار آن گسترش می یابد.
به عنوان مثال، برای چاپ مقدار متغیر PATH، می توانید از دستور echo استفاده کنید:
echo $PATH
یا می توانید از متغیر HOME که به طور پیش فرض روی فهرست اصلی کاربر تنظیم شده است استفاده کنید تا به فهرست اصلی خود تغییر دهید:
cd $HOME
اگر سعی کنید به یک متغیر محیطی که تنظیم نشده است دسترسی پیدا کنید، آن را به هیچ گسترش میدهید. یک رشته خالی
تنظیم متغیرهای محیطی
اکنون که می دانید چگونه متغیرهای محیط خود را مشاهده کنید، باید نحوه تنظیم آنها را یاد بگیرید.
برای تنظیم یک متغیر محیطی، تنها کاری که باید انجام دهید این است که با نام متغیر شروع کنید، بلافاصله علامت = و سپس مقدار دلخواه آن را دنبال کنید:
VAR=value
توجه داشته باشید که اگر یک متغیر موجود را تنظیم کنید، مقدار اصلی بازنویسی می شود. اگر متغیر از ابتدا وجود نداشت، ایجاد می شود.
Bash شامل دستوری به نام export است که یک متغیر را صادر می کند تا توسط فرآیندهای فرزند به ارث می رسد. این به شما امکان می دهد از اسکریپت هایی استفاده کنید که به یک متغیر محیطی صادر شده از جلسه فعلی شما اشاره می کنند.
همچنین می توانید هنگام تنظیم یک متغیر به متغیرهای موجود ارجاع دهید. برای مثال، اگر برنامهای را در /opt/app/bin نصب کردهاید، میتوانید آن دایرکتوری را با این دستور به انتهای متغیر محیطی PATH خود اضافه کنید:
export PATH=$PATH:/opt/app/bin
اکنون بررسی کنید که /opt/app/bin با echo به انتهای متغیر PATH شما اضافه شده باشد:
echo $PATH
به خاطر داشته باشید که تنظیم متغیرهای محیطی به این روش فقط آنها را برای جلسه فعلی شما تنظیم می کند. این بدان معنی است که اگر از سیستم خارج شوید یا به جلسه دیگری تغییر دهید، تغییراتی که در محیط ایجاد کرده اید حفظ نمی شود. راهی برای تغییر دائمی متغیرهای محیط وجود دارد، اما در آموزش بعدی به این موضوع پرداخته خواهد شد.
نتیجه
اکنون که شروع به یادگیری در مورد ترمینال لینوکس (و چند دستور) کرده اید، باید پایه خوبی برای گسترش دانش خود در مورد دستورات لینوکس داشته باشید. آموزش بعدی این مجموعه را بخوانید تا نحوه پیمایش، مشاهده و ویرایش فایلها و مجوزهای آنها را بیاموزید.