محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

کاملترین آموزش مدیریت فایل در لینوکس | Linux File Management

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

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

آموزش مدیریت فایل در لینوکس قسمت 1 : دستور move ، copy  و rename

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

برای مثال شما قرار نیست برای کپی کردن هزاران فایل با پسوند یا قسمتی از اسامی مشترک همه آنها را بصورت تک تک کپی یا move کنید بلکه به سادگی با استفاده از wildcard ها می توانید اینکار را انجام بدهید. در خصوص جستجوی فایل ها ما در این مقاله یاد میگیریم که چگونه فایل ها را با استفاده از پارمترهایی مثل اندازه یا size آنها ، پارامتر نوع یا type و پارامتر تاریخ یا date جستجو کنیم. در انتهای این سری آموزشی ما با دستوراتی مثل dd ، tar ، cpio ، bzipz و unzip نیز برای مدیریت فایل ها آشنا خواهیم شد ، بگذریم و به سراغ اصل مطلب برویم ، در اولین گام می خواهیم فایل ها را کپی کنیم :

کپی کردن فایل ها در لینوکس

شما می توانید با استفاده از دستور cp فایل ها را در لینوکس کپی کنید ، cp مخفف کلمه copy است و مشابه تقریبا همه دستوراتی که در سیستم عامل های خانواده لینوکس و یونیکس وجود دارند بصورت مخفف نوشته می شود. خوب در این قسمت از آموزش ما در توسینسو دو دستور متنوع از copy کردن را به شما یاد می دهیم ، در واقع باید بدانید که ما با استفاده از دستور cp بصورت خالی نمی توانیم folder ها یا پوشه ها را کپی کنیم

و مجبور هستیم که از پارامتری به شکل R که مخفف Recursive یا بازگشتی است برای کپی کردن فایل ها استفاده کنیم ، خوب فرض کنید که با تفاسیری که ما داشته ایم ما در مسیر جاری سیستم یک Folder به نام F1 و دو عدد فایل به نام 1.txt و 2.txt داریم که قرار است دستورات را با این فایل ها تست کنیم ، برای اینکه مطمئن شویم این فایل ها وجود دارند با استفاده از دستور ls اینکار را مشابه زیر وارد می کنیم :

root@itpro-kali:~# ls
1.txt  2.txt  F1

همانطور که نتیجه دستور بالا مشاهده می کنید ما دو عدد فایل به نامهای 1.txt و 1.txt در کنار یک پوشه به نام F1 داریم. خوب اگر ما بخوایم محتوای یکی از فایل های بالا را برای مثال 1.txt را کپی کرده و تبدیل به فایلی با همان محتوا با اسم 3.txt بکنیم بایستی دستور زیر را وارد کنیم :

root@itpro-kali:~# cp 1.txt 3.txt
root@itpro-kali:~# ls
1.txt  2.txt  3.txt  Desktop  F1

همانطور که در بالا مشاهده می کنید فایل 3.txt با همان محتوای 1.txt ایجاد شد. حالا فرض کنید که ما قرار است محتویات F1 را بصورت کامل در پوشه ای دیگر به نام F2 کپی کنیم ، برای اینکار اگر به تنهایی از کلید cp استفاده کنید کار انجام نمی شود و بایستی با استفاده از پارامتر –R در در دستور cp آنها را بصورت Recursive با محتویات کپی کنیم ، می توانید نتیجه را در دستورات زیر مشاهده کنید :

