6

まず、この投稿を読みましたが、まだ問題があり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 -

でも:

  1. それを使用しても何もcat build_test.sh出力されません。
  2. それを使用more build_test.shすると、次のように出力されます。cd - install/llvm-obj/tools/TEST_TOOL/Y_TOOL/$1 test.cpp
  3. それを使用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

この投稿に続いて、^Mはもう存在しませんが、改行はもうありません:-(
の結果は次のfile build_test_no_cr.shとおりです:

build_test_nocr.sh: ASCII text, with no line terminators

解決策はここで見ることができます。

catしかし、なぜ何もmore表示されず、奇妙な結果が表示されるのか、まだ知りたいです。さらに、なぜこの場合dos2unixset fileformat=unixVim で失敗するのか。

ps: おそらく私のエディタ ( Vimleafpad ?) は、\rむしろ\n改行のみを生成すると思います。どうしてそうなるの?

4

3 に答える 3

11

改行の単純な\rターミネータは「古い Mac」の行ターミネータです。2012 年以降のエディタがそのような行ターミネータを含むファイルを生成するのは奇妙です... とにかく、ディストリビューションmac2unixの一部であるコマンドを使用できます。dos2unix

# Edits thefile inline
mac2unix thefile
# Takes origfile as an input, outputs to dstfile
mac2unix -n origfile dstfile

このコマンドは、行末記号が既に予期されているファイルをマンジしません。これはおまけです。また、その逆 ( unix2mac) も存在します。

mac2unixと同じであることに注意してくださいdos2unix -c mac

于 2012-12-29T09:19:27.340 に答える
10

また、vimを使用している場合は、実行することでUNIXの行末を強制できます。

:set fileformat=unix
:w

または単に追加します

set fileformat=unix

.vimrcファイルに

于 2012-12-29T09:38:10.940 に答える
6

私は最終的に、このコマンドを使用できることを理解しました:

tr '^M' '\n' <build_test.sh >build_test_nocr.sh

とキー^Mを押すCtrl+vと追加されEnterます。また、これは同じ効果があります。

tr '\r' '\n' <build_test.sh >build_test_nocr.sh
于 2012-12-29T10:26:05.207 に答える