pwd (Print Working Directory)
دستور pwd یکی از ابتداییترین و پرکاربردترین دستورات در محیط خط فرمان است. وظیفهی آن، چاپ مسیر کامل دایرکتوری کاری فعلی (Current Working Directory) است. به عبارت دیگر، به شما میگوید در حال حاضر در کجای ساختار دایرکتوری سیستم قرار دارید.
pwd
خروجی نمونه:
/home/username/projects
این دستور زمانی بسیار مفید است که مسیر خود را در یک درخت دایرکتوری عمیق گم کردهاید یا میخواهید از مسیر فعلی در یک اسکریپت استفاده کنید.
نکته حرفهای: دستور
pwdدو گزینهی مفید نیز دارد:-P(Physical) که مسیر را بدون در نظر گرفتن لینکهای سمبلیک (Symbolic Links) نشان میدهد و-L(Logical) که مسیر حاوی لینک سمبلیک را نشان میدهد. در صورت عدم استفاده از گزینه، بهطور پیشفرض از-Pاستفاده میشود.
ls (List Directory Contents)
دستور ls برای فهرستکردن محتویات یک دایرکتوری استفاده میشود. این دستور پرچمهای بسیار زیادی دارد که به شما امکان میدهد خروجی را به هر شکلی که نیاز دارید، سفارشی کنید. اگر بدون آرگومان اجرا شود، محتویات دایرکتوری فعلی را نمایش میدهد.
ساختار کلی:
ls [option] [file/directory]
مثالهای پرکاربرد
| دستور | توضیح |
|---|---|
ls | لیست ساده از فایلها و پوشههای دایرکتوری فعلی. فایلهای مخفی (شروع با .) را نشان نمیدهد. |
ls -l | نمایش لیست با جزئیات کامل (Long Format) شامل مجوزها، تعداد لینکها، مالک، گروه، اندازه و تاریخ تغییرات. |
ls -a | نمایش همه فایلها، از جمله فایلهای مخفی که با . شروع میشوند. |
ls -la | ترکیب دو گزینهی بالا برای نمایش جزئیات کامل همه فایلها. |
ls -R | نمایش محتویات دایرکتوری بهصورت بازگشتی (Recursive) یعنی همراه با زیرشاخهها. |
ls -h | نمایش اندازه فایلها بهصورت قابل خواندن برای انسان (Human-Readable) مانند 1K، 234M یا 2G (معمولاً با -l استفاده میشود). |
ls -lt | مرتبسازی بر اساس زمان تغییر، جدیدترین فایلها در ابتدا. |
ls -S | مرتبسازی بر اساس اندازه، بزرگترین فایلها در ابتدا. |
ls /home | نمایش محتویات دایرکتوری /home، نه دایرکتوری فعلی. |
مثال خروجی ls -l:
-rw-r--r-- 1 user group 1024 Jul 25 10:30 myfile.txt drwxr-xr-x 2 user group 4096 Jul 25 10:31 myfolder
cd (Change Directory)
دستور cd برای تغییر دایرکتوری کاری فعلی به دایرکتوری دیگری استفاده میشود. این دستور یکی از توکارهای (Built-in) خودِ شل است، نه یک برنامهی خارجی.
ساختار کلی:
cd [directory]
موارد استفاده
-
رفتن به یک دایرکتوری خاص با مسیر مطلق:
cd /var/log -
رفتن به یک دایرکتوری با مسیر نسبی:
cd Documents/projects # از دایرکتوری فعلی به زیرشاخهی Documents میرویم
-
رفتن به دایرکتوری خانه (Home Directory):
cd ~ # یا cd
اگر هیچ آرگومانی به
cdداده نشود، بهطور پیشفرض شما را به دایرکتوری خانه میبرد. این رفتار به متغیر محیطیHOMEوابسته است. -
رفتن به دایرکتوری قبلی:
cd -این دستور شما را به دایرکتوری قبلی (که در متغیر
OLDPWDذخیره شده است) برمیگرداند و مسیر آن را نیز چاپ میکند. -
رفتن به دایرکتوری والد (یک سطح بالا):
cd ..
نکته: دستور
cdیک دستور توکار (Built-in) است، بنابراین برای دیدن مستندات آن باید به مستندات خود شل (مثل Bash) مراجعه کنید، نهmanهای معمول.
mkdir (Make Directory)
از دستور mkdir برای ساخت دایرکتوریهای جدید استفاده میشود.
ساختار کلی:
mkdir [option] directory_name...
مثالها
-
ساخت یک دایرکتوری ساده:
mkdir new_folder -
ساخت چند دایرکتوری بهصورت همزمان:
mkdir dir1 dir2 dir3 -
ساخت یک مسیر کامل با زیرشاخههای تو در تو (با گزینه
-p):
گزینهی-pیا--parentsبهmkdirمیگوید که اگر دایرکتوریهای میانی وجود ندارند، آنها را نیز بسازد و در صورت وجود، خطا ندهد.mkdir -p projects/2024/reports
این دستور، دایرکتوری
projectsرا میسازد، سپس2024را درون آن و سپسreportsرا درون2024ایجاد میکند. -
ساخت دایرکتوری با مجوزهای خاص (با گزینه
-m):
با این گزینه میتوانید سطح دسترسی (Permission) دایرکتوری را هنگام ساخت تعیین کنید.mkdir -m 700 private_folder
-
نمایش پیام برای هر دایرکتوری ساختهشده (با گزینه
-v):mkdir -v new_folder # خروجی: mkdir: created directory 'new_folder'
touch
دستور touch دو کاربرد اصلی دارد: بهروزرسانی زمان دسترسی و زمان تغییر یک فایل و ایجاد یک فایل خالی جدید در صورتی که فایل وجود نداشته باشد.
ساختار کلی:
touch [option] file...
مثالها
-
ایجاد یک فایل خالی جدید:
touch myfile.txtاگر
myfile.txtوجود نداشته باشد، یک فایل خالی با همین نام ایجاد میکند. -
ایجاد چند فایل خالی:
touch file1.txt file2.txt file3.txt -
بهروزرسانی زمان تغییر فایل به زمان فعلی:
اگر فایل از قبل وجود داشته باشد،touchزمان دسترسی (Access Time) و زمان تغییر (Modification Time) آن را به زمان فعلی بهروز میکند. -
تنها تغییر زمان دسترسی (با گزینه
-a):touch -a myfile.txt
-
تنها تغییر زمان تغییر محتوا (با گزینه
-m):touch -m myfile.txt
-
تنظیم یک زمان خاص (با گزینه
-t):touch -t 202401151030.00 myfile.txt # زمان را به ۱۵ ژانویه ۲۰۲۴، ساعت ۱۰:۳۰:۰۰ تنظیم میکند
-
استفاده از یک تاریخ قابل خواندن (با گزینه
-d):touch -d "yesterday" myfile.txt touch -d "2 weeks ago" myfile.txt
-
کپی کردن زمان از یک فایل دیگر (با گزینه
-r):touch -r reference.txt myfile.txt
نکته مهم: برای ایجاد فایل با
touch، باید در دایرکتوری مربوطه مجوز نوشتن (Write Permission) داشته باشید.
cp (Copy)
دستور cp برای کپی کردن فایلها و دایرکتوریها از یک مکان به مکان دیگر استفاده میشود.
ساختار کلی:
cp [option] source destination cp [option] source... directory
حالتهای مختلف
-
کپی یک فایل در همان دایرکتوری با نامی جدید:
cp original.txt copy.txt -
کپی یک فایل به یک دایرکتوری دیگر (با حفظ نام):
cp myfile.txt /home/user/backup/ -
کپی یک فایل به دایرکتوری دیگر با نامی جدید:
cp myfile.txt /home/user/backup/newfile.txt -
کپی بازگشتی یک دایرکتوری (با گزینه
-rیا-R):
برای کپی کردن کل محتویات یک دایرکتوری به همراه زیرشاخههایش، از گزینهی-r(Recursive) استفاده میشود.cp -r /source/folder /destination/
-
کپی با حفظ ویژگیها (با گزینه
-p):
برای حفظ مجوزها، مالکیت و زمانهای فایل در هنگام کپی.cp -p important_file.txt /backup/
-
کپی با حالت بایگانی (با گزینه
-a):
این گزینه معادل-dR --preserve=allاست و برای کپی کامل یک دایرکتوری با تمام ویژگیها و لینکها استفاده میشود.cp -a /source /destination
-
کپی با تأیید قبل از بازنویسی (با گزینه
-i):
اگر فایل مقصد از قبل وجود داشته باشد،cpاز شما میپرسد که آیا میخواهید آن را بازنویسی کنید یا خیر.cp -i myfile.txt /destination/
-
کپی با بازنویسی اجباری (با گزینه
-f):
اگر فایل مقصد قابل نوشتن نباشد، آن را حذف کرده و دوباره تلاش میکند.cp -f myfile.txt /destination/
mv (Move)
دستور mv برای انتقال (یا تغییر نام) فایلها و دایرکتوریها استفاده میشود.
ساختار کلی:
mv [option] source destination mv [option] source... directory
مثالها
-
تغییر نام یک فایل:
mv oldname.txt newname.txt -
انتقال یک فایل به دایرکتوری دیگر:
mv myfile.txt /home/user/Documents/ -
انتقال یک دایرکتوری به دایرکتوری دیگر:
mv myfolder /home/user/backup/ -
انتقال چند فایل به یک دایرکتوری:
mv file1.txt file2.txt file3.txt /destination/ -
انتقال با تأیید قبل از بازنویسی (با گزینه
-i):
مانندcp -iعمل میکند و قبل از بازنویسی از شما تأیید میگیرد.mv -i myfile.txt /destination/
-
انتقال اجباری بدون تأیید (با گزینه
-f):
قبل از بازنویسی هیچ سوالی نمیپرسد.mv -f myfile.txt /destination/
-
انتقال فقط در صورتی که فایل مقصد قدیمیتر باشد (با گزینه
-u):mv -u myfile.txt /destination/
rm (Remove)
دستور rm برای حذف (پاک کردن) فایلها و دایرکتوریها استفاده میشود. این یکی از قدرتمندترین و در عین حال خطرناکترین دستورات است، زیرا فایلها را بهطور دائم حذف میکند و به سطل زباله نمیفرستد.
ساختار کلی:
rm [option] file...
مثالها
-
حذف یک فایل:
rm myfile.txt -
حذف چند فایل:
rm file1.txt file2.txt file3.txt -
حذف یک دایرکتوری خالی (با گزینه
-d):rm -d empty_folder
-
حذف بازگشتی یک دایرکتوری و تمام محتویات آن (با گزینه
-rیا-R):
برای حذف یک دایرکتوری به همراه همهی فایلها و زیرشاخههای داخل آن، از گزینهی-r(Recursive) استفاده میشودrm -r myfolder/
-
حذف اجباری بدون هیچ پرسشی (با گزینه
-f):
این گزینه خطاهای مربوط به فایلهای ناموجود را نادیده میگیرد و هرگز سوالی نمیپرسد. برای حذف دایرکتوریهای محافظتشده با-rو-fترکیب میشود.rm -rf myfolder/
-
حذف با تأیید قبل از هر حذف (با گزینه
-i):
قبل از حذف هر فایل، از کاربر تأیید میگیرد.rm -i myfile.txt
-
حذف با یک بار تأیید برای بیش از ۳ فایل (با گزینه
-I):
یک بار سوال میپرسد و اگر بیش از ۳ فایل یا از گزینهی-rاستفاده شده باشد، کل عملیات را تأیید میکند. این گزینه از-iکمتر مزاحم است.rm -I *.txt
هشدار امنیتی: دستور
rm -rf /یکی از معروفترین دستورات مخرب است که میتواند کل سیستمعامل شما را پاک کند. خوشبختانه، نسخههای جدیدrmبا گزینهی--preserve-rootاز این کار جلوگیری میکنند.
مسیرهای Absolute و Relative
برای کار با فایلها و دایرکتوریها، درک دو نوع مسیر ضروری است: مسیر مطلق (Absolute Path) و مسیر نسبی (Relative Path). این مفاهیم به سیستمعامل میگویند که یک فایل یا دایرکتوری دقیقاً در کجای ساختار درختی قرار دارد.
-
ریشه (Root): بالاترین سطح در ساختار دایرکتوری لینوکس که با یک اسلش (
/) نشان داده میشود. همه چیز از این نقطه شروع میشود. -
مسیر مطلق: مسیری است که از ریشه (
/) شروع میشود و مسیر کامل و بدون ابهام یک فایل یا دایرکتوری را مشخص میکند. این مسیر مستقل از دایرکتوری فعلی شماست و همیشه یکسان است./home/username/Documents/report.pdf
-
مسیر نسبی: مسیری است که از دایرکتوری فعلی (Current Directory) شروع میشود. این مسیر به موقعیت فعلی شما بستگی دارد. اگر در دایرکتوری
/home/usernameباشید، مسیر نسبیDocuments/report.pdfبه فایل/home/username/Documents/report.pdfاشاره میکند.Documents/report.pdf
Home Directory
دایرکتوری خانه (Home Directory) دایرکتوری شخصی هر کاربر در سیستمعاملهای لینوکس و یونیکس است. این جایی است که کاربر میتواند فایلهای شخصی، تنظیمات و اسناد خود را ذخیره کند.
-
بهطور معمول، دایرکتوری خانه در مسیر
/home/usernameقرار دارد. برای مثال، کاربری با نامaliceدارای دایرکتوری خانهی/home/aliceاست. -
کاربر ریشه (Root) دایرکتوری خانهی جداگانهای در
/rootدارد.
~ (Tilde)
علامت تیلدا (~) یک میانبر در شل است که به دایرکتوری خانهی کاربر فعلی اشاره میکند.
-
cd ~به معنای «به دایرکتوری خانهی من برو» است و معادلcd /home/usernameمیباشد. -
~/Documentsبه مسیر/home/username/Documentsاشاره میکند. -
~otheruserبه دایرکتوری خانهی کاربرotheruserاشاره میکند (در صورت وجود مجوز).
. و .. (Dot و Dot-Dot)
در هر دایرکتوری لینوکس، دو ورودی مخفی وجود دارند که برای اشاره به خود دایرکتوری و دایرکتوری والد (Parent) آن استفاده میشوند.
-
.(یک نقطه): اشاره به همان دایرکتوری فعلی دارد. -
..(دو نقطه): اشاره به دایرکتوری والد (یک سطح بالاتر) دارد.
کاربردها
-
اجرای یک فایل در دایرکتوری فعلی:
./script.sh
این دستور یک فایل اسکریپت به نام
script.shرا که در دایرکتوری فعلی قرار دارد، اجرا میکند. -
رفتن به دایرکتوری والد:
cd ..
شما را یک سطح به بالا میبرد.
-
رفتن به دو سطح بالاتر:
cd ../..
-
کپی کردن فایل از دایرکتوری والد به دایرکتوری فعلی:
cp ../file.txt .
فایل
file.txtرا از دایرکتوری والد به دایرکتوری فعلی کپی میکند. نقطهی انتهایی (.) به عنوان مقصد، به خودِ دایرکتوری فعلی اشاره دارد. -
فهرستکردن محتویات دایرکتوری والد:
ls .