شنبه , ۱ آبان ۱۴۰۰

فایل های dev/zero/ و dev/null/ و تفاوت های آنها

dev/null/ و dev/zero/ دو شبه فایل در سیستم عامل لینوکس و دیگر سیستم عامل های شبه-یونیکس هستند که برای ایجاد فایل های خالی و همچنین در Redirection کاربرد دارند. بطور مثال برای ایجاد یک فایل توسط دستور dd به همراه یکی از فایل های گفته شده می توان از دستور های زیر استفاده نمود. یا برای Redirect کردن خطای ناشی عدم نداشتن مجوز بر روی فایل ها، از اجرای دستور find می توان از این فایل ها استفاده نمود. در این حالت خطای ناشی از اجرای هر دستور دیگر یا حتی خروجی های استاندارد را می توان به این فایل ها هدایت کرد که باعث می شود “هیچ چیز نشان داده شوند.

dd if=/dev/zero of=/tmp/filename bs=4096 count=1000

dd if=/dev/null of=/tmp/filename bs=4096 count=1000

find /home -user a.nami -name “*.sh” ۲> /dev/null | less

فایل dev/null/ : این شبه-فایل، فایلی بدون داده را ایجاد می کند، اما نیاز به اندازه دارد. به عبارت بهتر، این فایل، فایلی را با صفر هایی ایجاد می کند که همین باعث دادن حجم به فایل می شود. با اتسفاده از دستور زیر فایل را ایجاد کنید.

dd if=/dev/zero of=/tmp/filename bs=4096 count=1000

حال اگر با دستور cat بخواهید درون فایل ایجاد شده را ببینید، خواهید دید که فایل تهی یا خالی است. (نخسین دستور زیر). اما اگر با دستور strace پیش از cat خواهید دید که فایل ایجاد شده با صفر هایی پر شده است. (دومین دستور زیر و خروجی آن در زیر)

cat /tmp/filename

strace cat /tmp/filename

فایل dev/null/ : مانند فایل پیشین، از این فایل برای ایجاد فایل تهی استفاده می شود با این تفاوت که دیگر اندازه ی لازم در فایل قبلی و همچنین صفر های پر شده در فایل قبلی را ندارد. اگر از دستور زیر استفاده کنید فایلی خالی ایجاد می شود.

dd if=/dev/null of=/tmp/filename bs=4096 count=1000

اگر فایل را با دستور cat بخوانید، چیزی نمایش داده نمی شود و با استفاده از دستور strace نیز استفاده کنید (خروجی در زیر آن)، خواهید دید که بر خلاف فایل قبلی، فایل با صفر ها پر نشده است.

cat /tmp/filename

strace cat /tmp/filename

مختصر و مفید.
موفق باشید.

پاسخ بدهید

آدرس ایمیل شما منتشر نخواهد شدفیلدهای الزامی علامت دار شده اند *

*