2012-12-29 63 views
5

हटाएं सबसे पहले मैं कहूंगा कि मैंने this post पढ़ा है हालांकि मुझे अभी भी CR line terminators के लिए समस्याएं हैं।सीआर लाइन टर्मिनेटर

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 का उपयोग

    वहाँ एक फ़ाइल build_test.sh कहा जाता है, मैं leafpad में संपादित किया है और यह Vim में सही प्रदर्शित किया जा सकता है।

  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 

this post के बाद, ^M नहीं रह गया है वहाँ कोई और अधिक है, लेकिन मौजूद है लाइन ब्रेक :-(
file build_test_no_cr.sh का परिणाम एन है ओउ:

build_test_nocr.sh: ASCII text, with no line terminators 

समाधान here देखा जा सकता है।

हालांकि मुझे अभी भी चाहिए कि क्यों cat कुछ भी प्रदर्शित नहीं करता है और more इतना अजीब परिणाम प्रदर्शित करता है। इसके अलावा विम में dos2unix और set fileformat=unix इस मामले के लिए विफल रहता है।

पुनश्च: मुझे लगता है कि हो सकता है कि अपने संपादक (विम या leafpad?) केवल \r बल्कि \n न्यू लाइन के लिए उत्पन्न करता है। यह कैसे हो सकता है? नई-पंक्तियों के लिए

उत्तर

10

सरल \r टर्मिनेटर्स "पुराने मैक" लाइन टर्मिनेटर्स हैं, यह अजीब है कि 2012+ में एक संपादक भी ऐसी रेखा टर्मिनेटर्स के साथ फ़ाइलों को उत्पन्न करता है ... वैसे भी, आप mac2unix आदेश है, जो का हिस्सा है उपयोग कर सकते हैं dos2unix वितरण:

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

यह आदेश फाइलों जो पहले से ही उम्मीद है लाइन टर्मिनेटर्स है, जो एक बोनस है Munge नहीं होंगे। और रिवर्स (unix2mac) भी मौजूद है।

ध्यान दें कि mac2unixdos2unix -c mac जैसा ही है।

+0

दुर्भाग्य:

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

जहां ^M दबाने Ctrl+v और Enter keys.Alternately से जोड़ा जाता है, यह एक ही प्रभाव पड़ता है , मैंने बिना किसी प्रभाव के कोशिश की ;-( –

+0

यह सबसे विचित्र है, यह आदेश हमेशा मेरे लिए काम करता है। यह बताने के लिए कि आप इसका उपयोग करने का प्रयास कैसे करते हैं? – fge

+0

'build_test.sh' पहले' लीफपैड 'का उपयोग करके संपादित किया गया है (नहीं एम विंडोज या डॉस ओएस)। मैं बस 'dos2unix build_test.sh build_test_nocr.sh' का उपयोग करता हूं और' file build_test_nocr.sh' मुझे बताता है कि 'build_test_nocr.sh: ASCII पाठ, सीआर लाइन टर्मिनेटर के साथ –

6

इसके अलावा, अगर आप vim साथ काम करते हैं, आप यूनिक्स लाइन अंत

:set fileformat=unix 
:w 

या क्रियान्वित करते हुए लागू करने के लिए बस अपने

set fileformat=unix 

जोड़ सकते हैं।vimrc फ़ाइल

+1

इसका कोई प्रभाव नहीं पड़ता है :-( –

4

मैं अंत में पता लगा है कि मैं इस आदेश का उपयोग कर सकते हैं:

tr '\r' '\n' <build_test.sh >build_test_nocr.sh