بازگشت به مقاله‌ها

آخرین نوشته‌ها

ترمینال؛ از اولین دستور تا کار با فایل‌ها

وقتشه ترست از ترمینال بریزه!

ترمینال؛ از اولین دستور تا کار با فایل‌ها

⌨️ ترمینال؛ از اولین دستور تا کار با فایل‌ها

ترمینال از اون چیزهاییه که وقتی تازه وارد لینوکس میشی، ممکنه بیشتر از چیزی که واقعا هست ترسناک به نظر بیاد. یه پنجره باز می‌کنی، یه خط متن می‌بینی و منتظری اتفاقی بیفته؛ اما هیچ اتفاقی نمیفته تا وقتی که خودت دست به کار بشی.

شاید هم قبلا دستورهایی مثل sudo apt update رو توی آموزش‌ها دیده باشی و بدون اینکه دقیقا بدونی چه اتفاقی میفته، کپی‌شون کرده باشی. این کار ممکنه بعضی وقت‌ها مشکلت رو حل کنه، اما اگه قراره با لینوکس راحت باشی، بهتره کم‌کم بفهمی داری چه دستوری اجرا می‌کنی و چرا.

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

اولین قدم: ترمینال رو باز کن

بسته به محیط دسکتاپ و توزیعی که استفاده می‌کنی، راه باز کردن ترمینال فرق می‌کنه. معمولا می‌تونی اسم Terminal رو توی منوی برنامه‌ها جست‌وجو کنی. در بعضی محیط‌ها هم میانبر Ctrl + Alt + T ترمینال رو باز می‌کنه.

وقتی ترمینال باز شد، احتمالا چیزی شبیه این می‌بینی:

amir@saina:~$

این فقط یه نمونه‌ست؛ ممکنه ظاهر ترمینال تو کاملا متفاوت باشه. بعضی‌ها اسم کاربر و کامپیوتر رو نشون میدن، بعضی‌ها مسیر فعلی رو هم نمایش میدن و بعضی پوسته‌های شخصی‌سازی‌شده اطلاعات بیشتری دارن.

علامت $ معمولا نشون میده که ترمینال منتظر دستورات کاربر عادیه. در بعضی محیط‌ها ممکنه به‌جاش علامت یا ظاهر دیگه‌ای ببینی.

حالا یه دستور ساده وارد کن:

whoami

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

این دستور قرار نیست چیزی رو تغییر بده؛ فقط یه اطلاعات ساده رو از سیستم می‌گیره و نمایش میده. برای شروع، دستورهای این‌چنینی بهترین انتخابن، چون می‌تونی بدون نگرانی نتیجه‌شون رو ببینی.

ترمینال الان کجاست؟

قبل از اینکه فایل بسازیم یا چیزی رو جابه‌جا کنیم، باید بدونیم ترمینال در حال حاضر به کدوم پوشه اشاره می‌کنه.

دستور زیر رو اجرا کن:

pwd

pwd مخفف print working directory هست و مسیر پوشه فعلی رو نشون میده. مثلا ممکنه خروجی این باشه:

/home/amir

این مسیر معمولا پوشه شخصی کاربره؛ جایی که فایل‌های خودت رو نگه می‌داری.

اگه با ویندوز کار کرده باشی، احتمالا به مسیرهایی مثل C:\Users\Amir عادت داری. در لینوکس شکل نوشتن مسیرها متفاوته و به‌جای بک‌اسلش \ از اسلش / استفاده میشه.

یه دستور دیگه هم هست که تقریبا بلافاصله به دردت می‌خوره:

ls

این دستور محتویات پوشه فعلی رو نشون میده. ممکنه اسم پوشه‌هایی مثل Downloads، Documents یا Pictures رو ببینی؛ البته اگر این پوشه‌ها رو داشته باشی.

حالا این رو امتحان کن:

ls -a

گزینه -a باعث میشه فایل‌ها و پوشه‌هایی که اسمشون با نقطه شروع میشه هم نمایش داده بشن. مثلا فایل‌های تنظیمات برنامه‌ها ممکنه اسم‌هایی مثل .bashrc یا .config داشته باشن.

این فایل‌ها لزوما مخفی یا رمزگذاری‌شده نیستن؛ فقط در نمایش معمول ls نشون داده نمیشن. بهتره فعلا صرفا بشناسی‌شون و بدونی که وجود دارن.

از این پوشه برو به اون پوشه

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

دستور cd برای تغییر پوشه استفاده میشه. مثلا:

