گاهی اوقات، زمانی که با فایلها در ترمینال لینوکس سروکار دارید، ممکن است بخواهید محتوای یک فایل را بدون نیاز به باز کردن آن با استفاده از ویرایشگرهای خط فرمان لینوکس پاک کنید. چگونه می توان به این امر دست یافت؟
در این مقاله به چند روش مختلف برای خالی کردن محتوای فایل با کمک دستورات مفید می پردازیم.
احتیاط: قبل از اینکه به بررسی راه های مختلف بپردازیم، توجه داشته باشید که چون در لینوکس همه چیز یک فایل است، همیشه باید مطمئن شوید که فایل(هایی) که تخلیه می کنید، فایل های مهم کاربر یا سیستم نیستند. پاک کردن محتوای یک سیستم حیاتی یا فایل پیکربندی می تواند منجر به خطا یا خرابی برنامه/سیستم کشنده شود.
با این گفته، در زیر ابزارهایی برای پاک کردن محتوای فایل از خط فرمان آمده است.
مهم: برای اهداف این مقاله، ما از فایل access.log در مثالهای زیر استفاده کردهایم.
1. محتوای فایل را با تغییر مسیر به Null خالی کنید
ساده ترین راه برای خالی کردن یا خالی کردن محتوای فایل با استفاده از تغییر مسیر تهی پوسته (شیء غیر موجود) به فایل به شرح زیر است:
# > access.log
2. خالی کردن فایل با استفاده از تغییر مسیر فرمان “true”
در اینجا ما از یک نماد استفاده خواهیم کرد: یک فرمان داخلی پوسته است که در اصل معادل دستور true است و می توان از آن به عنوان یک no-op (بدون عملیات) استفاده کرد.
روش دیگر این است که خروجی : یا دستور داخلی واقعی را به فایلی مانند زیر هدایت کنید:
# : > access.log OR # true > access.log
3. خالی کردن فایل با استفاده از ابزارهای cat/cp/dd با /dev/null
در لینوکس، دستگاه تهی اساساً برای دور انداختن جریانهای خروجی ناخواسته یک فرآیند یا به عنوان یک فایل خالی مناسب برای جریانهای ورودی استفاده میشود. این معمولاً توسط یک مکانیسم تغییر مسیر انجام می شود.
و فایل دستگاه /dev/null یک فایل ویژه است که هر ورودی ارسال شده به آن را می نویسد (حذف می کند) یا خروجی آن مانند یک فایل خالی است.
علاوه بر این، میتوانید محتوای یک فایل را با هدایت کردن خروجی /dev/null به آن (فایل) به عنوان ورودی با استفاده از cat command خالی کنید:
# cat /dev/null > access.log
در مرحله بعد، از cp command برای خالی کردن محتوای یک فایل مانند تصویر استفاده می کنیم.
# cp /dev/null access.log
در dd command زیر if به معنی فایل ورودی و of به فایل خروجی اشاره دارد.
# dd if=/dev/null of=access.log
4. خالی کردن فایل با استفاده از دستور echo
در اینجا، می توانید از echo command با یک رشته خالی استفاده کنید و آن را به صورت زیر به فایل هدایت کنید:
# echo "" > access.log OR # echo > access.log
نکته: باید در نظر داشته باشید که رشته خالی همان null نیست. یک رشته در حال حاضر یک شی است تا آنجا که ممکن است خالی باشد در حالی که null به سادگی به معنای عدم وجود یک شی است.
به همین دلیل، وقتی دستور out of echo بالا را به داخل فایل هدایت میکنید و محتویات فایل را با استفاده از دستور cat مشاهده میکنید، یک خط خالی (رشته خالی) چاپ میشود.
برای ارسال یک خروجی تهی به فایل، از flag -n استفاده کنید که به echo میگوید خط جدید انتهایی را که به خط خالی تولید شده در دستور قبلی منتهی میشود، خروجی ندهد.
# echo -n "" > access.log
5. خالی کردن فایل با استفاده از دستور کوتاه
truncate command به کوچک کردن یا گسترش اندازه یک فایل به اندازه تعریف شده کمک می کند.
می توانید آن را با گزینه -s که اندازه فایل را مشخص می کند استفاده کنید. برای خالی کردن محتوای فایل، از اندازه 0 (صفر) مانند دستور زیر استفاده کنید:
# truncate -s 0 access.log
فعلاً همین است، در این مقاله ما چندین روش پاکسازی یا خالی کردن محتوای فایل را با استفاده از ابزارهای ساده خط فرمان و مکانیسمهای تغییر مسیر پوسته پوشش دادهایم.
اینها احتمالاً تنها راههای عملی موجود برای انجام این کار نیستند، بنابراین میتوانید از طریق بخش بازخورد زیر در مورد روشهای دیگری که در این راهنما ذکر نشده است به ما بگویید.
بخوانید: اضافه کردن SWAP در اوبونتو 23.04