در اینجا با یکسری از ترفندهای کار با پوسته bash آشنا میشویم.
جلوگیری از رونویسی پروندهها
به صورت پیشفرض در محیط bash میتوان روی فایلی که موجود است عملیات redirect یا تغییر مسیر را انجام داد.
این کار باعث میشود محتویات کنونی فایل از بین برود.
با تنظیم زیر میتوان این ویژگی را غیر فعال کرد و از این پس نمیتوان روی فایل موجود redirect انجام داد.
set -o noclobber
help set
-C If set, disallow existing regular files to be overwritten
by redirection of output.
نمونه
یک فایل نمونه با نام file.txt و محتوای زیر میسازیم.
$ echo "salam
1
2
3
dorood
a b c d
">file.txt
با فرمان cat میتوانید محتویات فایل را بررسی کنید.
حالا به سادگی میتوان با دستور زیر محتوای فایل را حذف کرد.
> file.txt
اکنون درون فایل هیچ محتوایی موجود نیست.
حالا یکبار دیگر درون فایل چیزهایی مینویسیم و اینبار ویژگی را فعال کنیم دیگر نمیتوان فایل را رونویسی کرد.
$ echo "salam
1
2
3
dorood
a b c d
">file.txt
$ set -o noclobber
$ > file.txt
bash: file.txt: cannot overwrite existing file
برای غیر فعال سازی این تنظیم
set +o noclobber
در نظر داشته باشید که این تنظیم فقط برای پوسته جاری است. اگر میخواهید این تنظیم را دائمی کنید میتوانید در فایل bashrc. قرارش دهید.
البته میتوان با فعال بودن تنظیم بالا به این شکل محدودیت را دور زد.
echo "hello" >| file.txt