解决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.

时间: 2024-11-07 11:34:39

解决mac os下mcss命令报错:env: node\r: No such file or directory的相关文章

解决Mac OS下安装MyEclipse报错:Your system does not have sufficient memory to support MyEclipse

最近想尝尝鲜,FQ去www.myeclipseide.com上下载了最新版的MyEclipse 15CI版,安装的时候,报告如下错误(MyEclipse 14也会出现这个问题): Your system does not have sufficient memory to support MyEclipse. MyEclipse requires 256 MBs physical memory and 64 MBs of virtual memory. Your system only has

MAC OS 中mount nfs 报错问题.

记一下 MAC OS 中mount nfs 报错问题. 环境和配置文件 NFS 服务端 Ubuntu 安装 apt install nfs-kernel-server 服务端的配置文件 cat /etc/exports /nfsdata 192.168.22.1/26(rw,sync,insecure,no_root_squash) CentOS 下测试挂载 yum install nfs-utils -y mount -t nfs -o rw 192.168.22.8:/nfsdata /tm

Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令

分区的过程正常: [[email protected] /]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot      Start         End      Blocks   Id  System /dev/sda1   *

laravel 报错SQLSTATE[HY000] [2002] No such file or directory

在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = weifenxiao and table_name = migrations) [PDOException] SQLSTATE[HY000] [2002] No such file or directory

redis 安装报错 jemalloc/jemalloc.h: No such file or directory。

对于redis安装的这个错误,我在博客redis 安装 与错误解决办法最后有提及,但是网上大部分文章的对这个问题的解答都是有误的.所以在这里单列出来. 错误内容: jemalloc/jemalloc.h: No such file or directory. 文档 针对这个错误,我们可以在README.md 文件中看到解释. --------- Selecting a non-default memory allocator when building Redis is done by sett

PHP连接MySQL的时候报错SQLSTATE[HY000] [2002] No such file or directory

错误环境:Mac OS 10.10 找到mysql.sock文件的位置 $sudo find / -name mysql.sock ------结果如下---------- find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory /private/tmp/mysql.sock 检查/var/mysql是否存在 $ll /var/mysql 如果/var/mysql不存在则创建 $sudo mkdir /var/mysql

windows系统下编写的sh拷贝到ubuntu后执行出错:/usr/bin/env: ‘bash\r’: No such file or directory

用 ./ 运行bash脚本文件出现 报错信息 /usr/bin/env: "bash\r": 没有那个文件或目录 错误原因:这主要是因为bash后面多了\r这个字符的原因.在linux终端下,输出\r会什么都不显示,只是把光标移到行首.于是终端虽然输出了/usr/bin/env bash,但是碰到\r后,光标会被移到行首,接着输出了:No such file or directory把前面的覆盖掉了.于是出现了那个莫名其妙的出错信息了 解决办法: 用vim打开sh脚本文件, 重新设置文

解决Mac下sed命令报错的问题

在Mac上准备批量替换一些文字,使用sed命令,如下: sed -i 's/xxx/yyy/g' file 同样的命令在Linux上是可以成功运行的,注意Mac下man sed中-i参数的说明: 原来是Mac的备份要求,好吧!那就这么搞,如下: sed -i '' 's/xxx/yyy/g' file 原文地址:https://www.cnblogs.com/Don/p/8945957.html

mac os下常用命令

mac下常用的命令: ls列目录 ls 参数  目录名字   (参数-w 显示中文,-l 详细信息, -a 包括隐藏文件) mkdir创建目录 touch 文件  (创建文件) cp 参数 文件  目标文件  (参数-r表示拷贝文件夹下面的所有东西) rm 参数 文件(参数 -rf删除这个文件夹下面的所有东西) mv 文件 目标文件  (移动文件夹) nano 文件名 vi 文件名都是用来查看文件的他们的退出方式不一样 nano退出方式都是ctrol+对应的帮助键 vi的退出都是点击esc然后通