cd Downloads

این دستور وارد پوشه Downloads میشه، به شرطی که چنین پوشه‌ای در مسیر فعلی وجود داشته باشه.

اما اگه الان داخل پوشه دیگه‌ای باشی، ممکنه همین دستور خطا بده. برای همین خوبه با چند مفهوم ساده آشنا بشی.

اول، اگه می‌خوای مستقیم به پوشه شخصی خودت برگردی، کافیه بنویسی:

cd

یا:

cd ~

این دو دستور در حالت معمول تو رو به Home Directory می‌برن؛ همون پوشه‌ای که فایل‌های شخصی کاربرت داخلش قرار دارن.

حالا فرض کن داخل پوشه Downloads هستی و می‌خوای برگردی به پوشه بالاتر. این دستور رو اجرا کن:

cd ..

دو نقطه .. به پوشه والد اشاره می‌کنه. یعنی اگه در مسیر /home/amir/Downloads باشی، با اجرای cd .. به /home/amir برمی‌گردی.

یه تفاوت مهم دیگه هم بین مسیرهای نسبی و مطلق وجود داره.

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

برای مثال، این دستور به مسیر مشخصی میره:

cd /etc

فرقی نمی‌کنه قبلش کجا بودی؛ مسیر /etc از ریشه شروع میشه و همیشه به همون محل اشاره می‌کنه.

در مقابل، اجرای این دستور:

cd Downloads

به وجود پوشه Downloads در مسیر فعلی وابسته‌ست.

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

یه فضای تمرینی بسازیم

تا اینجا چند دستور رو یاد گرفتیم، اما بهتره همه‌شون رو در یه مثال کنار هم قرار بدیم.

برای اینکه تصادفی فایل‌های شخصی خودت رو تغییر ندی، یه پوشه مخصوص تمرین داخل Home بساز.

اول این دستور رو اجرا کن:

mkdir ~/terminal-practice

دستور mkdir برای ساخت پوشه استفاده میشه. علامت ~ هم باعث میشه پوشه داخل مسیر شخصی خودت ساخته بشه.

حالا واردش شو:

cd ~/terminal-practice

با دستور زیر مطمئن شو که در مسیر درستی هستی:

pwd

خروجی باید چیزی شبیه این باشه:

/home/amir/terminal-practice

البته به‌جای amir نام کاربری خودت نمایش داده میشه.

حالا می‌تونیم چند فایل و پوشه آزمایشی بسازیم.

mkdir documents images projects

با یک دستور، سه پوشه ساخته میشه. لازم نیست برای هر پوشه جداگانه mkdir اجرا کنی؛ می‌تونی چند نام رو به‌عنوان آرگومان به دستور بدی.

برای دیدن نتیجه:

ls

باید سه پوشه‌ای رو که ساختی ببینی.

اگه بخوای پوشه‌ای داخل پوشه دیگه بسازی، می‌تونی از گزینه -p استفاده کنی:

mkdir -p projects/python/first-project

این دستور مسیر تو در تو رو ایجاد می‌کنه؛ حتی اگه پوشه‌های میانی هنوز وجود نداشته باشن.

حالا اگه می‌خوای ساختار پوشه‌ها رو بهتر ببینی، دستور زیر رو امتحان کن:

tree

ممکنه این دستور روی سیستم تو نصب نباشه. در این صورت باید بسته tree رو از طریق Package Manager توزیعت نصب کنی. فعلا هم می‌تونی با ls و cd ساختار پوشه‌ها رو بررسی کنی.

فایل بسازیم، بخونیم و تغییرش بدیم

پوشه‌ها به‌تنهایی چندان کاربردی نیستن؛ پس بیایم چند فایل هم بسازیم.

دستور touch برای ایجاد فایل خالی استفاده میشه، البته اگر فایل از قبل وجود داشته باشه، معمولا زمان دسترسی یا تغییرش رو به‌روزرسانی می‌کنه.

touch notes.txt

حالا با ls می‌تونی فایل جدید رو ببینی.

برای نوشتن یه متن ساده، می‌تونی از دستور echo و علامت > استفاده کنی:

echo "Hello Linux" > notes.txt

اینجا echo متن رو تولید می‌کنه و علامت > خروجی رو به فایل notes.txt می‌فرسته. اگه فایل وجود نداشته باشه، ساخته میشه؛ اگه هم وجود داشته باشه، محتوای قبلیش جایگزین میشه.

