سیستم فایل ساختاریست که داده ها را در خود نگه می دارد و مکانیزیم و دستوراتی را برای ایجاد،دسترسی و تغییر فایل ها فراهم می کند. فایل ها ساختار های منطقی هستند که داده ها در غالب آنها ذخیره می شود.فایل مجموعه ای از داده ها ذخیره شده در هارد هستند. در لینوکس همه چیز فایل است حتی سخت افزار پیکربندی شده در روی سیستم.
دایرکتوری چیست؟
در یونیکس ها دایرکتوری همان پوشه یا Folder در ویندوز است. فایل ها در غالب دایرکتوری ها دسته بندی می شوند. دایرکتوری ها از یک دید به دو دسته : دایرکتوری ولد و دایرکتوری فرزند دسته بندی می شوند. دایرکتوری فرزند درون دایرکتوری والد قرار می گیرد. در کل هر دایرکتوری که درون دایرکتوری دیگر باشد زیر دایرکتوری یا Subdirectory گویند.
ساختار سلسله مراتبی دایرکتوری ها و زیر دایرکتوری ها تشکیل یک درخت را می دهد. هر درختی یک ریشه دارد اما ریشه درخت های کامپیوتر در بالای درخت قرار دارند. بطور مثال در ویندوز می توانیم سه درخت داشته باشیم( سه درایو) که نام ریشه های آنها C,D,E باشد. اما در یونیکس ها تنها و تنها یک درخت داریم. رشیه این درخت root نام دارد که با نماد / نشان داده می شود. (root به معنی ریشه است). Root بالاترین دایرکتوری است و بقیه دایرکتوری ها زیر این دایرکتوری هستند. برای پیمایش سیستم فایل باید از دایرکتوری root یا / شروع کنیم.
شکل زیر ساختار دایرکتوری ها را نشان می دهد.

فرض کنید می خواهیم به دایرکتوری bin (پاین ترین سطح) برویم. با دستور زیر و شروع از / دایرکتوری ها را پیمایش می کنیم.
شکل زیر یک نمای کلی از ساختار فایل در لینوکس را نشان می دهد.

سیستم فایل های رایج لینوکس :
ext2,3,4 : ext از نسخه 2 شروع و در حال حاضر نسخه 4 آن قابل استفاده است. مزیت نسخه های 3و4 نسبت به نسخه 2 ویژگی journaling نسخه های 3و4 است. که اطلاعاتی برای Recovery را فراهم می کند
Isofs : مورد استفاده CD/DVD ها
Procfs و sysfs : سیستم فایل های منطقی که روی حاضه Ram قرار می گیرند. با خاموش شدن سیستم، این سیستم فایل ها از بین می روند و با دوباره روشن شدن، توسط کرنل در حافضه Ram ساخته می شوند. دایرکتوری هایی با همین نام ها در زیر دایرکتوری / قرار می گیرد که حاوی اطلاعاتی از سیستم هستند.
NFS : سیستم فایل اشتراک دایرکتوری ها و فایل ها در شبکه.
دایرکتوری های مهم در لینوکس :
/ : دایرکتوری root و در بالاترین سطح قرار دارد.
home/ : هر کاربر در این دایرکتوری یک دایرکتوری خاص خود را دارد.
root/ : دایرکتوری به نام root زیر دایرکتوری / قرار دارد که دایرکتوری خانگی کاربر root است.
etc/ : فایل های پیکربندی سرویس ها و خود سیستم در این دایرکتوری است.
var/ : شامل mail list ها
var/log/ : در زیر دایرکتوری /var/log فایل های Log قرار دارند.
bin/ و sbin : /sbin مخفف binary ود ر این دایرکتوری ها به ترتیب دستور های عمومی و ویژه کاربر root قرار دارد.
دستور های کار با دایرکتوری :
دستور ls :
برای دیدن محتوای یک دایرکتوری بکار می رود. دارای سوئیچ های فراوانی است که آنها را می گوییم :
a : فایل های مخفی را هم نشان می دهد. در لینوکس فایل های مخفی ابتدای نامشان یک نقطه (dot) وجود دارد.
l : می توانید مجوز و مالک هر فایل را ببینید.
h : اندازه فایل را لصورا استاندارد و برحسب کیلو بایت،مگابایت و … نشان می دهد.
ls : d بصورت پیش فرض اطلاعات فایل ها و پوشه های درون دایرکتوری جاری یا دایرکتوری که شما تعیین کردید را نشان می دهد. با سوئیچ d می توان اطلاعات خو دایرکتوری جاری یا دایرکتوری که تعیین کردید را ببینید.
همچنین می توانید این پست را بخوانید.
دستور tree :
مانند دستور ls برای لیست کردن محتوا بکار مب رود اما ساختار سلسله مراتبی را نیز نشان می دهد. یعنی دایرکتوری های والد و زیر دایرکتوری ها
دارای سوئیج هایی زیادی است که مفید ترین آنها :
a : فایل های مخفی را هم نشان می دهد. در لینوکس فایل های مخفی ابتدای نامشان یک نقطه (dot) وجود دارد.
d : مانند کاربرد در دستور ls
شکل زیر احرای ساده آن است :

