Ubuntu'da Not Defteri'nde (Windows) oluşturulan bir komut dosyasını çalıştırma


14

Windows'ta bir Not Defteri dosyası oluşturdum ve Ubuntu'ya kopyaladım. Dosya bazı iptables kuralları içeriyor. Dosyayı kullanarak chmod +xve yürütüldüğünde yürütülebilir hale getirdikten sonra çalışmadı.

Ancak, bir Ubuntu ( gedit ) dosyası oluşturup Not Defteri dosyasından aynı içerikleri kopyaladığımda, yürütülebilir hale getirip çalıştırdığımda işe yaradı.

Not Defteri dosyasını Ubuntu'da çalıştırmak için ne yapmalıyım?


2
related: Linux'taki
CRLF'leri

Yanıtlar:


20

Windows ve Linux'un farklı satır sonu sembolleri vardır.

dos2unixDüzelten yardımcı programı yükleyebilirsiniz :

sudo apt-get install dos2unix

Bu şekilde çalıştırın:

dos2unix -n winfile.txt linuxfile.txt

Ayrıca unix2dosyardımcı program vardır.

Windows-Linux dönüşümü, herhangi bir özel yazılım yüklemeden de yapılabilir.

 tr -d '\r' < winfile.txt > linuxfile.txt

Not: Giriş ve çıkış dosyaları farklı olmalıdır.

Bir sed sürümü "yerinde" dosyasını düzenlemek olacaktır:

 sed  -i 's/\r//g' file.txt

Veya başka bir dosyaya yazın:

 sed 's/\r//g' winfile.txt > linuxfile.txt

Emriniz yanlış. dos2unix winfile.txt linuxfile.txther iki dosyayı dönüştürmeye çalışır. Bu komutu kullanındos2unix -n winfile.txt linuxfile.txt
AB

@AB Düzeltildi. Haklısın. Giriş parametrelerini değiştirdiler. Uzun süre kullanmadım.
Pilot6

Her neyse, iyi cevap +1
AB

Hepinize çok teşekkürler. Notepad ++ yok ​​ve yeni bir paket (dos2unix) yüklemek istemediğim için, "tr" komutunu tercih ettim. Ben denedim ve işe yaradı. Ancak kaynak ve hedef dosyaların farklı olması gerektiğini lütfen unutmayın.
Albert

@Albert Cevaba eklendi. Dosya adını tutmak için başka bir yol yapılabilir, ancak IMHO'ya çaba göstermeye değmez. Ve yine de dosyaları karıştırmamak için farklı isimlere sahip olmak daha iyidir.
Pilot6

6

Windows'ta Notepad ++ uygulamasında Satır Sonu (EOL) biçimini UNIX olarak değiştirmeniz gerekir:

resim açıklamasını buraya girin

Bu şekilde Ubuntu üzerinde de çalışacak.


1
Bu şekilde yalnızca Ubuntu / Linux üzerinde çalışacaktır . Notepad ++ gibi özel gelişmiş editörler satır sonu türünü tanıyabilir ve yine de doğru bir şekilde görüntüleyebilir, normal Windows not defteri vb.
Byte Komutanı

@ByteCommander YES, ancak Ubuntu'da çalıştırmak istiyor.

1
Evet tabi ki. Bu yüzden biliyorum ve onayladım. Sadece bu gerçeği netleştirmek istedim, böylece dosya normal not defterinde garip göründüğünde kimse şaşırmayacak.
Byte Komutanı

2
Ben OP üçüncü taraf programı Notepad ++ , Windows yerleşik program Not Defteri atıfta olduğunu düşünüyorum . Bu amaçla Nodepad ++ 'ın Windows'a yüklenmesi gerektiğini önerirseniz, cevabınızda daha açık hale getirebilir misiniz? Şu an olduğu gibi, bence kafa karıştırıcı.
Peter Mortensen

@PeterMortensen Sorusunu tekrar okudum, yanlış anladığımı sanmıyorum ve cevabım sorununa iyi çözümlerden biri.

2

Windows satır sonları için CR + LF kullanır. Linux / Unix'te LF'ye ihtiyacınız var. Bu nedenle, betiğinizde CR + LF'yi LF'ye değiştirmeniz gerekir:

Yüklemek dos2unix

sudo apt-get install dos2unix

Ve betiğinizi

dos2unix <your_script_file>

veya yoluyla

dos2unix -n <your_script_file> <out_file>

farklı bir çıktı dosyasına ihtiyacınız varsa

Daha fazla bilgi burada


itibaren man dos2unix

NAME
       dos2unix - DOS/Mac to Unix and vice versa text file format converter

SYNOPSIS
           dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
           unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]

1

Windows'ta cygwin kullanıyorum.
Dosyayı vi ile açın. Sonra girin

:set ff=unix<enter> followed by 
:wq<enter> 

dosyayı Unix satır sonu karakterleriyle kaydeder.


0

Vim'i Ex modunda kullanabilirsiniz:

ex -bsc '%s/\r//|x' file
  1. % tüm satırları seç

  2. s vekil

  3. \r satırbaşı

  4. x kaydet ve kapat

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.