我特别喜欢用 notepad ssh 到学校 linux 服务器撸代码
最近写脚本语言( perl,ruby )的时候,经常会报各种稀奇古怪的错。总结一下心得。
[/img]
看起来很正常,但是错误提示找不到文件,所以怀疑是第一行没有成功调用 ruby。
试试用 ruby 手动运行脚本,果然提示 shellbang 有一个\r,可能会造成问题。
[img]
[/img]
转成 16 进制看下,查了下 ASCII 字符 16 进制的代码,果然一堆 CR 符 \r 0x0d,windows 系统的换行是\r\n,先回车(carriage return),再换行(line feed),可以追溯到打字机时代。而 linux 直接\n 就换行了
[img]
[/img]
最简单方法,写个脚本二进制打开程序文本,删除所有 0d。记得去年上 socket 编程的时候,老师第一个教的程序就是在 linux 和 windows 之间转换文本,就是这样实现的
但是这样的话,每次写两行想测试的时候,就得手动运行下转换程序,额外增加了负担(我保存 ctrl S 都懒得按,用的是 notepad++的窗口失去焦点自动保存。。。)
但我又不想用 ssh 客户端的垃圾编辑器,于是将就一下,手动再 linux 里用 vim 敲第一行,剩下的 notepad++ ssh 就可以继续写了
还有什么坑,想想继续码字
最近写脚本语言( perl,ruby )的时候,经常会报各种稀奇古怪的错。总结一下心得。
[/img]看起来很正常,但是错误提示找不到文件,所以怀疑是第一行没有成功调用 ruby。
试试用 ruby 手动运行脚本,果然提示 shellbang 有一个\r,可能会造成问题。
[img]
[/img]转成 16 进制看下,查了下 ASCII 字符 16 进制的代码,果然一堆 CR 符 \r 0x0d,windows 系统的换行是\r\n,先回车(carriage return),再换行(line feed),可以追溯到打字机时代。而 linux 直接\n 就换行了
[img]
[/img]最简单方法,写个脚本二进制打开程序文本,删除所有 0d。记得去年上 socket 编程的时候,老师第一个教的程序就是在 linux 和 windows 之间转换文本,就是这样实现的
但是这样的话,每次写两行想测试的时候,就得手动运行下转换程序,额外增加了负担(我保存 ctrl S 都懒得按,用的是 notepad++的窗口失去焦点自动保存。。。)
但我又不想用 ssh 客户端的垃圾编辑器,于是将就一下,手动再 linux 里用 vim 敲第一行,剩下的 notepad++ ssh 就可以继续写了
还有什么坑,想想继续码字


