微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash命令截断

我有一个bash文件内容

cd /var/www/path/to/folder git pull

当我运行它我得到

: No such file or directorywww/path/to/folder ' is not a git command. See 'git --help'. Did you mean this? pull

任何想法为什么bash得到一个截断版本的命令?

如何终止与sudo运行的进程? 按Ctrl + C做,但不杀

从bash脚本返回输出调用C ++函数

使用Bash的Netcat TCP编程

为什么我的布尔testing在bash中切换?

从包含ANSI转义属性的gitlab-runner输出parsing标记

如何即时显示exec-maven-plugin的输出

可以'find'或任何其他工具search宽度优先的文件

在Linux Ubuntu上将jar文件作为守护程序运行

在bash中使用awkvariables

Linux命令variablesreplace。 帮助表示赞赏

你有回车(Windows文本文件行尾)在你的bash脚本。 删除它们。

bash文件应该看起来像这样在hexdump -C :

00000000 63 64 20 2f 76 61 72 2f 77 77 77 2f 70 61 74 68 |cd /var/www/path| 00000010 2f 74 6f 2f 66 6f 6c 64 65 72 0a 67 69 74 20 70 |/to/folder.git p| 00000020 75 6c 6c 0a |ull.| 00000024

但你的看起来像这样:

00000000 63 64 20 2f 76 61 72 2f 77 77 77 2f 70 61 74 68 |cd /var/www/path| 00000010 2f 74 6f 2f 66 6f 6c 64 65 72 0d 0a 67 69 74 20 |/to/folder..git | 00000020 70 75 6c 6c 0d 0a |pull..|

注意在0a s(十六进制0A =十进制10 = ASCII换行,POSIX n ,这是什么bash对待作为结束的额外的0D的(十六进制0D =十进制13 = ASCII回车,POSIX r )一条线)。

回车不是在bash中的空格,所以它被视为文件名和git命令的一部分。 打印时,它将光标移动到行的开头,这就是为什么你的输出看起来像这样。 它打印的东西像"foo.bash: line 1: cd: /www/path/to/folderr: No such file or directory" ,但r使光标移动到行首并覆盖第一个部分消息与": No such file or directory"部分。

一个名为dos2unix的程序,您可以使用该文件删除回车:

dos2unix filename >newfilename

或者你可以使用tr命令:

tr -d $'r' <filename >newfilename

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