ما در مقاله قبل به بررسی ساختار فایل ها و دایرکتوری ها در لینوکس یا همان استاندارد FHS پرداختیم و کمی دایرکتوری های مهم رو براتون شرح دادیم. در این مقاله قصد داریم تا مسائل مدیریتی فایل ها و دایرکتوری ها در لینوکس رو براتون توضیح بدیم. امیدواریم که از این آموزش استفاده ببرید.
همونطور که قبلا توضیح دادیم همه داده ها در لینوکس در فایل سازماندهی میشوند. همه فایل ها نیز در دایرکتوری سازماندهی میشوند. و همه این دایرکتوری ها در ساختار درختی تعریف میشوند. وقتی شما با یونیکس یا لینوکس کار میکنید بیشتر وقت شما صرف کار کردن با فایل ها میشه. در این بخش از آموزش قصد داریم کار با فایل ها رو به شما آموزش بدیم.
انواع فایل در لینوکس
۱) فایل های معمولی یا Ordinary Files: فایل های معمولی اون دسته از فایل هایی هستند که که شامل متن دیتا یا قطعه کد برنامه به هر زبانی میباشند. که در این بخش من قصد دارم به همین دسته از فایل ها بپردازم.
۲) دایرکتوری ها یا Directories: دایرکتوری ها میتوانند در خود دو دسته از فایل های ساده و مخصوص رو نگه داری کنند. برای کاربرانی که با ویندوز یا mac کار گردند میتونم بگم که تقریبا دایرکتوری ها همون فولدر ها هستند.
۳) فایل های مخصوص یا Special Files: بعضی فایل های مخصوص هم در یونیکس وجود داره که ازون ها برای دسترسی به سخت افزار درایو های هارد مودم ها و … استفاده میشود.
لیست کردن فایل ها
برای لیست کردن فایل ها و دایرکتوری ها باید در دایرکتوری که در اون حضور دارید از دستور ls استفاده کنید:
1 2 3 4 |
blog@Arshatech:~$ ls bin dev initrd.img lib64 media proc sbin tmp vmlinuz boot etc initrd.img.old lost+found mnt root srv usr vmlinuz.old cdrom home lib opt run sys var |
دستور ls به شما اختیارات دیگری هم میدهد که مثلا بتوانید همین خروجی را با جزئیات بیشتری مشاهده نمایید. برای این کار از l- باید استفاده کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
total 100 drwxr-xr-x 2 root root 4096 Jan 18 07:44 bin drwxr-xr-x 3 root root 4096 Feb 1 08:31 boot drwxrwxr-x 2 root root 4096 Oct 3 2015 cdrom drwxr-xr-x 17 root root 4380 Mar 26 07:04 dev drwxr-xr-x 152 root root 12288 Mar 26 07:04 etc drwxr-xr-x 5 root root 4096 Mar 10 2016 home lrwxrwxrwx 1 root root 34 Feb 1 08:12 initrd.img -> boot/initrd.img-3.13.0-141-generic lrwxrwxrwx 1 root root 34 Jan 10 06:06 initrd.img.old -> boot/initrd.img-3.13.0-139-generic drwxr-xr-x 23 root root 4096 Jan 10 05:57 lib drwxr-xr-x 2 root root 4096 Jan 18 07:43 lib64 drwx------ 2 root root 16384 Oct 3 2015 lost+found drwxr-xr-x 16 lsc lsc 4096 Mar 7 15:20 lsc drwxr-xr-x 3 root root 4096 Oct 4 2015 media drwxr-xr-x 2 root root 4096 Apr 10 2014 mnt drwxr-xr-x 3 root root 4096 Dec 2 14:30 opt dr-xr-xr-x 267 root root 0 Mar 26 07:03 proc drwx------ 8 root root 4096 Nov 22 11:20 root drwxr-xr-x 29 root root 1000 Mar 26 07:04 run drwxr-xr-x 2 root root 12288 Jan 18 07:44 sbin drwxr-xr-x 2 root root 4096 Apr 16 2014 srv dr-xr-xr-x 13 root root 0 Mar 26 07:03 sys drwxrwxrwt 7 root root 4096 Mar 26 09:49 tmp drwxr-xr-x 10 root root 4096 Apr 16 2014 usr drwxr-xr-x 14 root root 4096 Oct 22 14:51 var lrwxrwxrwx 1 root root 31 Feb 1 08:12 vmlinuz -> boot/vmlinuz-3.13.0-141-generic lrwxrwxrwx 1 root root 31 Jan 10 06:06 vmlinuz.old -> boot/vmlinuz-3.13.0-139-generic |
ستون های به نمایش در اومده هر کدوم توضیحی داره که از چپ به راست به اون می پردازیم:
- ستون اول: این ستون به ارائه اطلاعاتی درباره اجازه های دسترسی به هر فایل یا دایرکتوری ارائه میکند که در ادامه به توضیح ستون اول خواهم پرداخت.
- ستون دوم: تعداد بلاک های حافظه تخصیص داده شده به فایل یا دایرکتوری خاص را نشان میدهد.
- ستون سوم: مالک یا مالکان فایل یا دایرکتوری را نشان میدهد که بیانگر کاربریست که این فایل را ایجاد کرده است.
- ستون چهارم: این ستون مشخص میکند که مالک فایل یا دایرکتوری عضو کدام گروه می باشد.
- ستون پنجم: این ستون اندازه فایل یا دایرکتوری مورد نظر را بر حسب بایت میدهد.
- ستون ششم: این ستون تاریخ و زمان که فایل ایجاد یا آخرین زمانی که اصلاح شده است را نشان میدهد.
- ستون هفتم: نام فایل یا دایرکتوری را نمایش میدهد.
همانطور که ملاحظه میکنید در ستون اول مقادیری وجود دارد که قصد دارم در ادامه اون ها رو برای شما شرح بدم. در ستون اول اولین حرفی رو که میبینید ممکنه یکی از حالات زیر رو داشته باشه: (باقی حروف که مربوط به سطح دسترسی هست در آینده شرح داده خواهد شد)
- -: نمایانگر فایل معمولی مانند فایل های متنی یا اسکی یا باینری های قابل اجرا یا hard link ها می باشد.
- b: بیانگر فایل بلاک مخصوص می باشد. میتواند شامل دیوایس های بلاک اعم از ورودی و خروجی مانند درایو های هارد فیزیکی باشد.
- c: بیانگر فایل کاراکتری مخصوص می باشد. میتواند شامل دیوایس های خام ورودی و خروجی مانند درایو های هارد فیزیکی باشد.
- d: بیانگر دایرکتوری می باشد که خود ممکن است شامل چند دایرکتوری و فایل باشد.
- l: بیانگر فایل های سیمبولیک لینک می باشد. که به فایل های معمول لینک میدهد.
- p: بیانگر نام های پایپ شده می باشد. یک مکانیزمی برای ارتباطات بین پروسه ایست.
- a: بیانگر سوکت استفاده شده برای ارتباطات بین پروسه ایست.
کاراکترهای متا
متا کاراکترها معنی خاصی در سیستم های شبه یونیکس دارند. از کاراکترهای متا میتوان به * و ? اشاره کرد. ما از ستاره برای بیان ۰ یا تعداد کاراکتر نامشخص و از علامت سوال برای بیان فقط یک کاراکتر استفاده میکنیم.
برای مثال ls ch*.doc نمایانگر لیست کردن هر فایلی که ابتدای آن ch و انتهای آن با doc. می باشد.
1 2 3 4 |
blog@Arshatech:~$ ls ch*.doc ch01-1.doc ch010.doc ch02.doc ch03-2.doc ch04-1.doc ch040.doc ch05.doc ch06-2.doc ch01-2.doc ch02-1.doc |
و اگر دستور ls *.doc را استفاده کنیم خروجی آن برابر با لیست کردن تمام فایل هاییست که در انتهای آنها حتما عبارت doc. وجود دارد.
فایل های مخفی
فایل های مخفی در لینوکس فایل هایی هستند که قابل دیدن به صورت عادی نمی باشند و همه این فایل ها با کاراکتر نقطه شروع میشوند. تعدادی از فایلهای مخفی در یونیکس که به صورت پیش فرض وجود دارند در زیر آورده شده است:
- profile. : اسکریپت آغازین محیط sh یا Bourne shell می باشد.
- kshrc. : اسکریپت آغازین محیط ksh یا Korn shell می باشد.
- cshrc. : اسکریپت آغازین محیط csh یا C shell می باشد.
- rhost. : فایل تنظیماتی مربوط به شل از راه دور می باشد.
برای اینکه بتوانید علاوه بر دیدن فایل های معمولی فایل های مخفی را هم ببینید باید به صورت زیر عمل کنید:
1 2 3 4 5 6 |
blog@Arshatech:~$ ls -a . .profile docs lib test_results .. .rhosts hosts pub users .emacs bin hw1 res.01 work .exrc ch07 hw2 res.02 .kshrc ch07.bak hw3 res.03 |
تک نقطه بیانگر Current Directory و دونقطه بیانگر Parent Directory می باشد.
ایجاد فایل
شما میتوانید با ابزاری به نام vim که یک ویرایشگر متن می باشد فایل را ایجاد و در آن متن مورد نظر خود را تایپ کنید. بعد از باز شدن فایل برای اینکه بتوانید در محیط باز شده تایپ کنید لازم است یک بار کلید i یا insert را بفشارید و متن خود را تایپ کنید:
1 2 |
This is linux file....I created it for the first time..... I'm going to save this content in this file. |
حال برای خارج شدن از حالت ادیت می بایست یک بار کلید Esc را بزنید. همچنین برای خارج شدن از آن محیط باید ترکیبی از کلید های Shift + zz را بزنید و یا عبارت !wq: را تایپ کنید و سپس اینتر کنید.
برنامه vim خود دارای آموزش های مفصلی می باشد که در آینده ان شالله برای شما بخشی از اون ها رو قرار خواهیم داد.
نمایش محتویات فایل
در یونیکس اگر میخواهید محتویات یک فایل چند خطی را ببینید میتوانید از دستور cat استفاده کنید.
1 2 3 |
blog@Arshatech:~$ cat filename This is unix file....I created it for the first time..... I'm going to save this content in this file. |
حال اگر میخواهید شماره خط های فایل نیز برای شما به نمایش در آید باید از سوئیچ b- استفاده کنید:
1 2 3 |
blog@Arshatech:~$ cat -b filename 1 This is unix file....I created it for the first time..... 2 I'm going to save this content in this file. |
تعداد کلمات در فایل
شما میتوانید تعداد کلمات را در یک فایل بشمارید. نکته قابل ذکر این است که تمامی دستورات در کنار هم میتوانند برای نوشتن یک اسکریپت بش بسیار به شما کمک کنند. این کار توسط دستوری به نام wc ممکن است.
1 2 |
blog@Arshatech:~$ wc filename 2 19 103 filename |
در خروجی سه عدد مشاهده میشود که از چپ به راست عدد اول بیانگر تعداد خطهای موجود در فایل می باشد. عدد دوم تعداد کلمات موجود در فایل و عدد سوم بیانگر تعداد بایت های فایل مورد نظر می باشد. ستون آخر نیز نام فایل را به شما نشان میدهد.
دستور کپی، تغییر نام و حذف فایل
برای کپی کردن یک فایل از دستور cp استفاده میشود.
1 |
blog@Arshatech:~$ cp source_file destination_file |
این دستور یک کپی از فایل اول با نام فایل دوم میسازد.
حال اگر میخواهید فایلی را تغییر نام بدهید باید از دستور mv استفاده کنید.
1 |
blog@Arshatech:~$ mv old_file new_file |
همچنین برای حذف یک فایل میتوانید از دستور rm استفاده کنید که توصیه میشود هنگام استفاده از این دستور خیلی مراقب باشید. چون من خیلی ها رو دیدم که سهوا خطاهای بزرگی بواسطه استفاده کردن از این دستور مرتکب شدند. برای اطمینان بیشتر میتونید در کنارش از i- استفاده کنید که قبل از حذف شدن فایل از شما سوال بپرسه که آیا مطمانید از حذف این فایل یا خیر.
1 2 |
blog@Arshatech:~$ rm filename blog@Arshatech:~$ rm filename1 filename2 filename3 |
جریان های استاندارد لینوکس
در شرایط معمولی هر برنامه لینوکس شامل ۳ جریان یا stream می باشد.
- stdin: منظور از آن Standard input یا ورودی استاندارد می باشد که در فایل تشریحی مقدار ۰ به آن تخصیص می یابد که به آن STDIN نیز گفته میشود. هر سیستم یونیکس یا لینوکس مقدار پیش فرض ورودی را از STDIN میخواند.
- stdout: منظور از آن Standard Output یا خروجی استاندارد می باشد که در فایل تشریحی مقدار ۱ به آن تخصیص می یاید که به آن STDOUT نیز گقته میشود. هر سیستم یونیکس یا لینوکس مقدار پیشفرض خروجی استاندارد را در STDOUT می نویسد.
- stderr: منظور از آن Standard Error یا خطای استاندارد می باشد که در فایل تشریحی مقدار ۲ به آن تخصیص می یابد که به آن STDERR نیز گفته میشود. هر سیستم یونیکس یا لینوکس پیام پیشفرش خطا را در STDERR می نویسد.