این نکته آخر رو یادت نگه دار. > صرفا متن جدید رو به انتهای فایل اضافه نمی‌کنه؛ محتوای قبلی رو بازنویسی می‌کنه.

اگه می‌خوای متن جدید به انتهای فایل اضافه بشه، از >> استفاده کن:

echo "I am learning the terminal" >> notes.txt

برای دیدن محتوای فایل هم می‌تونی از cat استفاده کنی:

cat notes.txt

اگه فایل کوتاه باشه، cat کاملا مناسبه. برای فایل‌های طولانی‌تر، less انتخاب بهتریه:

less notes.txt

در less می‌تونی با کلیدهای جهت‌دار یا Page Up و Page Down حرکت کنی و با فشردن q ازش خارج بشی.

حالا چند دستور دیگه که در مدیریت فایل‌ها زیاد به کارت میان.

برای کپی کردن فایل:

cp notes.txt notes-copy.txt

برای تغییر نام فایل:

mv notes-copy.txt my-notes.txt

و برای انتقال فایل به پوشه دیگه:

mv my-notes.txt documents/

دستور mv هم برای جابه‌جایی و هم برای تغییر نام استفاده میشه. اینکه کدوم اتفاق بیفته، به آرگومان‌هایی که بهش میدی بستگی داره.

در نهایت، برای حذف فایل:

rm documents/my-notes.txt

با دستور rm شوخی نکن. این دستور معمولا فایل رو مستقیم حذف می‌کنه و نباید انتظار داشته باشی بتونی مثل فایل‌های سطل زباله به‌سادگی برش گردونی. به‌خصوص از اجرای دستورهای حذف بازگشتی یا استفاده از مسیرهای ناشناس خودداری کن.

تا وقتی داری یاد می‌گیری، هر تغییری رو داخل همون پوشه terminal-practice انجام بده.

این علامت‌ها توی دستورها چه معنایی دارن؟

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

برای مثال:

ls -l

دستور ls محتویات پوشه رو نمایش میده و گزینه -l اطلاعات بیشتری مثل مجوزها، مالک فایل، اندازه و زمان آخرین تغییر رو نشون میده.

این هم یه نمونه دیگه:

ls -a

این بار گزینه -a فایل‌های مخفی رو هم نمایش میده.

می‌تونی چند گزینه رو با هم ترکیب کنی:

ls -la

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

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

یه نکته دیگه هم درباره فاصله‌هاست. ترمینال معمولا فاصله رو برای جدا کردن بخش‌های مختلف دستور در نظر می‌گیره. مثلا این دستور:

mkdir my folder

دو پوشه به نام‌های my و folder می‌سازه، نه یک پوشه به نام my folder.

اگه می‌خوای نام پوشه فاصله داشته باشه، از کوتیشن استفاده کن:

mkdir "my folder"

یا فاصله رو با بک‌اسلش مشخص کن:

mkdir my\ folder

برای همین خیلی از کاربرهای ترمینال ترجیح میدن در نام فایل‌ها و پوشه‌ها از خط تیره - یا زیرخط _ استفاده کنن. این کار نوشتن دستورها رو ساده‌تر می‌کنه.

وقتی دستوری رو بلد نیستی، از کجا کمک بگیری؟

یکی از عادت‌های خوب در لینوکس اینه که برای هر سؤال کوچکی مجبور نباشی سراغ گوگل یا انجمن‌ها بری. خیلی از دستورها راهنمای داخلی دارن.

برای مثال:

ls --help

این دستور فهرستی از گزینه‌های ls و توضیح کوتاهی درباره اون‌ها رو نمایش میده.

روش دیگه استفاده از man هست:

man ls

صفحه راهنمای دستور ls باز میشه و می‌تونی جزئیات بیشتری درباره کاربرد و گزینه‌هاش بخونی.

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

البته ممکنه راهنمای بعضی دستورها روی سیستم نصب نباشه یا دستور موردنظرت امکانات مخصوص یک پوسته داشته باشه. در این شرایط، مستندات رسمی پروژه هم می‌تونه کمک کنه.

مهم‌تر از همه، به‌جای حفظ کردن دستورها، سعی کن بفهمی هر کدوم چه ورودی‌ای می‌گیرن، چه کاری انجام میدن و چه نتیجه‌ای دارن. همین عادت باعث میشه وقتی با دستور جدیدی مواجه شدی، راحت‌تر بتونی ازش سر دربیاری.

sudo؛ وقتی دسترسی مدیریتی لازم داری

