Linux chmod:无法访问‘\r’;:没有这样的文件或目录

Linux chmod:无法访问‘\r’;:没有这样的文件或目录,linux,bash,Linux,Bash,我的aaa.sh文件中有以下两行: #!/bin/bash chmod +x /home/tot/*.html 当我在AWS EC2 Linux上运行它时: $ sh aaa.sh 我得到了这个信息: chmod: cannot access ‘\r’: No such file or directory chmod不应该关心文件的内容。我打赌您有一个文件名本身带有控制字符的文件。可能会显示为问号,但ls-b*.html应显示罪犯。确实需要可执行的html文件吗?文件中有Windows行

我的
aaa.sh
文件中有以下两行:

#!/bin/bash
chmod +x  /home/tot/*.html
当我在AWS EC2 Linux上运行它时:

$ sh aaa.sh
我得到了这个信息:

chmod: cannot access ‘\r’: No such file or directory

chmod不应该关心文件的内容。我打赌您有一个文件名本身带有控制字符的文件。可能会显示为问号,但
ls-b*.html
应显示罪犯。确实需要可执行的html文件吗?

文件中有Windows行结尾(\r\n)。它需要有Unix样式的行尾(\n仅限)


您可以使用公共
dos2unix
实用程序或vim中的
set ff=unix
命令进行转换。

您的文件中有Windows行结尾(
\r\n
)。它需要有Unix风格的行尾(
\n
仅限)。@AndrewMedico建议通过dos2unix或类似的实用程序运行该文件。如果您没有
dos2unix
,您可能可以安装它;包名为
dos2unix
。或者你可以使用
tr
,类似这样:
tr-d'\r'aaa.sh.$$&&mv aaa.sh.$$aaa.sh
我在我的windows机器上遇到了同样的问题,通过使用上面的命令解决了它。在过去的两天里,我一直试图在windows上解决这个问题,尽管我在ubuntu上没有遇到任何问题。非常感谢@KeithThompsonInteresting的建议,但更可能的是脚本本身有Windows风格的行尾。关于可执行HTML文件的好观点。