ایجاد و حذف دایرکتوری ها :
دستور های mkdir و rmdir به ترتیب برای ایجاد و پاک کردن دایرکتوری ها بکار می روند. بطور مثال از دستور های زیر،دستور اول یک دایرکتوری به نام newdir در دایرکتوری جاری ایجاد می کند و دستور دوم با همان نام در زیر دایرکتوری amirnami ایجاد می کند.
اما اگر می خواهید بصورت سلسله مراتبی دایرکتوری ها را بسازید باید از سوئچ p استفاده کنید. دستورهای زیر ابتدا دایرکتوری dir1 را و سپس درون آن دایرکتوری dir2 را ایجاد می کند.
حذف دایرکتوری ها با دستور rmdir انجام می شود. دستور اول Docs را از دایرکتوری جاری و دومی از درون دایرکتوری amirnami حذف می کند. اما با دستور rmdir نمی توانید دایرکتوری های سلسله مراتبی را حذف کنید. برای این کار باید از سویچ p استفاده کنید.( الته به شرطی که دایرکتوری ها خالی باشند ودر آنها هیچ فایلی نباشد)
دستور rm :
از این دستور برای پاک کردن یک فایل استفاده می کنیم. در دستور rmdir سوئیج i باعث می شود تا پیغامی برای اطمینان از حذف دایرکتوری یا دایرکتوری های سلسله مراتبی نشان داده شود. y را وارد کنید تا دایرکتوری(ها) پاک شوند در غیر انصورت n را وارد کنید.
گفتیم دستور rmdir نمی تواند دایرکتوری های سلسله مراتبی را که حتوی فایل هستند را پاک کند. برای این کار از دستور rm و سوئیچ -r بصورت زیر استفاده می کنیم.
در دستور rmdir سوئیج i باعث می شود تا پیغامی برای اطمینان از حذف دایرکتوری یا دایرکتوری های سلسله مراتبی نشان داده شود. y را وارد کنید تا دایرکتوری(ها) پاک شوند در غیر انصورت n را وارد کنید.
دستور های mv و cp :
دستور mv مخفف move مانند cut عمل می کند. این دستور یک فایل یا دایرکتوری را از جایی به جای دیگر منتقل می کند و فایل در مبدا دیگر وچود ندارد.
از دستور mv برای Rename کردن فایل هم استفاده می شود. به این صورت که مسیر های مبدا و مقصد یکی اما نام فایل متفاوت است.
در مثال زیر دستور اول کلیه فایل های درون دایرکتوری dir1 را در دایرکتوری dir2 انتقال میدهد ولی دستور دوم تنها فایل file را انتقال میدهد :
دستور cp برای کپی کردن محتوای یک دایرکتوری یا یک فایل از دایرکتوری در مسیر دیگری بکار می رود. مانند دستور mv دارای مبدا و مقصد است. فرمت کلی آن :
در مثال زیر دستور اول کلیه فایل های درون دایرکتوری dir1 را در دایرکتوری dir2 کپی می کند ولی دستور دوم تنها فایل file را کپی می کند.
قوانین نام گذاری فایل ها و دایرکتوری ها :
لینوکس سیستم عاملییست حساس به کوچکی و بزرگی حروف. یعنی filename و FileName و FILENAME تفاوت دارند. می توانید از تمامی حروف و اعداد و کارکتر _(Underline) و کارکتر های خاص استفاده کنید ولی اگر نام یک فایل یا دایرکتوری شامل فضای سفید(Tab,Space) باشد، باید پیش از آن کارکتر خاص یک علامت / بیاورید. فرض کنید با دستور mkdir یک دایرکتوری به نام new@ file می خواهید بسازید. سیستم خطایی نمی دهد ولی بجای ساختن یک دایرکتوری به دلیل وجود فضای خالی در نام، دستور آنرا دو دایرکتوری مجزا فرض می کند(دو کادر قرمز اولی و دومی نام دوفایل را نشان می دهد). حال فرض کنید بعد ساختن دایرکتوری بالا می خواهید دایرکتوری دیگری با نام file بسازید. سیستم خطا می دهد که این نام از قبل وجو داشته است.(سومین کادر قرمز)

