برخی ابزارهای لینوکس یا برنامه هایی که به صورت دستی نوشته شده اند فایل هایی که با "-" شروع میشوند را ایجاد میکنند. اگر شما با استفاده از دستورات ls ،rm ،cp ،mv یا chmod برای حذف، کپی، تغییر نام و یا دسترسی به سایر فایل ها اقدام کنید، خطاهای زیر را دریافت خواهید کرد.
به این دلیل است که سیستم عامل لینوکس شما dash که در filename وجود دارد را به عنوان بخشی از آپشن های کامندلاین در نظر میگیرد و به شما خطای آپشن نادرست یا عدم وجود آپشن را برمیگرداند.
برای حل مشکل شما میتوانید یکی از دو روش زیر را استفاده کنید.
روش اول :
با توجه به اینکه وجود "-" در filename باعث ابهام در تشخیص فایل میشود شما تنها نیاز دارید که این چنین مشکلاتی را با اضافه کردن یک path name به نام فایل رفع کنید. به طور مثال اگر شما یک فایل به نام -my.txt در پوشه جاری خود دارید میتوانید با استفاده از دستور زیر به آن دسترسی داشته باشید.
روش دوم :
به منظور روبه رو شدن با کاراکتر "-" در نام فایل شما میتوانید از آپشن خاص "−−" استفاده کنید که توسط getopt() به عنوان عدم استفاده از آپشن تفسیر میشود. تمام ابزارهای کامندلاینی استاندارد لینوکس از getopt() برای پروسس کردن آپشن های کامندلاین استفاده میکنند، زمانیکه getopt() گزینه "−−" را دریافت کند پروسس پردازش کردن آپشن ها را در کامند متوقف میکند. بنابراین تنها کافیست "−−" را قبل از نام فایل استفاده کنید تا مشخص کنید که dash موجود در نام فایل بخشی از دستور نیست.
کد PHP:
[cmd]: invalid option --
برای حل مشکل شما میتوانید یکی از دو روش زیر را استفاده کنید.
روش اول :
با توجه به اینکه وجود "-" در filename باعث ابهام در تشخیص فایل میشود شما تنها نیاز دارید که این چنین مشکلاتی را با اضافه کردن یک path name به نام فایل رفع کنید. به طور مثال اگر شما یک فایل به نام -my.txt در پوشه جاری خود دارید میتوانید با استفاده از دستور زیر به آن دسترسی داشته باشید.
کد PHP:
$ chmod 600 ./-my.txt
$ rm ./-my.txt
روش دوم :
به منظور روبه رو شدن با کاراکتر "-" در نام فایل شما میتوانید از آپشن خاص "−−" استفاده کنید که توسط getopt() به عنوان عدم استفاده از آپشن تفسیر میشود. تمام ابزارهای کامندلاینی استاندارد لینوکس از getopt() برای پروسس کردن آپشن های کامندلاین استفاده میکنند، زمانیکه getopt() گزینه "−−" را دریافت کند پروسس پردازش کردن آپشن ها را در کامند متوقف میکند. بنابراین تنها کافیست "−−" را قبل از نام فایل استفاده کنید تا مشخص کنید که dash موجود در نام فایل بخشی از دستور نیست.
کد PHP:
$ chmod -- 600 -my.txt
$ rm -- -my.txt