2017-09-25 114 views
3

據我所知,如果我在Solaris服務器上創建一個文件,我會自動獲取LF結束行。從WinSCP編輯遠程文件時保留新行字符

安裝程序:我已遠程登錄到Windows服務器(只要連接到它就沒有互聯網)。在此Windows服務器上,我使用Winscp登錄到solaris服務器。

Issue:當我在Solaris服務器上創建一個文本文件(使用WinSCP)時,我可以使用Notepad ++打開它。當我打開文件時,它總是以CRLF作爲換行符,我不知道爲什麼。然後,我使用'/ r/n'到'/ n'中的'查找和替換'將CRLF字符更改爲LF。當我找到並替換時,我發現換行符已被更改爲'LF'。但是,只要我保存該文件並重新打開它,我們就會返回'CRLF'。

難道這是notepadd ++顯示我錯誤的字符可能是通過WinSCP打開Solaris文件嗎?

或者我應該使用shell腳本(bash)使文件?

即使我使用shell腳本創建文件,我怎樣才能確保該文件中的換行符是LF而不是CRLF(在終端上有沒有這樣做的方法?),因爲現在我正在使用Notepad ++當我重新打開文件時,它總是顯示CRLF作爲換行符。

目的:我想要的只是用'LF'作爲換行符創建任何文本文件。我正在使用Solaris bash。

+0

我已經使用了dos2unix,但問題仍然是我無法驗證換行符是LF還是CRLF。 – ITguy

回答

2

winscp做了什麼,它打開了一個內部文本編輯器,供您輸入文本內容。它在您的Windows計算機上以您指定的名稱本地保存到臨時文件,並最終以ascii模式將其傳輸到Solaris。

當你將它下載到你的Windows時,它很可能是以ascii模式下載的。結果,更改行字符被轉換爲Windows風格CR + LF。

看起來沒問題。如果你想確定它,我建議你用Solaris上的編輯器檢查文件內容,例如vi。 Winscp爲您提供了菜單選項「命令 - >在PuTTY中打開」。

+0

您能否給我一個建議我可以在Solaris上確認的方式,或者其他什麼是'LF'或'CRLF'?因爲我在Solaris上只有vi,並且不顯示結尾字符。此外,標準winscp文本編輯器也不會顯示新行字符。 – ITguy

+0

我發現了一種檢查文件是否以LF結束的方法。只需將文件從Solaris複製到Windows即可。然後它會在相關的地方顯示LF。 – ITguy

+0

根據我的經驗,如果一行以CRLF結尾,vi會以^ M的形式顯示它。 – chingNotCHing

-1

有一些選項。您可以設置Notepad ++來創建Unix樣式的文本文件。另一種選擇是設置scp,以便在文本模式下傳輸文本文件。第三個選項,但是它可能每次都運行一些不方便 - dos2unix命令完全是你所需要的 第四種選擇是在Unix終端中使用vi或一些編輯器。我認爲沒有必要爲此做腳本。

2

默認情況下,WinSCP不會在外部編輯器中轉換用於編輯文件的EOL序列,除非編輯器是Windows內置的notepad.exe

因此,您必須已經在首選項中啓用了轉換。

的文件強制文本傳輸模式在外部編輯器編輯選項上Editor Preferences dialog

enter image description here

使用選項調整過,你會得到的文件在記事本中打開++正是因爲它被保存在服務器。