Wie kann ich in Windows Änderungen an Dateien auf einem Linux-Server vornehmen?

0

Ich habe eine SMB-Verbindung zu einem Ubuntu Server 12.10-Host mit Shell-Skripten und Konfigurationsdateien, die ich mit einem Windows 7-Client mit Notepad ++ bearbeiten möchte. Ich kann die Dateien öffnen und Änderungen vornehmen, aber sobald ich sie speichere, ohne die Zeichenkodierung zu ändern, sind sie auf dem Host nicht mehr lesbar.

Wie kann ich die Dateien in Windows 7 bearbeiten und speichern, damit sie in Ubuntu Server 12.10 gelesen und ausgeführt werden können?

Keyslinger
quelle
Was bedeutet "unlesbar"?
terdon
@terdon Das bedeutet, dass der Tomcat-Server, der die Konfigurationsdateien verwendet, nicht mehr funktioniert.
Keyslinger
OK, dann siehst du Jims Antwort. Oder meine.
terdon

Antworten:

4

BEARBEITEN: Sie können die Unix-Leitungsbeendigung in Notepad ++ unter Bearbeiten - & gt; EOL-Konvertierung - & gt; Unix-Format.

Eines der häufigsten Probleme bei der Kompatibilität von Textdateien zwischen Unix- und Windows-Systemen besteht darin, dass Windows als Terminierung CRLF (Wagenrücklauf + Zeilenvorschub, ASCII 13 und 10) bezeichnet, während Unix nur LF (10) verwendet. Dies führt wahrscheinlich zu einem Fehler wie ./foo.sh: bad interpreter: /bin/sh^M: no such file or directory.

Es gibt ein Dienstprogramm namens dos2unix das wird alle vorhandenen Dateien für Sie konvertieren, auf der Ubuntu-Seite:

apt-get install dos2unix
dos2unix myscript.sh

Dadurch wird die vorhandene Datei so geändert, dass die CRs entfernt werden.

Jim Stewart
quelle
0

Wie Jim sagte, ist das Problem wahrscheinlich die Leitungsbeendigung. Sie können dies auf dem Linux-Server beheben, indem Sie diesen Befehl für Ihre geänderten Dateien ausführen:

sed -i 'N;s/\r\n/\n/g' file
terdon
quelle
Jims Antwort half mir, aber ich werde es mir merken, falls ich jemals keinen Zugang zu einer der Lösungen habe, die er mir gegeben hat.
Keyslinger
Zur Klarstellung gab er Ihnen eine Lösung. Der erste Befehl installiert nur das erforderliche Programm, Sie müssen es nur einmal ausführen.
terdon