首先我会说我已阅读this post但我仍然遇到CR line terminators
的问题。
有一个名为build_test.sh
的文件,我在leafpad
进行了修改,可以在Vim
中显示:
cp ~/moonbox/llvm-2.9/lib/Transforms/MY_TOOL/$1 test.cpp
cd ~/moonbox/llvm-obj/tools/TEST_TOOL/
make
make install
cd -
然而:
cat build_test.sh
输出无。 more build_test.sh
输出:cd - install/llvm-obj/tools/TEST_TOOL/Y_TOOL/$1 test.cpp
less build_test.sh
输出:cp ~/moonbox/llvm-2.9/lib/Transforms/MY_TOOL/$1 test.cpp^Mcd ~/moonbox/llvm-obj/tools/TEST_TOOL/^Mmake^Mmake install^Mcd -
file build_test.sh
的结果是:
build_test.sh: ASCII text, with CR line terminators
关注this post后,^M
不再存在,但没有更多换行符:-(
file build_test_no_cr.sh
的结果现在是:
build_test_nocr.sh: ASCII text, with no line terminators
可以看到解决方案here。
但是我仍然希望cat
显示任何内容,more
显示如此奇怪的结果。此外,在这种情况下,为什么Vim中的dos2unix
和set fileformat=unix
失败。
ps:我想也许我的编辑器( Vim 或 leafpad ?)只为换行符生成\r
而不是\n
。怎么会这样呢?
答案 0 :(得分:11)
换行符的简单\r
终止符是“旧Mac”行终止符,2012年的编辑器甚至会生成带有此类行终结符的文件,这很奇怪...无论如何,您可以使用mac2unix
命令,它是dos2unix
发行版的一部分:
# Edits thefile inline
mac2unix thefile
# Takes origfile as an input, outputs to dstfile
mac2unix -n origfile dstfile
此命令不会使已经预期行终止符的文件变为munge,这是一个奖励。反之(unix2mac
)也存在。
请注意,mac2unix
与dos2unix -c mac
相同。
答案 1 :(得分:7)
此外,如果您使用vim,则可以通过执行
来强制执行UNIX行结束:set fileformat=unix
:w
或只是添加
set fileformat=unix
到您的.vimrc文件
答案 2 :(得分:4)
我终于想通了我可以使用这个命令:
tr '^M' '\n' <build_test.sh >build_test_nocr.sh
通过按^M
和Ctrl+v
键添加Enter
。或者,这具有相同的效果:
tr '\r' '\n' <build_test.sh >build_test_nocr.sh