root@itpro-kali:~# cp F1 F2
cp: omitting directory `F1'
root@itpro-kali:~# cp -R F1 F2
root@itpro-kali:~# ls
1.txt  2.txt  3.txt  F1  F2

در دستور اول ما سعی کردیم که F1 را با محتویات درون Folder جدیدی به نام F2 کپی کنیم که با خطای omitting directory مواجه شدیم ، برای حل این مشکل بایستی دستور را با سویچ –R استفاده کنیم که همانطور که در ادامه دستورات مشاهده می کنید کلیه محتویات F1 داخل پوشه ای دیگر به نام F2 کپی شدند. می توانید با استفاده از دستور ls F* محتویات هر دو پوشه F1 و F2 را بصورت مقایسه ای مشابه دستور زیر مشاهده کنید :

root@itpro-kali:~# ls F*
F1:
1.txt  2.txt  3.txt

F2:
1.txt  2.txt  3.txt

همانطور که در بالا مشاهده می کنید همه محتویات F1 و F2 یکسان هستند. دستور cp فقط همین تعداد پارامتر ندارد و دارای تعداد زیاد پارامتر می باشد ، شما می توانید با استفاده از وارد کردن دستور man cp راهنمای کار کردن با آن را مشاهده کنید و به سادگی از میان آنها انتخاب کنید ، برای مثال همین پارامتر R به دو صورت دیگر قابل استفاده می باشد :

root@itpro-kali:~# man cp
CP(1)                            User Commands                           CP(1)

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --archive
              same as -dR --preserve=all

       --attributes-only
              don't copy the file data, just the attributes
 Manual page cp(1) line 1 (press h for help or q to quit)

دستور بالا خروجی manual یا راهنمای استفاده از دستور cp را نمایش می دهد ، مهمترین سویچی که در امتحان بین المللی lpic باید در نظر داشته باشید و البته کاربردی باشد R است که بتوانید پوشه ها را نیز کپی کنید ، در آینده در این خصوص بیشتر صحبت خواهیم کرد.

دستور بعدی که قصد صحبت کردن در خصوص آن را داریم دستور mv است که طبیعتا مخفف کلمه move یا انتقال است ، این دستور بعضا می تواند خیلی خطرناک هم باشد زیرا امکان move کردن به هر جایی را به شما می دهد ، البته استفاده دیگری که می توان از دستور mv کرد rename کردن فایل ها است ، در واقع ما در لینوکس دستوری به نام rename نداریم و بایستی با استفاده از دستور mv اینکار را انجام دهیم ، به مثال زیر توجه کنید ما فایل 1.txt را به فایل a.txt تبدیل می کنیم و خروجی را به شما نمایش می دهیم :

root@itpro-kali:~# mv 1.txt a.txt
root@itpro-kali:~# ls
2.txt  3.txt  a.txt  F1  F2

همانطور که مشاهده کردید فایل 1.txt تبدیل به فایل a.txt شد ، اما اگر بخواهیم یک فایل را به درون یک folder منتقل کنیم ، بایستی به روش زیر عمل کنیم دستور mv سپس نام فایل و بعد از آن مقصدی که قصد move کردن را داریم را مشخص می کنیم ، دستور زیر فایل a.txt را به درون فولدر F1 منتقل می کند :

root@itpro-kali:~# mv a.txt F1
root@itpro-kali:~# ls F*
F1:
1.txt  2.txt  3.txt  a.txt

F2:
1.txt  2.txt  3.txt
root@itpro-kali:~#

همانطور که مشاهده می کنید فایل a.txt به درون فولدر F1 منتقل شد. همچنین شما می توانید یک فولدر را بصورت کامل در فولدر دیگر کپی کنید ، برای مثال ما در مثال زیر F1 را بصورت کامل در F2 منتقل می کنیم :

root@itpro-kali:~# mv F1 F2
root@itpro-kali:~# ls
2.txt  3.txt  Desktop  F2
root@itpro-kali:~# ls F2
1.txt  2.txt  3.txt  F1

همانطور که در دستور بالا مشاهده می کنید ما F1 را به داخل F2 منتقل کردیم و محتویات F2 را مشاهده کردیم. خوب شما با استفاده از دستور man mv هم می توانید manual این دستور را مشاهده کنید و سویچ ها و پارامترهای مختلف آن را مشاهده کنید. در قسمت بعدی با دستورات دیگری در خصوص مدیریت فایل با شما در توسینسو خواهیم بود.

آموزش مدیریت فایل در لینوکس قسمت 2 : دستور remove

در قسمت قبلی از سری آموزش های مدیریت مقدماتی فایل ها در لینوکس به بحث نحوه move کردن ، copy کردن و rename کردن فایل ها و فولدرها در لینوکس پرداختیم ، الان می خواهیم در خصوص نحوه حذف کردن فایل ها و فولدرها صحبت کنیم ، برای اینکار ما از دستوری به نام rm استفاده می کنیم که طبق معمول مخفف شده کلمه remove است . استفاده از دستور rm بسیار ساده است ، کافیست شما دستور rm به علاوه نام فایل مورد نظرتان را مشابه دستور زیر وارد کنید تا فایل مورد نظر حذف شود به مثال زیر دقت کنید که ما فایل a.txt را حذف می کنیم :

root@itpro-kali:~# ls
2.txt  3.txt  a.txt  F2
root@itpro-kali:~# rm a.txt
root@itpro-kali:~# ls
2.txt  3.txt  F2

خوب همانطور که دستور بالا مشاهده می کنید ما فایل a.txt را به وسیله دستور rm حذف کردیم . توجه کنید که در برخی از توزیع های لینوکس بصورت پیشفرض سویچ یا پارامتر –i وجود دارد ، این حرف مخفف interactive است و در هر بار وارد کردن دستور rm از شما سئوال می کند که آیا شما مطمئن هستید که می خواهید فایل مورد نظر را حذف کنید یا خیر و در این حالت شما باید حرف y به معنی موافقت را مشابه مثال زیر وارد کنید :

root@itpro-kali:~# rm -i 2.txt 
rm: remove regular file `2.txt'? y
root@itpro-kali:~# ls
3.txt  F2

