据我了解,如果我在Solaris服务器上创建文件,我将自动获得LF结束行。
设置:我远程登录到Windows服务器(只要我连接到它就没有互联网)。在这个Windows服务器上,我使用Winscp登录到solaris服务器。
问题:当我在Solaris服务器上创建文本文件(使用WinSCP)时,我可以使用Notepad ++打开它。当我打开文件时,它总是有CRLF作为换行符,我不知道为什么。然后我将'/ r / n'中的'find and replace'更改为'/ n',将CRLF字符更改为LF。当我找到并替换时,我看到换行符已被更改为'LF'。但是,只要我保存文件并重新打开它,我们就会回复'CRLF'。
这可能是notepadd ++向我展示虚假角色可能与通过WinSCP打开Solaris文件有关吗?
或者我应该使用shell脚本(bash)制作文件?
即使我使用shell脚本创建文件,我怎么能确定该文件中的换行符是LF而不是CRLF(有没有办法在终端上执行?),因为现在我正在使用Notepad ++和当我重新打开文件时,它总是将CRLF显示为换行符。
目标:我想要的只是创建任何带有'LF'作为换行符的文本文件。我正在使用Solaris bash。
答案 0 :(得分:2)
winscp做的是它打开了一个内部文本编辑器供您输入文本内容。它使用您指定的名称在Windows计算机上本地保存到临时文件,最后以ascii模式将其传输到Solaris。
当您将其下载到Windows时,它很可能也是以ascii模式下载的。因此,更改行字符转换为Windows flavor CR + LF。
看起来不错。如果你想确定它,我建议你用Solaris上的编辑器检查文件内容,例如vi。 Winscp有一个菜单选项Commands - >在PuTTY中为您打开。
答案 1 :(得分:2)
默认情况下,WinSCP不会转换EOL序列以在外部编辑器中编辑文件,除非编辑器是Windows内置的notepad.exe
。
所以你必须自己启用偏好转换。
请参阅Editor Preferences dialog上在外部编辑器中编辑的文件强制文本传输模式选项:
关闭选项后,您将在Notepad ++中打开文件,就像存储在服务器上一样。
答案 2 :(得分:-1)
有一些选择。您可以设置Notepad ++来创建Unix样式的文本文件。另一种选择是设置scp,以便在文本模式下传输文本文件。第三种选择,但每次运行可能会有些不方便 - dos2unix命令完全符合您的需要 第四个选项是在Unix终端中使用vi或某些编辑器。我认为没有必要为此编写脚本。