2017-09-25 1 views
3

Wenn ich eine Datei auf meinem Solaris-Server erstelle, bekomme ich automatisch eine LF-Endzeile.Bei der Bearbeitung der Remote-Datei von WinSCP werden neue Zeilenzeichen beibehalten.

Setup: Ich bin remote an einem Windows-Server angemeldet (ohne Internet, solange ich damit verbunden bin). Auf diesem Windows-Server verwende ich Winscp, um mich bei einem Solaris-Server anzumelden.

Problem: Wenn ich eine Textdatei auf dem Solaris-Server (mit WinSCP) erstellen, kann ich es mit Notepad ++ öffnen. Wenn ich die Datei öffne, hat sie immer CRLF als Newline-Zeichen, ich weiß nicht warum. Dann habe ich das CRLF-Zeichen in LF geändert, indem ich 'finde und ersetze' von '/ r/n' zu '/ n'. Wenn ich finde und ersetze, sehe ich, dass das Newline-Zeichen auf "LF" geändert wurde. Sobald ich jedoch die Datei speichere und sie wieder öffne, sind wir zurück mit 'CRLF'.

Könnte das sein, dass Notepadd ++ zeigt mir falsches Zeichen vielleicht etwas mit dem Öffnen einer Solaris-Datei über WinSCP zu tun?

Oder sollte ich die Datei mit Shell-Skripting (bash) machen?

Auch wenn ich eine Datei mit Shell-Skript erstellen, wie kann ich sicher sein, dass Newline-Zeichen in dieser Datei LF nicht CRLF ist (gibt es eine Möglichkeit, es auf dem Terminal zu tun?), Weil ich gerade Notepad ++ benutze und es zeigt immer CRLF als das Newline-Zeichen, wenn ich die Datei erneut öffne.

Ziel: Was ich will, ist einfach erstellen Sie eine Textdatei mit 'LF' als Newline-Zeichen. Ich benutze Solaris Bash.

+0

Ich habe dos2unix verwendet, aber das Problem bleibt, dass ich nicht überprüfen kann, ob das Newline-Zeichen LF oder CRLF ist. – ITguy

Antwort

2

Was winscp getan hat, war, dass es einen internen Texteditor für Sie öffnete, um den Textinhalt einzugeben. Es wurde lokal in einer temporären Datei auf Ihrem Windows-Rechner mit dem von Ihnen angegebenen Namen gespeichert und schließlich im ASCII-Modus auf Solaris übertragen.

Wenn Sie es auf Ihr Windows heruntergeladen haben, war es wahrscheinlich, dass es auch im ASCII-Modus heruntergeladen wurde. Als Ergebnis wurden die Änderungszeilenzeichen in Windows-Flavor CR + LF konvertiert.

Es sieht gut aus. Wenn Sie sichergehen wollen, würde ich vorschlagen, dass Sie den Inhalt der Datei mit einem Editor auf Solaris überprüfen, wie z. B. vi. Winscp hat eine Menüoption Befehle -> In PuTTY für Sie öffnen.

+0

Können Sie mir bitte einen Weg vorschlagen, mit dem ich unter Solaris bestätigen kann oder was sonst der Endline-Charakter ist "LF" oder "CRLF"? Weil ich nur auf Solaris vi habe und es die Endzeilenzeichen nicht zeigt. Auch der Standard-Winscp-Texteditor zeigt die neuen Zeilenzeichen nicht an. – ITguy

+0

Ich habe eine Möglichkeit gefunden, zu überprüfen, ob die Dateien mit LF enden. Kopieren Sie die Datei einfach von Solaris nach Windows als Binärdatei. Dann zeigt es LF wo relevant. – ITguy

+0

Aus meiner Erfahrung, wenn eine Zeile mit CRLF endet, zeigt das vi es mit etwas wie^M an. – chingNotCHing

-1

Es gibt einige Optionen. Sie könnten Notepad ++ zum Erstellen von Unix-Textdateien einrichten. Eine andere Option ist, scp so einzurichten, dass es die Textdatei im Textmodus überträgt. Die dritte Möglichkeit, aber es kann etwas unpraktisch sein, jedes Mal auszuführen - dos2unix Befehl tut genau das, was Sie brauchen Die vierte Option ist die Verwendung von vi oder eines Editors im Unix-Terminal. Ich denke, es gibt keine Notwendigkeit, Skripting dafür zu machen.

2

WinSCP konvertiert standardmäßig nicht die EOL-Sequenz zum Bearbeiten von Dateien in einem externen Editor, außer wenn der Editor unter Windows notepad.exe integriert ist.

Sie müssen also die Konvertierung in den Einstellungen selbst aktiviert haben.

Siehe Force-Textübertragungsmodus für Dateien im externen Editor Option auf Editor Preferences dialog bearbeitet:

enter image description here

Mit der Option abgestimmt ausgeschaltet, werden Sie Datei geöffnet in Notepad bekommen ++ genau so, wie es auf dem gespeichert wird Server.

Verwandte Themen