همانطور که در دستور بالا مشاهده می کنید از ما سئوال شد که آیا می خواهید فایل مورد نظر حذف شود یا خیر و پاسخ y یا yes بود. اما به مثال زیر هم توجه کنید ، ما می خواهیم folder ای به نام F2 را حذف کنیم و دستور rm را با روش معمول وارد می کنیم :

root@itpro-kali:~# rm F2/
rm: cannot remove `F2/': Is a directory

همانطور که در نتیجه دستور بالا مشاهده می کنید شما نمی توانید به سادگی یک Folder را با استفاده از دستور rm حذف کنید و بایستی برای اینکار از یک پارامتر به شکل –r استفاده می کنیم ، به مثال زیر دقت کنید ، ما ابتدا محتویات F2 را به شما نمایش داده ایم و سپس با استفاده از دستور rm و پارامتر مورد نظر F2 را با محتویاتش حذف می کنیم ، r مشابه دستور کپی مخفف Recursive است :

root@itpro-kali:~# ls F2
1.txt  2.txt  3.txt  F1
root@itpro-kali:~# rm -r F2
root@itpro-kali:~# ls
3.txt 

همانطور که در دستور بالا مشاهده می کنید ما F2 را به همراه محتواتش حذف کردیم و دیگر فولدری به این نام وجود نخواهد داشت. اما می خواهیم خطرناکترین دستور حذف در لینوکس و یونیکس را نیز به شما معرفی کنیم ، اگر شما با کاربر root در سیستم login باشید و دستور rm با سویچ های –f و –r را همزمان اجرا کنید در ریشه دایرکتوری ها ، هیچ فایلی در سیستم عامل شما باقی نخواهد ماند

و همه چیز بدون قابلیت بازگردانی حذف خواهند شد ، این ترسناکترین دستوری است که شما در لینوکس برای حذف می توانید استفاده کنید ، هیچوقت این دستور را در لینوکس تست نکنید ، من دستور مورد نظر را بعد از گرفتن snapshot از ماشین مجازی برای شما تست می کنم که قابلیت بازگردانی یا به قول ITPRO دکمه غلط کردم را داشته باشم ، دستور زیر فیهاخالدون لینوکس را حذف می کند :

root@itpro-kali:~# rm -rf / 

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

آموزش مدیریت فایل در لینوکس قسمت 3 : دستور touch و file

در قسمت های قبلی از سری آموزشی مدیریت مقدماتی فایل ها در لینوکس با نحوه جستجو ، Cut و Copy ، Rename کردن و حذف کردن فایل ها آشنا شدیم. اما ما هنوز به شما آموزش نداده ایم که چگونه یک فایل ایجاد کنید ؟ شما می توانید براحتی با استفاده از دستور touch یک فایل خالی ایجاد کنید ، برای مثال دستور زیر برای شما یک فایل به اسم 4.txt را ایجاد می کند :

root@itpro-kali:~# touch 4.txt
root@itpro-kali:~# ls
2.txt  3.txt  4.txt  a.txt  F2

همانطور که دیدید فایل 4.txt ایجاد شد ، اگر شما دستور touch را برای یکی از فایل هایی که وجود دارد استفاده کنید زمان تغییر یا modified time فایل مورد نظر تغییر می کند ، در واقع این دستور هیچ کاری بر روی فایل های جاری بصورت پیشفرض انجام نمی دهد. برای مثال من دستور touch را برای فایل 4.txt که هیچ محتوایی ندارد دو بار در وهله های زمانی یک دقیقه وارد می کنم و نتیجه را مشاهده خواهید کرد :

root@itpro-kali:~# touch 4.txt
root@itpro-kali:~# ls -l 4.txt 
-rw-r--r-- 1 root root 0 Jun  6 03:53 4.txt
root@itpro-kali:~# touch 4.txt 
root@itpro-kali:~# ls -l 4.txt 
-rw-r--r-- 1 root root 0 Jun  6 03:54 4.txt

همانطور که در خروجی دستور بالا مشاهده می کنید ، در دستور touch دوم تاریخ تغییرات و زمان عوض شده است و یک دقیقه جلوتر را نمایش می دهد. خوب در ادامه در خصوص نحوه اعمال تغییرات در خصوص فایل ها می پردازیم ، خوب ما در اینجا چند فایل بصورت مثال درست می کنیم. خوب ما یک فولدر به نام unity و یک Folder به نام F1 با محتویات پیشفرض ایجاد می کنیم برای ایجاد کردن این دو فولدر مشابه دستور زیر با استفاده از mkdir این دو پوشه را ایجاد می کنیم :

root@itpro-kali:~# mkdir F1
root@itpro-kali:~# mkdir unity
root@itpro-kali:~# ls -l
total 28
-rw-r--r-- 1 root root 1688 Jun  5 09:40 2.txt
-rw-r--r-- 1 root root 1689 Jun  5 09:46 3.txt
-rw-r--r-- 1 root root    0 Jun  6 03:54 4.txt
-rw-r--r-- 1 root root 1689 Jun  5 11:35 a.txt
drwxr-xr-x 4 root root 4096 Jun  5 09:41 Desktop
drwxr-xr-x 2 root root 4096 Jun  6 03:58 F1
drwxr-xr-x 3 root root 4096 Jun  5 10:11 F2
drwxr-xr-x 2 root root 4096 Jun  6 03:58 unity

همانطور که در دستورات بالا مشاهده می کنید ما در خروجی دستور ls می توانیم Folder ها و فایل های ساخته شده را بصورت منظم و مرتب مشاهده کنیم. حالا اگر بخواهیم یک Folder را حذف کنیم با استفاده از دستور rmdir و بردن اسم فولدر مشابه مثال پایین فولدر به وجود آمده را حذف می کنیم :

root@itpro-kali:~# rmdir unity
root@itpro-kali:~# ls -l
total 24
-rw-r--r-- 1 root root 1688 Jun  5 09:40 2.txt
-rw-r--r-- 1 root root 1689 Jun  5 09:46 3.txt
-rw-r--r-- 1 root root    0 Jun  6 03:54 4.txt
-rw-r--r-- 1 root root 1689 Jun  5 11:35 a.txt
drwxr-xr-x 4 root root 4096 Jun  5 09:41 Desktop
drwxr-xr-x 2 root root 4096 Jun  6 03:58 F1
drwxr-xr-x 3 root root 4096 Jun  5 10:11 F2

خوب همانطور که در نتیجه دستور بالا مشاهده می کنید ما unity را حذف کردیم. اگر ما در لینوکس بخواهیم نوع یک فایل را تشخیص بدهیم می توانیم از دستوری به نام file و بردن اسم فایل در جلو آن استفاده کنیم ، برای مثال ما دو فایل زیر که یکی از آنها 2.txt و دیگری a.txt است را با استفاده از دستور file مشاهده می کنیم :

root@itpro-kali:~# file 2.txt 
2.txt: ASCII text
root@itpro-kali:~# file a.txt 
a.txt: ASCII text
root@itpro-kali:~# file *
2.txt:   ASCII text
3.txt:   ASCII text
4.txt:   empty
a.txt:   ASCII text
Desktop: directory
F1:      directory
F2:      directory

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

همانطور که در نتیجه آخرین دستور مشاهده می کنید ، فایل هایی بصورت خالی یا emty و دایرکتوری نمایش داده شده اند. دستور file برای نمایش کلیه اطلاعات در خصوص نوع محتوای یک ماهیت استفاده می شود و در لینوکس همه چیز ماهیت فایل دارند ، در قسمت بعدی از این سری آموزشی ما به شما نحوه استفاده از wildcard ها یا قابلی globing را معرفی خواهیم کرد.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات