لینوکس، بدون کابوس؛ تفاوت فایل‌سیستم ویندوز و لینوکس

فایل‌سیستم لینوکس تفاوت‌های کمی با فایل‌سیستم ویندوز دارد. در لینوکس، شما حروفی برای نامگذاری درایوها یا بک‌اسلشی («\») پیدا نمی‌کنید؛ اما، محیطی اعجاب‌آلود خواهید یافت که در آن فایل‌ها نامی مشابه دارند و تفاوتشان در بزرگ یا کوچک بودن حروف ابتدای نام پوشه است!

در این مقاله سعی می‌کنم تعدادی از جالب‌ترین تفاوت های فایل‌سیستم لینوکس با ویندوز را معرفی کنم:

۱) ساختار فایل‌فهرست (directory) محور: در لینوکس شما پوشه‌ای با نام‌های windows، program files یا مثلا users نمی‌بینید که کارکردی مشابه آنچه در ویندوز دارند داشته باشند (البته فایل‌فهرست /home/ می‌تواند مشابه users عمل نماید). ساختار فایل‌فهرست در لینوکس، فقط به معنای تفاوت در نام پوشه‌ها یا کارکرد آنها نیست؛ بلکه از نظر لایه‌بندی هم تفاوت‌هایی وجود دارد؛ در ویندوز تمام فایل‌های مربوط به برنامه می‌توانند در پوشه‌ی مخصوص برنامه (مثلا آدرس C:\Program Files\Application) قرار بگیرند اما در لینوکس، داستان متفاوت است؛ فایل های مربوط به برنامه‌ها در منابع متعددی ذخیره میشوند (مثلا کدهای اصلی برنامه در /usr/bin/، کتابخانه‌ها در /usr/lib/ و تنظیمات در /etc/ ذخیره میشوند).

۲) حساسیت به حروف (case sensitivity): در ویندوز شما قادر به ساخت فایلی به نام file در یک پوشه و ساخت فایلی به نام FILE در همان پوشه نیستید؛ بنابراین فایل‌سیستم ویندوز به بزرگی یا کوچکی حروف، حساس نیست و این دو نام را برابر میداند. در لینوکس، شما میتوانید فایل هایی با نام‌های file، File و FILE درون یک پوشه بسازید! لینوکس به بزرگی یا کوچکی حروف حساس است و این نام‌ها را از یکدیگر متمایز می‌داند.

۳) «\» در مقابل «/»: ویندوز برای آدرس‌دهی به فایل‌ها، همانند جد خود، یعنی سیستم‌عامل داس، عمل می‌کند و برای جدا کردن نام پوشه‌ها هنگام آدرس‌دهی از بک‌اسلش («\») استفاده میکند؛ این در حالیست که در لینوکس برای این امر از فوروارد اسلش («/») استفاده میشود.

C:\Users\Name
// VS.
/home/name

۴) همه فرزند یک «/»: پارتیشن‌ها (بخش‌بندی فضای ذخیره‌سازی سخت) در ویندوز برمبنای حروف الفبای انگلیسی جدا و نامگذاری می‌شوند؛ بنابراین فایل‌سیستم هر بخش‌بندی، بر مبنای همین حروف شناخته میشود؛ لینوکس به جای استفاده از حروف، تمام فایل‌سیستم‌های بخش‌بندی‌ها را جزو خصوصیات یک فایل‌فهرست به حساب می‌آورد (اینکار در ویندوز هم قابل انجام است ولی شیوه‌ی کار ویندوز بر این مبنا نیست). در لینوکس، همه‌ی بخش‌بندی‌ها زیرمجموعه‌ (فرزند) فایل‌فهرست ریشه (root directory) یعنی همان فایل‌فهرست «/» هستند، هیچ فایل یا پوشه‌ای بالاتر از فایل‌فهرست ریشه قرار ندارد، در حالی که در ویندوز، خارج از C: پوشه‌ها و فایل‌های زیادی وجود دارند. زمانی که دستگاهی را به رایانه‌ی خود متصل میکنید، این دستگاه زیرمجموعه‌ی فایل‌فهرست /media/ (یا /run/media/) می‌شود. این روند صرفا بر مبنای آدرس‌دهی درون سیستم‌عامل انجام می‌شود؛ پس، از فایل‌فهرست ریشه میتوان به تمام بخش‌بندی‌ها یا فضاهای ذخیره‌سازی دسترسی داشت.

۵) هر چیزی فایل است: مثل مورد قبل که همه‌ی بخش‌بندی‌ها فرزندان فایل‌فهرست ریشه‌اند، در لینوکس همه چیز فایل است. مثلا محتویات دیسک‌خوان در dev/cdrom/ در دسترس است، ماوس (موشواره) طبق dev/mouse/ نشان داده می‌شود. این تعریف کمی ساده‌سازی شده است، در حقیقت همه چیز در لینوکس فایل نیست، بلکه این مفهوم کمک می‌کند شما متوجه شوید لینوکس چگونه کار میکند. خیلی چیزها در لینوکس، در فایل‌سیستم لینوکس نشان داده میشود اما واقعا یک فایل نیست؛ اینها فایل‌هایی ویژه هستند که دستگاه‌های سخت‌افزاری را توصیف میکنند یا اطلاعاتی در مورد سیستم را نشان می‌دهند و مشابه این. این فایل‌های ویژه می‌توانند در مکانی شبه‌فایل یا فایل سیستم‌مجازی نشان داده شوند (مثلا /dev/ که فایل‌های ویژه‌ای برای نشان دادن سخت‌افزار دارد یا /proc/ که شامل اطلاعات سیستمی یا فرایندهای در حال اجراست و آنها را نشان می‌دهد).

۶) حذف یا تغییر فایل های باز: در سیستم‌عامل‌های مشابه یونیکس (مثلا لینوکس)، برنامه‌ها یک فایل را برای دسترسی انحصاری خودشان قفل نمی‌کنند (چیزی که در ویندوز انجام می‌شود)؛ مثلا فرض کنید در حال مشاهده‌ی یک فیلم با برنامه‌ی VLC بر مبنای ویندوز هستید، تیتراژ فیلم در حال پخش است و شما خود فیلم را دیده اید، حال قصد دارید که فیلم را پاک کنید، با یک پیام خطا مواجه میشوید، شما باید ابتدا فیلم را متوقف کنید و بعد از آن میتوانید آن فایل را حذف کنید، تغییر نام دهید یا هرکاری مشابه این؛ در لینوکس شما حین اجرای فیلم، میتوانید آن را تغییر دهید یا اصلا حذف کنید، هیچگاه پیام خطایی در مورد در حال استفاده بودن فایل، نخواهید دید!