احتمالا در آموزش‌های لینوکس بارها با sudo روبه‌رو میشی. مثلا برای نصب برنامه در Ubuntu یا به‌روزرسانی سیستم.

sudo apt update

sudo اجازه میده یک دستور رو با سطح دسترسی مدیریتی اجرا کنی، البته به شرطی که حساب کاربریت مجوز لازم رو داشته باشه.

اما یه نکته مهم وجود داره: برای هر دستوری به sudo نیاز نداری.

برای کارهای معمولی مثل دیدن فایل‌ها، ساخت پوشه داخل Home یا تغییر نام فایل‌های خودت، معمولا دسترسی کاربر عادی کافیه. استفاده بی‌دلیل از دسترسی مدیریتی فقط خطر اشتباه رو بیشتر می‌کنه.

وقتی دستور sudo رو اجرا می‌کنی، ممکنه سیستم رمز عبورت رو بخواد. هنگام وارد کردن رمز، معمولا چیزی روی صفحه نمایش داده نمیشه؛ نه حروف و نه ستاره. این رفتار طبیعیه. رمز رو تایپ کن و Enter بزن.

یه قانون ساده برای خودت داشته باش: هر وقت در یه آموزش دیدی دستوری با sudo شروع میشه، قبل از اجرا بفهم چه کاری انجام میده. مخصوصا اگر دستور از یه سایت ناشناس اومده یا قراره فایل‌های سیستمی رو تغییر بده.

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

چند نکته کوچک که کار با ترمینال رو راحت‌تر می‌کنن

وقتی بیشتر با ترمینال کار کنی، متوجه میشی که لازم نیست همه‌چیز رو از صفر تایپ کنی.

با فشردن کلید بالا می‌تونی دستورهای قبلی رو ببینی و دوباره اجرا کنی. این قابلیت برای وقتیه که دستور طولانی‌ای نوشتی و می‌خوای با یه تغییر کوچیک دوباره اجراش کنی.

کلید Tab هم برای تکمیل خودکار اسم فایل‌ها و پوشه‌ها کاربرد داره. مثلا اگه داخل پوشه‌ای هستی که فایل notes.txt توشه، می‌تونی چند حرف اول اسمش رو بنویسی و Tab رو فشار بدی.

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

و اگر دستوری رو اجرا کردی که به نظر میاد متوقف شده یا بیشتر از حد انتظار طول کشیده، در بسیاری از موارد می‌تونی با Ctrl + C اجرای اون رو قطع کنی. البته این کار لزوما به معنی برگردوندن تغییراتی نیست که دستور تا اون لحظه انجام داده.

یه نکته ساده دیگه: حروف بزرگ و کوچک در نام دستورها و فایل‌ها معمولا اهمیت دارن. pwd و PWD لزوما یکسان نیستن و notes.txt با Notes.txt می‌تونه دو نام متفاوت باشه.

حالا خودت امتحان کن

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

اول وارد پوشه تمرین شو:

cd ~/terminal-practice

سه پوشه بساز:

mkdir documents projects backups

یه فایل متنی ایجاد کن و داخلش چند خط بنویس:

echo "My first terminal exercise" > documents/notes.txt
echo "Learning Linux step by step" >> documents/notes.txt

حالا محتوای فایل رو ببین:

cat documents/notes.txt

از فایل یه نسخه پشتیبان داخل پوشه backups بگیر:

cp documents/notes.txt backups/notes.txt

بعد بررسی کن که فایل کپی شده باشه:

ls backups

در نهایت، مسیر فعلی رو با pwd ببین و سعی کن بدون کمک گرفتن از آموزش، توضیح بدی هر کدوم از دستورهایی که اجرا کردی چه کاری انجام دادن.

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

از اینجا به بعد

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

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

برای مطالعه بیشتر، راهنمای رسمی Ubuntu درباره خط فرمان لینوکس آموزش‌های عملی خوبی داره. برای آشنایی دقیق‌تر با دستورهای پایه هم می‌تونی از راهنمای GNU Coreutils استفاده کنی.

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

نوشته‌ی امیرحسین

گفتگو درباره‌ی این مقاله

۱ دیدگاه

به گفتگو بپیوندید

ورود به حساب
  1. آرمان

    بسیار مقاله خوبی بود، با نوشتار زیبا چند نفر رو می شناسم که فکر می کنم به این نیاز داشته باشن 😁 در ضمن، تبریک بابت سایت!