spot_img
Saturday, April 20, 2024
spot_img
HomeTechBilgi TeknolojisiDüzeltme: Linux'ta “Kötü Tercüman: Böyle Bir Dosya veya Dizin Yok” Hatası

Düzeltme: Linux’ta “Kötü Tercüman: Böyle Bir Dosya veya Dizin Yok” Hatası

-

Cherry KW 9200 Mini Klavyede yazı yazan kişi
Hannah Stryker / Nasıl Yapılır Geek
Bir kabuk betiğini çalıştırırken “kötü yorumlayıcı: böyle bir dosya veya dizin yok” hatası alırsanız, betik dosyanızı Windows’tan Unix satır sonlarına dönüştürmeniz gerekir. yöntemlerden biri, dos2unix komut, bunun gibi:

dos2unix komut dosyası1.sh

Bir Bash betiği çalıştırmayı denediniz ve “/bin/bash^M: kötü yorumlayıcı: Böyle bir dosya veya dizin yok” hata mesajı aldınız mı? Çıktı pek yardımcı değil ve neredeyse betiğinizin eksik olduğu izlenimini veriyor. Neyse ki durum bu değil ve düzeltme çok basit.

“Kötü Tercüman: Böyle Bir Dosya veya Dizin Yok” Hatası Nedir?

Okuyan bir hata mesajı alma /bin/bash^M: bad interpreter: No such file or directory sadece, kabuk betik dosyanızın yanlış satır sonlarına sahip olduğu anlamına gelir; bir satırın sonuna yerleştirilen karakterler bir sonraki satıra geçme zamanının geldiğini gösterir. DOS tabanlı Windows, not edilmiş bir “satır başı ve satır besleme” (CRLF) sonlandırıcısını görmeyi sever \r\n. Bunun aksine, Linux, modern macOS ve diğer Unix tabanlı sistemler yalnızca “satır besleme” (LF) veya \n.

Bu kötü yorumlayıcı hatasını görüyorsanız, muhtemelen siz veya betiği aldığınız kişi onu bir Windows bilgisayarda yazmış olabilir. Bash bunları görüyor \r\n Windows bilgisayarı tarafından ayarlanan satır sonları ve kabuğun betiğinizi doğru şekilde yorumlamasını engellediği için üzülür.

Linux komut satırında "kötü yorumlayıcı: böyle bir dosya veya dizin yok" hata mesajı.

Sorunu bir Linux terminalinde işaret ederek bile onaylayabilirsiniz. file komut dosyasına komut.

file script1.sh

Linux'ta file komutuyla bir dosyanın satır sonlarını kontrol edin.

Dosya DOS satır sonları kullanıyorsa, çıktıya eklenen “CRLF satır sonlandırıcılı” mesajını görürsünüz. Komut dosyamız uygun Unix (LF) yeni satırlarını kullanıyor olsaydı, sonlandırıcılardan hiç bahsetmezdi. Neyse ki, LF işine geri dönmek kolaydır.

“Kötü Tercüman: Böyle Bir Dosya veya Dizin Yok” Hatası Nasıl Düzeltilir

Bu hata mesajından kurtulmak ve komut dosyalarınızı normal şekilde çalıştırmaya başlamak için tek yapmanız gereken, DOS satır sonlarından Unix satır sonlarına geçiş yapmaktır. Bunu terminal komutlarıyla veya favori kod düzenleyicinizde yapabilirsiniz. Bunu düzeltmenin sekiz yolu:

dos2unix Komutunu Kullanma

Sadece DOS (aka, Windows) dosyalarını uygun şekilde adlandırılmış tamamen Unix uyumlu dosyalara dönüştürmek için yapılmış bir komut satırı programı var. dos2unix. Çoğu varsayılan depoda mevcuttur, bu nedenle onu Ubuntu’ya şu şekilde kurabilirsiniz:

sudo apt install dos2unix

Fedora kurulumumuzda dos2unix önceden yüklenmiş olarak geldi, ancak sahip olduğunuzu onaylayabilirsiniz:

sudo dnf install dos2unix

Arch Linux’ta:

sudo pacman -S dos2unix

kullanma dos2unix basit; sadece dosya adını ver.

dos2unix script1.sh

dos2unix komutunu girin.

ile kontrol et file Komut dosyanızı çalıştırmadan önce dönüştürmenin başarılı olduğunu doğrulamak istiyorsanız. Ayrıca, birden çok dosyayı yalnızca bir boşlukla ayırarak adlandırarak toplu dönüştürme yapabilirsiniz.

dos2unix script1.sh script2.sh script3.sh

Veya tutarlı bir dosya adlandırmanız varsa, elbette joker karakterler kullanarak daha kısa komutlar yazabilirsiniz.

dos2unix script*.sh

