از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حل مشکل: Bin/Bash^M: مترجم بد: چنین فایل یا دایرکتوری وجود ندارد
سرفصلهای مطلب
در این آموزش روش رفع مشکلی که در حین اجرا ایجاد می شود را بررسی خواهیم کرد bash فایل or.sh روی یک محیط لینوکس مفسر ضعیف نام دیگر این خطا است. ممکن است فکر کنید که این یک محدودیت مجوز است و سعی کنید از دستور chmod +x استفاده کنید تا تمام امتیازات مورد نیاز را به فایل اسکریپت پوسته بدهید، اما این مشکل را حل نمیکند. اسکریپت مشخص می کند که با استفاده از “/bin/ اجرا می شود.bash^M” پوسته. چنین فایلی وجود ندارد. در عوض، “/bin/bash” استفاده می شود. کاراکتر “^M” مخفف carriage return است.
کاراکتر تغذیه خط اغلب در لینوکس برای نشان دادن پایان یک خط استفاده می شود، در حالی که دنباله دو کاراکتری CR/LF اغلب در سیستم عامل های ویندوز مانند استفاده می شود. فایل حاوی نشانگرهای انتهای خط ویندوز است که باعث گیج شدن لینوکس می شود. در یک bash فایل اسکریپت، چگونه می توانم کاراکترهای رمزگذاری CR یا LF را ببینم؟ همچنین می توانید نویسه های انتهای خط را به صورت LFCR یا LFCR با View → Show Symbol → Show End of Line مشاهده کنید. نمونه ای از یک فایل با کاراکترهای CR یا LF در زیر نشان داده شده است:
نمایشگرهای بالا و پایین در ویرایشگر اصلی دفترچه یادداشت موجود نیستند. در عوض، باید Notepad++، نسخه پیشرفته notepad را نصب کنید. برای رفع خطا در سیستم عامل ویندوز، آن را باز کنید bash فایل اسکریپت را در ویرایشگر Notepad++ و سپس از طریق منوی تنظیمات مانند زیر به تب تنظیمات بروید. پس از انتخاب Unix/OSX به عنوان فرمت، پنجره را ببندید. سپس فایل را ذخیره کرده و ببندید.
تنظیمات برگزیده ← سند جدید/ برگه فهرست پیشفرض ← تنظیمات ← تنظیمات ← سند جدید/ برگه فهرست پیشفرض ← انتخاب فرمت سند جدید →
با استفاده از دستور ویرایشگر جریان
در یونیکس، دستور SED برای یک ویرایشگر خط به خط حساب میکند و میتواند طیف گستردهای از رویههای فایل مانند اسکن یا جستجو، یافتن و جایگزینی، درج و حذف را انجام دهد. دستور SED بیشتر در سیستم عامل های یونیکس و لینوکس مانند برای جایگزینی یا یافتن و جایگزینی استفاده می شود. کاراکترهای CR را که قرار نیست وجود داشته باشند حذف کنید. برای انجام این کار می توانید از دستور زیر در تصویر (sed) استفاده کنید:
با استفاده از Dos2UNIX Utility
Dos2Unix برنامه ای است که DOS را به یونیکس تبدیل می کند. برای حل اسکریپت پوسته برای سیستمعاملهایی مانند یونیکس لینوکس، ابزار dos2unix را نصب کنید و سپس دستور dos2unix را اجرا کنید:
اگر با خطای دستور not found مواجه شدید، ابتدا ابزار dos2unix را با اجرای دستور زیر از پوسته خط فرمان لینوکس نصب کنید:
برای تبدیل فایل به فرمت DOS می توانید از دستور unix2dos استفاده کنید.
در یک bash فایل اسکریپت، چگونه می توانم کاراکترهای CR LF را مشاهده کنم؟ فایل تلاش، فایل -k، و در نهایت دستور dos2unix -ih مانند صفحه زیر: فایل تلاش، فایل -k، و در نهایت دستور dos2unix -ih مانند صفحه زیر. برای خط لینوکس/یونیکس “CR”، به سادگی متن را چاپ می کند.
ممکن است آن را نصب کنید روی سیستم عامل macOS با استفاده از Homebrew به شرح زیر است:
سپس دستور زیر را برای تبدیل فایل با فرمت dos به فرمت یونیکس اجرا کنید:
هدف از دستور dos2unix چیست
DOS2UNIX ابزاری است که انتهای خطوط DOS CR (بازگشت حمل) +LF (فید خط) را به کدگذاری خط یونیکس در فایل های متنی LF (فید خط) ترجمه می کند. همچنین می تواند بین کاراکترهای UTF-16 و UTF-8 تبدیل کند. با استفاده از دستور unix2dos می توانید از یونیکس به داس ترجمه کنید. انتظار می رود، این مشکل شما را حل کند.
با استفاده از ویرایشگر Vim
اگر DOS2UNIX Utility را نصب نکرده اید روی سیستم عامل LINUX خود، ممکن است از ویرایشگر VIM برای تبدیل فرمت اسکریپت پوسته خود به یونیکس استفاده کنید. برای باز کردن فایل در ویرایشگر VIM از دستورالعمل بعدی استفاده کنید:
vi FILENAME.sh
یا
vim FILENAME.sh
اگر در پوشه یا پوشه فعلی که در آن هستید نیستید bash فایل اسکریپت قرار دارد، مسیر کامل دایرکتوری را تایپ کنید، همانطور که من انجام دادم. اما اگر در همان دایرکتوری یا پوشه هستید، میتوانید دستور را مستقیماً مطابق با بالا اجرا کنید. VIM یک شکل پیشرونده از ویرایشگر VI است. هر دو دستور VI و VIM کار یکسانی را انجام می دهند. برای تغییر فرمت فایل به سیستم عامل یونیکس دستور زیر را اجرا کنید:
سپس با استفاده از دستورات زیر تمامی تغییرات ذخیره شده و فایل را در ویرایشگر ببندید و فایل را بنویسید و ببندید. حالا کار شما تمام شده است. شما می توانید قالب اسکریپت پوسته خود را از طریق هر یک از روش هایی که قبلا توضیح داده شد به یونیکس تبدیل کنید. امیدواریم اطلاعات بالا به حل مشکل شما کمک کرده باشد.
نتیجه
همه اینها در مورد استفاده از روش های ساده برای حل مشکل “bin/bash^M: مفسر بد: چنین فایل یا دایرکتوری وجود ندارد. تمام مثال های استفاده شده در اینجا ساده و قابل اجرا هستند. امیدواریم مورد پسند شما واقع شود و از آن بیشتر بیاموزید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 00:24:08