解决mac os下mcss命令报错:env: node\r: No such file or directory
标题无“转载”即原创文章,版权所有。转载请注明来源:http://besteam.im/blogs/article/31/。
我一直对字符界面有抵触感,即使会用vim,我的linux脚本(python/bash script)一般都是在windows下写完调试好,然后传到linux上的。
不过写好的linux脚本传到linux上运行的时候却经常报这样的错:
$ cat fish.py #!/usr/bin/env python print "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 python\r\n
这样一行文本,windows下的程序会认为#!/usr/bin/env python
就是一行。而linux呢,则会认为#! /usr/bin/env python\r
是一行。于是,刚才的错误就出来了,因为根本没有python\r
这个文件嘛。
有个比较奇怪的地方,仔细想想,env
如果出错的话应该是报这样的错误信息的:
/usr/bin/env: python : No such file or directory (python后面有一个回车符)
那为什么现在是:
: No such file or directory
这主要是因为\r
这个字符的缘故。在linux终端下,输出\r
会什么都不显示,只是把光标移到行首。看看我用python取得env输出的出错信息:
/usr/bin/env: python\r: No such file or directory
于是终端虽然输出了/usr/bin/env: python
,但是碰到\r
后,光标会被移到行首,接着输出了:No such file or directory
把前面的覆盖掉了。于是我们就看到那个莫名其妙的出错信息了。
可能有人会怪windows怎么那么傻,一个\n
不就可以了,为什么要用\r\n
呢,给我们造成了多大的麻烦。其实这也不能怪windows。使用\r\n
的历史可以追溯到遥远的19世纪。 那时候发明的打字机主要结构是一个实心圆筒+排列成菊花状的字模。纸张被牢牢地固定在圆筒的表面上。当我们按下一个字母的时候,机械装置引动字模"飞"向纸张,同时圆筒前的色带升起,用力地印下去,于是纸张上面就出现一个字了。印完之后,机械装置自动地让圆筒向左移动一个字母格子,方便打印下一个字符。打完一行之后,左手边上有一个摇杆,摇一下,圆筒就可以滚动一个行距,这是换行。不过,因为打字的时候圆筒总会不断地向左移动,所以打字员还需要用力地把圆筒推回右边,这就是传说中的回车了。在计算机里常见的换行操作在打字机里需要换行+回车两个操作。自然,计算机里不用这么麻烦,不过windows喜欢看起来更兼容一点。于是换行就成了\r\n
了。
解决办法:
Lookup up:
:set fileformat=unix
:set fileformat=dos
This can be used on either platform to switch to the other encoding.
解决mac os下mcss命令报错:env: node\r: No such file or directory的更多相关文章
- node 报错 env: node\r: No such file or directory
最近在编写一个命令行工具.使用 npm link 时可以正常运行.但是 ctrl+s 保存后, 再运行则报错 env: node\r: No such file or directory ,需要再 n ...
- 解决Mac OS下安装MyEclipse报错:Your system does not have sufficient memory to support MyEclipse
最近想尝尝鲜,FQ去www.myeclipseide.com上下载了最新版的MyEclipse 15CI版,安装的时候,报告如下错误(MyEclipse 14也会出现这个问题): Your syste ...
- MAC OS 中mount nfs 报错问题.
记一下 MAC OS 中mount nfs 报错问题. 环境和配置文件 NFS 服务端 Ubuntu 安装 apt install nfs-kernel-server 服务端的配置文件 cat /et ...
- 使用nsenter进入docker容器后端报错 mesg: ttyname failed: No such file or directory
通过nsenter 进入到docker容器的后端总是报下面的错,, [root@devdtt ~]# docker inspect -f {{.State.Pid}} mynginx411950 [r ...
- laravel 报错SQLSTATE[HY000] [2002] No such file or directory
在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from i ...
- Linux系统下ping命令报错 name or service not know
问题描述 CentOS,但是当执行ping命令的时候,提示name or service not known 解决方法 1.添加DNS服务器 vi /etc/resolv.conf 进入编辑模式,增加 ...
- <linux报错解决>在Fedora21下安装vmware报错的解决办法
关于VMWARE WORKSTATION在Fedora21下的安装问题 (1)在Fedora21下安装vmware如果在终端下启动,提示你找不到内核头文件Kernel Headers的话使用命令: s ...
- Windows下jmap命令报错问题
最近换了笔记本,新的工作环境下jmap命令居然在报错,而jps.jstat.jinfo.jstack都能正常使用,所以初步排除进程号的问题. Attaching to core 17536 fr ...
- Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令
分区的过程正常: [root@db1 /]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/tr ...
随机推荐
- 匹配PC和移动端
方法1: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; ret ...
- Redis的二八定律
常用命令: 1.setex key 有效时间 value ----------意思就是添加并设置该键值对的存活时间 2.mset key1 value1 key2 value2 key3 value3 ...
- hadoop2.5.2安装部署
0x00 说明 此处已经省略基本配置步骤参考Hadoop1.0.3环境搭建流程,省略主要步骤有: 建立一般用户 关闭防火墙和SELinux 网络配置 0x01 配置master免密钥登录slave 生 ...
- EM and GMM(Theory)
Part 1: Theory 目录: What's GMM? How to solve GMM? What's EM? Explanation of the result What's GMM? GM ...
- BDD框架:behave学习记录
本人学习的时候基本上是按照behave的tutorial教程一步步学习的,这篇文章就当Behave教程的翻译版吧(*^__^*) 嘻嘻--. 1 安装behave 安装好python后 ...
- shell-早间学习,每日一点-5
http://www.cnblogs.com/liuling/p/2013-8-4-01.htmlhttp://www.cnblogs.com/stephen-liu74/category/32665 ...
- 初探Lambda表达式/Java多核编程【3】Lambda语法与作用域
接上一篇:初探Lambda表达式/Java多核编程[2]并行与组合行为 本节是第二章开篇,前一章已经浅显地将所有新概念点到,书中剩下的部分将对这些概念做一个基础知识的补充与深入探讨实践. 本章将介绍L ...
- Javascript高级程序设计——语法、关键字、保留字、变量、数据类型
1.了解基本语法,JS大小写区分.注释风格.什么是严格模式等. 2.知道ES3和ES5的关键字和保留字大概有哪些,如果使用关键字会报什么错,使用保留字决定于特定浏览器引擎. 3.全局变量和局部变量的定 ...
- 第十七篇 基于Bootstarp 仿京东多条件筛选插件的开发(展示下)
前些时候用换了工作,本来是用的前端框架是easyui,后面用的是bootstrap.对于我来说虽然不是新东西,因为原来毕业时候用过一段时间,也不懂什么插件的开发,现在用过easyui后觉得easyui ...
- Bean复制
有的时候我们需要将一个bean的属性赋值到另一个bean的属性中,比如用户提交过来的表单bean需要将该bean中的属性值赋值到对应的数据库bean,我们通常会以这样的方式做: User user = ...