Bir joker karakterle dönüştürmek için dos2unix komutunuzda bir yıldız işareti kullanın.

bu dos2unix komutu, dosya sahipliğini değiştirmek gibi özel türde dönüştürmeler yapmanıza yardımcı olacak birkaç işarete sahiptir. Ters formda bile kullanabilirsiniz, unix2dos, CRLF’ye geri dönmek istiyorsanız. Girmek dos2unix --help daha fazla öğrenmek için.

tr Komutunu Kullanma

Özel bir yardımcı programı kuramıyorsanız veya kurmak istemiyorsanız, Linux’ta bu yeni satırları temizleyecek yerleşik araçlar vardır. İle tr komutunu çıkarabilirsiniz. \r satırın bir kısmı bitiyor, bu yüzden elimizde kaldı \n sonlandırıcılar.

tr -d '\r' < script1.sh > script1_unix.sh

Burada, tr metnini alıyor script1.sh dosya, her örneğini silerek \r bulur ve çıktıyı dosya olarak kaydeder script1_unix.sh.

sed Komutunu Kullanma

Heybetli sed Kabuğunuzda yerleşik olan komut, dosyanız için satır sonlarını da değiştirebilir.

sed -i 's/\r//' script1.sh

aşina değilseniz sed sözdizimi, biz söylüyoruz sed dosyamızı düzenlemek için (-i) ve ikame (s/) her satır başı (\r) hiçbir şey ile. Bu da bizi Unix’in tercihiyle bırakıyor. \n hat sonlandırıcılar

vi veya vim kullanma

Komut dosyalarınızı düzenlemek için vi veya vim kullanıyorsanız, şu anda açık olan dosyayı Unix satır sonlarına dönüştürmek için bu komutu iletmeniz yeterlidir.

:set fileformat=unix

Komut dosyası biçimini bir vim komutuyla değiştirin.

İLGİLİ: Vi veya Vim Düzenleyicisinden Nasıl Çıkılır?

Geany’yi kullanma

Bir masaüstü ortamında çalışıyorsanız, dosyalarınızı Unix dünyasına hazır hale getirmek için terminalde oyalanmanıza gerek yok. Hemen hemen her kod düzenleyicide ve IDE’de satır sonları için bir geçiş vardır. Buna Geany de dahil.

Geany’de satır sonlarını dönüştürmek için Belge > Satır Sonlarını Ayarla > Dönüştür ve LF’ye (Unix) Ayarla’ya gidin.

Geany

Komut dosyanızı kaydedin ve yeniden çalıştırmayı deneyin.

Kate veya Kwrite’ı Kullanma

Komut dosyanızı düzenlemek için Kwrite kullanıyorsanız veya Kwrite’ın daha güçlü kuzeni Kate kullanıyorsanız, Araçlar > Satır Sonu > Unix’e tıklayarak LF biçimine dönüştürebilirsiniz.

Kwrite

Dosyayı kaydedin ve betiğinizi yeniden çalıştırın.

Notepad++’ı kullanma

Kodu Notepad++’ta düzenlerseniz, satır sonlarını da kolayca dönüştürebilirsiniz; bu kullanışlıdır çünkü muhtemelen Windows’ta çalıştırıyorsunuzdur (Linux için Notepad++ yüklemediyseniz) ve bunları Linux sisteminize geçmeden önce dönüştürebilirsiniz. Dosya açıkken Düzen > EOL Dönüştürme > Unix (LF) seçeneğine gidin.

Komut dosyanızı çalıştırmadan önce kaydettiğinizden emin olun.

Notepad++’ın varsayılan olarak Unix satır sonları olan dosyalar oluşturmasını istiyorsanız, Ayarlar > Tercihler’e gidin, “Yeni Belge” sekmesini seçin ve “Biçim (satır sonu)” seçeneklerinin altında “Unix (LF)” radyo düğmesini tıklayın.

VS Kodunu Kullanma

Visual Studio Code (VS Code) hemen hemen aynı şekilde çalışır, yalnızca anahtarı bulmak daha da kolaydır. VS Code penceresinin sağ alt köşesindeki “CRLF”ye tıklamanız yeterlidir.

Dosya > Tercihler > Ayarlar’a gidip yazarak VS Kodunu varsayılan olarak Unix satır sonlarını kullanacak şekilde ayarlayabilirsiniz. eol ayarlar arama çubuğunda. En üstteki sonuç, “Eol” ayarı için bir açılır menü olmalıdır. “\n” olarak değiştirin.

VS Kodu ayarlarında, varsayılan EOL ayarını "\n" olarak değiştirin.

İLGİLİ: Bash Betiklerinizin Donanım Farkındalığını Nasıl Sağlarsınız?

Related articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0FollowersFollow
0SubscribersSubscribe
spot_img

Latest posts