运行linux的脚本老是出现":Nosuchfileordirectory"错误

标题无“转载”即原创文章,版权所有。转载请注明来源:http://besteam.im/blogs/article/31/。

我一直对字符界面有抵触感,即使会用vim,我的linux脚本(python/bashscript)一般都是在windows下写完调试好,然后传到linux上的。

不过写好的linux脚本传到linux上运行的时候却经常报这样的错:

$ cat fish.py#!/usr/bin/env pythonprint "fish"$ chmod u+x fish.py$ ./fish.py: No such file or directory

找不到文件?可是无论怎么修改脚本,都没办法解决。找不到文件,那应该是第一行的env命令有问题啰?真是让人让人摸不着脑袋,其实这是因为换行符的问题。

我们知道,linux下的文本文件以ascii码为10的字符表示换行。而windows下则使用连续的13和10两个字符。在python和c语言里使用r代表ascii符为13的字符,叫做回车符,而n代表ascii码为10的字符,叫做换行符。对于:

#!/usr/bin/env pythonrn

这样一行文本,windows下的程序会认为#!/usr/bin/envpython就是一行。而linux呢,则会认为#!/usr/bin/env pythonr是一行。于是,刚才的错误就出来了,因为根本没有pythonr这个文件嘛。

有个比较奇怪的地方,仔细想想,env如果出错的话应该是报这样的错误信息的:

/usr/bin/env: python : No such file or directory   (python后面有一个回车符)

那为什么现在是:

: No such file or directory

这主要是因为r这个字符的缘故。在linux终端下,输出r会什么都不显示,只是把光标移到行首。看看我用python取得env输出的出错信息:

/usr/bin/env: pythonr: No such file or directory

于是终端虽然输出了/usr/bin/env:python,但是碰到r后,光标会被移到行首,接着输出了:Nosuch file or directory把前面的覆盖掉了。于是我们就看到那个莫名其妙的出错信息了。

可能有人会怪windows怎么那么傻,一个n不就可以了,为什么要用rn呢,给我们造成了多大的麻烦。其实这也不能怪windows。使用rn的历史可以追溯到遥远的19世纪。那时候发明的打字机主要结构是一个实心圆筒+排列成菊花状的字模。纸张被牢牢地固定在圆筒的表面上。当我们按下一个字母的时候,机械装置引动字模"飞"向纸张,同时圆筒前的色带升起,用力地印下去,于是纸张上面就出现一个字了。印完之后,机械装置自动地让圆筒向左移动一个字母格子,方便打印下一个字符。打完一行之后,左手边上有一个摇杆,摇一下,圆筒就可以滚动一个行距,这是换行。不过,因为打字的时候圆筒总会不断地向左移动,所以打字员还需要用力地把圆筒推回右边,这就是传说中的回车了。在计算机里常见的换行操作在打字机里需要换行+回车两个操作。自然,计算机里不用这么麻烦,不过windows喜欢看起来更兼容一点。于是换行就成了rn了。

解决办法:

Lookup up:

运行linux的脚本老是出现
:set fileformat=unix
:set fileformat=dos

This can be used on either platform to switch to the otherencoding.

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/364916.html

更多阅读

LOL登陆出现未知错误怎么办:2 LOL修复

LOL登陆出现未知错误怎么办:[2]LOL修复——简介在LOL英雄联盟时,出现“未知错误”而导致登陆LOL失败,对此我们可以通过以下方法来修复LOL客户端程序。LOL登陆出现未知错误怎么办:[2]LOL修复——方法/步骤LOL登陆出现未知错误怎么办:[2]L

电脑出现DNS错误无法上网怎么办 精 dns配置错误不能上网

电脑出现DNS错误无法上网怎么办 精——简介电脑正在上着网的时候突然在打开的页面上出现了DNS错误,无法上网了,这时候你是否感觉特别的郁闷,对于DNS错误应该如何处理呢?电脑出现DNS错误无法上网怎么办 精——方法/步骤电脑出现DNS错误

如何登陆Linux的VPS vps linux 游戏服务器

既然是linux的VPS,当然就不像windows那样,有远程桌面,那么linux的系统我们要怎样来登陆管理呢? ? ?首先我们要下载一个工具PuTTY,下载好了以后打开,出现如下界面:(所谓的中文版带有后门慎用)

Windows7下启用IIS7配置ASP运行环境的详细方法 iis7启用父路径

第一次在windows7下配置IIS,虽然有丰富的xp下配置IIS的经验,但还是会遇到不少的问题。特别是对入门者来说,搞清一些东西还是挺费时间的。其实win7下的IIS7配置过程是非常简单的。下面让seo博客来详细的介绍一下win7下配置IIS7环境运行A

声明:《运行linux的脚本老是出现":Nosuchfileordirectory"错误》为网友小法师的忧伤分享!如侵犯到您的合法权益请联系我们删除