لینوکس امکانات قدرتمندی برای مدیریت فایلها و دایرکتوریها از طریق خط فرمان (CLI) ارائه میدهد. در حالی که مدیران فایل گرافیکی برای وظایف ساده مناسب هستند، دستورات CLI امکان اجرای عملیات پیچیده را با دقت بالا فراهم میکنند.
این مقاله پنج دستور مهم لینوکس برای مدیریت فایلها و دایرکتوریها، و همچنین ویلدکارتها (Wildcards) را بررسی میکند که انتخاب فایلها را سادهتر میسازند.
دستورات ضروری مدیریت فایل و دایرکتوری
دستورات زیر برای مدیریت فایلها و دایرکتوریها در لینوکس استفاده میشوند:
cp – کپی کردن فایلها و دایرکتوریها
mv – انتقال یا تغییر نام فایلها و دایرکتوریها
mkdir – ایجاد دایرکتوری جدید
rm – حذف فایلها و دایرکتوریها
ln – ایجاد لینکهای سخت و نمادین
استفاده از خط فرمان قابلیتهایی فراتر از مدیریت فایلهای ساده ارائه میدهد. بهعنوان مثال، کپی کردن فایلهای HTML فقط در صورتی که نسخه جدیدتری در مقصد وجود نداشته باشد، میتواند با دستور زیر انجام شود:
cp -u *.html destination
این دستور تضمین میکند که تنها فایلهای جدید یا تغییریافته کپی شوند، از کپیهای غیرضروری جلوگیری میشود.
درک ویلدکارتها در لینوکس
ویلدکارتها به کاربران اجازه میدهند چندین فایل را بر اساس الگوهای مشخص انتخاب کنند، که باعث مدیریت آسانتر فایلها میشود. این کاراکترهای خاص به الگوهای گلوبینگ (Globbing Patterns) نیز معروفاند.
ویلدکارتهای پرکاربرد
ویلدکارت | معنی |
* | با هر کاراکتری مطابقت دارد |
? | با یک کاراکتر مطابقت دارد |
[کاراکترها] | با هر کاراکتری که در مجموعه تعریفشده باشد، مطابقت دارد |
[!کاراکترها] | با هر کاراکتری که در مجموعه تعریفشده نباشد، مطابقت دارد |
[[:class:]] | با هر کاراکتری که متعلق به کلاس تعریفشده باشد، مطابقت دارد |
کلاسهای کاراکتر پرکاربرد
کلاس کاراکتر | معنی |
[:alnum:] | با هر حرف یا عدد مطابقت دارد |
[:alpha:] | با هر حرف الفبایی مطابقت دارد |
[:digit:] | با هر عدد مطابقت دارد |
[:lower:] | با هر حرف کوچک مطابقت دارد |
[:upper:] | با هر حرف بزرگ مطابقت دارد |
ویلدکارتها امکان انتخاب فایلها برای عملیات پیچیده را فراهم میکنند. در زیر مثالهایی از الگوهای ویلدکارت و کاربرد آنها آورده شده است:
الگو | مطابقت با فایلهای |
| تمام فایلها |
g | فایلهایی که با حرف "g" شروع میشوند |
b.txt | فایلهایی که با "b" شروع شده و با .txt پایان مییابند |
Data??? | فایلهایی که با "Data" شروع شده و دقیقاً سه کاراکتر دیگر دارند |
[abc] | فایلهایی که با یکی از حروف "a"، "b" یا "c" شروع میشوند |
BACKUP.[0-9][0-9][0-9] | فایلهایی که با "BACKUP." شروع شده و پس از آن سه عدد دارند |
ایجاد دایرکتوری با mkdir
دستور mkdir به کاربران اجازه میدهد دایرکتوریهای جدید را بهصورت ساده ایجاد کنند. دستور پایه به این شکل است:
mkdir نام_دایرکتوری
همچنین میتوان چندین دایرکتوری را همزمان ایجاد کرد:
mkdir dir1 dir2 dir3
این دستور سه دایرکتوری مجزا با نامهای dir1، dir2 و dir3 ایجاد خواهد کرد.
مدیریت فایلها و دایرکتوریها یکی از مهمترین مهارتها در کار با لینوکس است. در حالی که رابطهای گرافیکی برای انجام عملیات ساده مناسب هستند، ابزارهای خط فرمان قدرت و انعطافپذیری بیشتری برای اجرای وظایف پیچیده فراهم میکنند.
این مقاله به بررسی دستورات cp، mv، rm و ln میپردازد و گزینههای کاربردی، مثالهای عملی و نکات مهم را توضیح میدهد.
کپی کردن فایلها و دایرکتوریها با cp
دستور cp برای کپی کردن فایلها و دایرکتوریها به روشهای مختلف استفاده میشود:
کپی یک فایل:
cp item1 item2
این دستور item1 را به item2 کپی میکند. اگر item2 وجود داشته باشد، دادهها روی آن بازنویسی میشوند.
کپی چندین فایل به یک دایرکتوری:
cp item... directory
این دستور چندین فایل یا دایرکتوری را به دایرکتوری مقصد کپی میکند.
گزینههای کاربردی cp
گزینه | معنی |
-a, --archive | حفظ خصوصیات فایل (مالکیت، مجوزها) هنگام کپی. |
-i, --interactive | در صورت بازنویسی فایل موجود، از کاربر تأیید بگیرد. |
-r, --recursive | کپی دایرکتوریها و محتویات آنها بهصورت بازگشتی. |
-u, --update | کپی کردن فقط فایلهای جدید یا تغییریافته. |
-v, --verbose | نمایش پیامهای وضعیت هنگام کپی. |
مثالهای عملی cp
cp file1 file2 # کپی file1 به file2، بازنویسی در صورت نیاز
cp -i file1 file2 # درخواست تأیید قبل از بازنویسی file2
cp file1 file2 dir1 # کپی file1 و file2 به دایرکتوری dir1
cp -r dir1 dir2 # کپی کامل محتویات dir1 به dir2
انتقال و تغییر نام فایلها با mv
دستور mv برای انتقال فایلها بین مسیرها یا تغییر نام آنها استفاده میشود.
انتقال یا تغییر نام فایل:
mv item1 item2
این دستور item1 را به item2 منتقل کرده و فایل اصلی را حذف میکند.
گزینههای کاربردی mv
گزینه | معنی |
-i, --interactive | قبل از بازنویسی فایل موجود، از کاربر تأیید بگیرد. |
-u, --update | انتقال فقط فایلهای جدید. |
-v, --verbose | نمایش پیامهای وضعیت هنگام انتقال. |
مثالهای عملی mv
mv file1 file2 # تغییر نام یا انتقال file1 به file2
mv -i file1 file2 # درخواست تأیید قبل از بازنویسی file2
mv file1 file2 dir1 # انتقال file1 و file2 به dir1
mv dir1 dir2 # انتقال dir1 به dir2
حذف فایلها و دایرکتوریها با rm
دستور rm برای حذف دائمی فایلها و دایرکتوریها استفاده میشود. با احتیاط استفاده کنید!
حذف یک فایل:
rm item
این دستور فایل مشخصشده را حذف میکند.
گزینههای کاربردی rm
گزینه | معنی |
-i, --interactive | قبل از حذف، از کاربر تأیید بگیرد. |
-r, --recursive | حذف بازگشتی دایرکتوریها و محتویات آنها. |
-f, --force | حذف بدون پیام و بدون توجه به خطا. |
-v, --verbose | نمایش پیامهای وضعیت حذف. |
مثالهای عملی rm
rm file1 # حذف file1
rm -i file1 # درخواست تأیید قبل از حذف file1
rm -r dir1 # حذف dir1 و تمام محتویات آن
rm -rf dir1 # حذف اجباری dir1 (احتیاط کنید!)
ایجاد لینکها با ln
دستور ln برای ایجاد لینکهای سخت یا نمادین استفاده میشود.
ایجاد لینک سخت:
ln file link
ایجاد یک نام ثانویه (link) که به همان فایل اشاره دارد.
ایجاد لینک نمادین:
ln -s item link
ایجاد یک میانبر (link) که به مسیر فایل اصلی (item) اشاره دارد.
لینکهای نمادین در لینوکس برای رفع محدودیتهای لینکهای سخت ایجاد شدند. آنها نوع خاصی از فایل هستند که یک اشارهگر متنی به فایل یا دایرکتوری موردنظر ذخیره میکنند، مشابه میانبرهای ویندوز—البته این قابلیت سالها پیش از ویندوز در یونیکس وجود داشته است.
این مقاله لینکهای نمادین، لینکهای خراب، و همچنین راهنمای عملی دستورات مدیریت فایل مانند mkdir، cp و mv را بررسی میکند.
درک لینکهای نمادین
یک لینک نمادین مانند فایل اصلی رفتار میکند:
نوشتن در لینک نمادین روی فایل اصلی تأثیر میگذارد.
حذف لینک نمادین باعث حذف فایل اصلی نمیشود.
اگر فایل اصلی حذف شود، لینک نمادین همچنان وجود دارد ولی به هیچ چیزی اشاره نمیکند—که به آن لینک خراب میگویند.
در بسیاری از توزیعهای لینوکس، لینکهای خراب در ls با رنگهای متفاوت (مثلاً قرمز) نمایش داده میشوند تا قابلتشخیص باشند.
ایجاد محیط آزمایشی (Playground)
برای آزمایش دستورات مدیریت فایل، یک دایرکتوری اختصاصی ایجاد میکنیم:
cd ~
mkdir playground
cd playground
mkdir dir1 dir2
کپی کردن فایلها با cp
اکنون یک فایل سیستمی (passwd) را به دایرکتوری Playground کپی میکنیم:
cp /etc/passwd .
ls -l
این دستور نمایش میدهد:
total 12
drwxrwxr-x 2 user user 4096 dir1
drwxrwxr-x 2 user user 4096 dir2
-rw-r--r-- 1 user user 1650 passwd
استفاده از cp با گزینههای اضافی
cp -v /etc/passwd .
نمایش نتیجه:
`/etc/passwd' -> `./passwd'
اگر یک فایل قبلاً وجود داشته باشد، cp آن را بدون هشدار بازنویسی میکند! برای دریافت هشدار قبل از بازنویسی، از گزینه interactive استفاده کنید:
cp -i /etc/passwd .
cp: overwrite `./passwd'?
فشار دادن y فایل را بازنویسی میکند؛ فشار دادن n آن را تغییر نمیدهد.
انتقال و تغییر نام فایلها با mv
از آنجا که passwd نام جذابی نیست، آن را تغییر نام میدهیم:
mv passwd fun
اکنون فایل را بین دایرکتوریها جابهجا میکنیم:
mv fun dir1
mv dir1/fun dir2
mv dir2/fun .
این امکان را فراهم میکند که فایل را بهراحتی بین مسیرها حرکت دهیم.
انتقال دایرکتوریها
اکنون یک دایرکتوری را جابهجا میکنیم:
mv fun dir1
mv dir1 dir2
ls -l dir2
ls -l dir2/dir1
اگر dir2 قبلاً وجود داشته باشد، dir1 درون dir2 منتقل میشود. اگر dir2 وجود نداشته باشد، mv نام dir1 را به dir2 تغییر میدهد.
بازگرداندن Playground به وضعیت قبل
mv dir2/dir1 .
mv dir1/fun .
لینکهای سخت و لینکهای نمادین دو روش مهم در مدیریت فایلهای لینوکس هستند. لینکهای سخت به یک شماره شناسایی (inode) اشاره میکنند، در حالی که لینکهای نمادین یک فایل جداگانه هستند که مسیر فایل اصلی را ذخیره میکنند.
این مقاله نحوه ایجاد لینکهای سخت و نمادین را توضیح داده و بررسی میکند که چگونه عملیات مدیریت فایل مانند rm و mv روی این لینکها تأثیر میگذارد.
ایجاد لینکهای سخت
برای آزمایش، یک فایل داده (fun) داریم و میخواهیم چندین لینک سخت برای آن ایجاد کنیم:
ln fun fun-hard
ln fun dir1/fun-hard
ln fun dir2/fun-hard
اکنون چهار نسخه از فایل fun داریم که همگی به یک inode مشترک اشاره دارند.
بررسی لینکهای سخت با ls -li
ls -li
نتیجه:
12353538 -rw-r--r-- 4 user user 1650 fun
12353538 -rw-r--r-- 4 user user 1650 fun-hard
این دو فایل یک شماره inode یکسان دارند، که تأیید میکند هر دو در واقع یک فایل هستند.
ایجاد لینکهای نمادین
برخلاف لینکهای سخت، لینکهای نمادین دارای محدودیتهای کمتر هستند:
میتوانند از یک پارتیشن به پارتیشن دیگر ایجاد شوند
میتوانند به دایرکتوریها اشاره کنند
ایجاد لینکهای نمادین در لینوکس
ln -s fun fun-sym
ln -s ../fun dir1/fun-sym
ln -s ../fun dir2/fun-sym
در مثالهای بالا، لینک نمادین فقط حاوی مسیر فایل اصلی است و ls -l نشان میدهد:
lrwxrwxrwx 1 user user 6 fun-sym -> ../fun
لینک نمادین fun-sym به ../fun اشاره میکند، که نشان میدهد فایل هدف در مسیر بالاتر قرار دارد.
استفاده از مسیر مطلق و نسبی
میتوان لینک نمادین را با مسیر مطلق یا مسیر نسبی ایجاد کرد:
ln -s /home/user/playground/fun dir1/fun-sym
استفاده از مسیر نسبی بهتر است زیرا اگر دایرکتوریها جابهجا شوند، لینکها خراب نمیشوند.
حذف فایلها و لینکها با rm
اکنون لینکهای سخت و نمادین را حذف میکنیم و تأثیر آن را بررسی میکنیم.
rm fun-hard
ls -l
پس از حذف، مقدار لینکها از ۴ به ۳ کاهش یافته است.
حذف فایل اصلی و تأثیر آن روی لینک نمادین
rm -i fun
هنگام حذف، ls -l لینک نمادین را به رنگ قرمز یا شکستهشده نمایش میدهد:
lrwxrwxrwx 1 user user 3 fun-sym -> fun
اکنون لینک نمادین وجود دارد، اما به فایل حذفشده اشاره میکند.
پاکسازی لینکهای نمادین و دایرکتوریها
rm fun-sym dir1-sym
rm -r playground
تمام لینکهای شکسته و دایرکتوریها حذف شدند.