برای رفع این مشکل باید قبل فضای خالی از یک / استفاده شود و یا اینکه کل نام فایل یا دایرکتوری را بین دو ” قرار دهیم.
نکته دیگر این است که همه چیز درلینوکس فایل است حتی دایرکتوری ها پس نمی توان در یک جا فایل ها و دایرکتوری ها همنام داشت با توجه به اینکه فایل و دایرکتوری دو چیز متفاوت هستند سیستم حتمن به شما خطا می دهد که این نام وجود دارد.
نویسنده نامی امیر
دایرکتوری چیست؟
در یونیکس ها دایرکتوری همان پوشه یا Folder در ویندوز است. فایل ها در غالب دایرکتوری ها دسته بندی می شوند. دایرکتوری ها از یک دید به دو دسته : دایرکتوری ولد و دایرکتوری فرزند دسته بندی می شوند. دایرکتوری فرزند درون دایرکتوری والد قرار می گیرد. در کل هر دایرکتوری که درون دایرکتوری دیگر باشد زیر دایرکتوری یا Subdirectory گویند.
ساختار سلسله مراتبی دایرکتوری ها و زیر دایرکتوری ها تشکیل یک درخت را می دهد. هر درختی یک ریشه دارد اما ریشه درخت های کامپیوتر در بالای درخت قرار دارند. بطور مثال در ویندوز می توانیم سه درخت داشته باشیم( سه درایو) که نام ریشه های آنها C,D,E باشد. اما در یونیکس ها تنها و تنها یک درخت داریم. رشیه این درخت root نام دارد که با نماد / نشان داده می شود. (root به معنی ریشه است). Root بالاترین دایرکتوری است و بقیه دایرکتوری ها زیر این دایرکتوری هستند. برای پیمایش سیستم فایل باید از دایرکتوری root یا / شروع کنیم.
شکل زیر ساختار دایرکتوری ها را نشان می دهد.
فرض کنید می خواهیم به دایرکتوری bin (پاین ترین سطح) برویم. با دستور زیر و شروع از / دایرکتوری ها را پیمایش می کنیم.
کد PHP:
cd /usr/local/bin
سیستم فایل های رایج لینوکس :
ext2,3,4 : ext از نسخه 2 شروع و در حال حاضر نسخه 4 آن قابل استفاده است. مزیت نسخه های 3و4 نسبت به نسخه 2 ویژگی journaling نسخه های 3و4 است. که اطلاعاتی برای Recovery را فراهم می کند
Isofs : مورد استفاده CD/DVD ها
Procfs و sysfs : سیستم فایل های منطقی که روی حاضه Ram قرار می گیرند. با خاموش شدن سیستم، این سیستم فایل ها از بین می روند و با دوباره روشن شدن، توسط کرنل در حافضه Ram ساخته می شوند. دایرکتوری هایی با همین نام ها در زیر دایرکتوری / قرار می گیرد که حاوی اطلاعاتی از سیستم هستند.
NFS : سیستم فایل اشتراک دایرکتوری ها و فایل ها در شبکه.
دایرکتوری های مهم در لینوکس :
/ : دایرکتوری root و در بالاترین سطح قرار دارد.
home/ : هر کاربر در این دایرکتوری یک دایرکتوری خاص خود را دارد.
root/ : دایرکتوری به نام root زیر دایرکتوری / قرار دارد که دایرکتوری خانگی کاربر root است.
etc/ : فایل های پیکربندی سرویس ها و خود سیستم در این دایرکتوری است.
var/ : شامل mail list ها
var/log/ : در زیر دایرکتوری /var/log فایل های Log قرار دارند.
bin/ و sbin : /sbin مخفف binary ود ر این دایرکتوری ها به ترتیب دستور های عمومی و ویژه کاربر root قرار دارد.
دستور های کار با دایرکتوری :
دستور ls :
برای دیدن محتوای یک دایرکتوری بکار می رود. دارای سوئیچ های فراوانی است که آنها را می گوییم :
a : فایل های مخفی را هم نشان می دهد. در لینوکس فایل های مخفی ابتدای نامشان یک نقطه (dot) وجود دارد.
l : می توانید مجوز و مالک هر فایل را ببینید.
h : اندازه فایل را لصورا استاندارد و برحسب کیلو بایت،مگابایت و … نشان می دهد.
کد PHP:
ls -lah
ls -lah /home/amirnami/Docs
کد PHP:
ls –lhd
ls -lhd /home/amirnami/Docs
دستور tree :
مانند دستور ls برای لیست کردن محتوا بکار مب رود اما ساختار سلسله مراتبی را نیز نشان می دهد. یعنی دایرکتوری های والد و زیر دایرکتوری ها
دارای سوئیج هایی زیادی است که مفید ترین آنها :
a : فایل های مخفی را هم نشان می دهد. در لینوکس فایل های مخفی ابتدای نامشان یک نقطه (dot) وجود دارد.
d : مانند کاربرد در دستور ls
شکل زیر احرای ساده آن است :
ایجاد و حذف دایرکتوری ها :
دستور های mkdir و rmdir به ترتیب برای ایجاد و پاک کردن دایرکتوری ها بکار می روند. بطور مثال از دستور های زیر،دستور اول یک دایرکتوری به نام newdir در دایرکتوری جاری ایجاد می کند و دستور دوم با همان نام در زیر دایرکتوری amirnami ایجاد می کند.
کد PHP:
mkdir Docs
mkdir /home/amirnami/Docs
کد PHP:
mkdir -p dir1/dir2
mkdir -p /home/amirnami/dir1/dir2
کد PHP:
rmdir -p dir1/dir2
rmdir -p /home/amirnami/dir1/dir2
از این دستور برای پاک کردن یک فایل استفاده می کنیم. در دستور rmdir سوئیج i باعث می شود تا پیغامی برای اطمینان از حذف دایرکتوری یا دایرکتوری های سلسله مراتبی نشان داده شود. y را وارد کنید تا دایرکتوری(ها) پاک شوند در غیر انصورت n را وارد کنید.
کد PHP:
rm -i file
rm -i /home/amirnami/Docs/file
در دستور rmdir سوئیج i باعث می شود تا پیغامی برای اطمینان از حذف دایرکتوری یا دایرکتوری های سلسله مراتبی نشان داده شود. y را وارد کنید تا دایرکتوری(ها) پاک شوند در غیر انصورت n را وارد کنید.
کد PHP:
rm -r dir1/dir2
rm -r /home/amirnami/dir1/dir2
دستور mv مخفف move مانند cut عمل می کند. این دستور یک فایل یا دایرکتوری را از جایی به جای دیگر منتقل می کند و فایل در مبدا دیگر وچود ندارد.
کد PHP:
mv /path/to/SourceFile /path/to/destination
کد PHP:
mv /home/amirnami/Docs/oldnamefile /home/amirnami/Docs/newfilename
کد PHP:
mv /path/to/dir1/* /path/to/dir2
mv /path/to/dir1/file /path/to/dir2
کد PHP:
cp /path/to/source /path/to/destination
کد PHP:
cp /path/to/dir1/* /path/to/dir2
cp /path/to/dir1/file /path/to/dir2
لینوکس سیستم عاملییست حساس به کوچکی و بزرگی حروف. یعنی filename و FileName و FILENAME تفاوت دارند. می توانید از تمامی حروف و اعداد و کارکتر _(Underline) و کارکتر های خاص استفاده کنید ولی اگر نام یک فایل یا دایرکتوری شامل فضای سفید(Tab,Space) باشد، باید پیش از آن کارکتر خاص یک علامت / بیاورید. فرض کنید با دستور mkdir یک دایرکتوری به نام new@ file می خواهید بسازید. سیستم خطایی نمی دهد ولی بجای ساختن یک دایرکتوری به دلیل وجود فضای خالی در نام، دستور آنرا دو دایرکتوری مجزا فرض می کند(دو کادر قرمز اولی و دومی نام دوفایل را نشان می دهد). حال فرض کنید بعد ساختن دایرکتوری بالا می خواهید دایرکتوری دیگری با نام file بسازید. سیستم خطا می دهد که این نام از قبل وجو داشته است.(سومین کادر قرمز)
برای رفع این مشکل باید قبل فضای خالی از یک / استفاده شود و یا اینکه کل نام فایل یا دایرکتوری را بین دو ” قرار دهیم.
نکته دیگر این است که همه چیز درلینوکس فایل است حتی دایرکتوری ها پس نمی توان در یک جا فایل ها و دایرکتوری ها همنام داشت با توجه به اینکه فایل و دایرکتوری دو چیز متفاوت هستند سیستم حتمن به شما خطا می دهد که این نام وجود دارد.
نویسنده نامی امیر
کامنت