उबंटू पर नोटपैड (विंडोज) में बनाई गई स्क्रिप्ट को चलाना


14

मैंने विंडोज पर एक नोटपैड फ़ाइल बनाई और इसे उबंटू में कॉपी किया। फ़ाइल में कुछ iptables नियम हैं। फ़ाइल का उपयोग करने chmod +xऔर इसे निष्पादित करने के बाद, यह काम नहीं किया।

हालाँकि, जब मैंने उबंटू ( gedit ) फ़ाइल बनाई और नोटपैड फ़ाइल से समान सामग्री की प्रतिलिपि बनाई, तो इसे निष्पादन योग्य बनाया और इसे चलाया, यह काम किया।

नोटपैड फ़ाइल को उबंटू पर चलाने के लिए मुझे क्या करना चाहिए?


जवाबों:


20

विंडोज और लिनक्स में अलग-अलग अंत-चिह्न हैं।

आप dos2unixइसे ठीक करने वाली उपयोगिता को स्थापित कर सकते हैं :

sudo apt-get install dos2unix

इसे इस तरह से चलाएं:

dos2unix -n winfile.txt linuxfile.txt

unix2dosउपयोगिता भी है ।

विंडोज-टू-लिनक्स रूपांतरण किसी विशेष सॉफ़्टवेयर को स्थापित किए बिना भी किया जा सकता है

 tr -d '\r' < winfile.txt > linuxfile.txt

नोट: इनपुट और आउटपुट फाइलें अलग-अलग होनी चाहिए।

एक sed संस्करण "जगह में" फ़ाइल को संपादित करेगा:

 sed  -i 's/\r//g' file.txt

या दूसरी फाइल पर लिखें:

 sed 's/\r//g' winfile.txt > linuxfile.txt

आपकी आज्ञा गलत है। dos2unix winfile.txt linuxfile.txtदोनों फ़ाइलों को परिवर्तित करने की कोशिश करता है। इस कमांड का प्रयोग करेंdos2unix -n winfile.txt linuxfile.txt
AB

@AB फिक्स्ड। तुम सही हो। उन्होंने इनपुट पैरामीटर्स बदले। मैंने लंबे समय तक इसका इस्तेमाल नहीं किया।
पायलट

वैसे भी, अच्छा जवाब +1
एबी

आपको बहुत बहुत धन्यवाद। चूंकि मेरे पास नोटपैड ++ नहीं है और मैं एक नया पैकेज (dos2unix) स्थापित नहीं करना चाहता था, इसलिए मैंने "tr" कमांड को प्राथमिकता दी। मैंने इसे आजमाया और यह काम आया। लेकिन कृपया ध्यान दें कि स्रोत और गंतव्य फ़ाइलों को अलग होना चाहिए।
अल्बर्ट

@ अल्बर्ट जवाब में जोड़ा गया। यह फ़ाइल का नाम रखने के लिए एक और तरीका हो सकता है, लेकिन यह IMHO प्रयास के लायक नहीं है। और वैसे भी अलग-अलग नामों से बेहतर है कि फाइलों को न मिलाएं।
पायलट

6

विंडोज पर, आपको नोटपैड ++ में UNIX को लाइन ऑफ (EOL) फॉर्मेट को बदलना होगा:

यहां छवि विवरण दर्ज करें

इस तरह यह उबंटू पर भी काम करेगा।


1
इस तरह यह केवल उबंटू / लिनक्स पर काम करेगा । जबकि नोटपैड ++ जैसे विशेष उन्नत संपादकों को समाप्त होने वाली रेखा को पहचान सकते हैं और इसे सही तरीके से प्रदर्शित कर सकते हैं, सामान्य विंडोज नोटपैड आदि नहीं होगा।
बाइट कमांडर

@ByteCommander YES, लेकिन वह इसे Ubuntu पर चलाना चाहते हैं।

1
हां बिल्कुल। मुझे पता है और इसलिए उत्थान किया। मैं बस इस तथ्य को स्पष्ट करना चाहता था, ताकि कोई भी आश्चर्यचकित न हो जब फ़ाइल अब सामान्य नोटपैड में अजीब दिखे।
बाइट कमांडर

2
मुझे लगता है कि ओपी विंडोज में बिल्ट-इन प्रोग्राम नोटपैड का जिक्र कर रहा है , न कि थर्ड पार्टी प्रोग्राम नोटपैड ++ का । यदि आप सुझाव देते हैं कि इस उद्देश्य के लिए विंडोज पर Nodepad ++ स्थापित किया जाना चाहिए, तो क्या आप इसे अपने उत्तर में अधिक स्पष्ट कर सकते हैं? जैसा कि यह अभी खड़ा है, मुझे लगता है कि यह भ्रामक है।
पीटर मोर्टेंसन

@PeterMortensen मैंने उनके प्रश्न को फिर से पढ़ा, मुझे नहीं लगता कि मुझे गलत समझा गया और मेरा जवाब उनकी समस्या के अच्छे समाधानों में से एक है।

2

विंडोज लाइन ब्रेक के लिए CR + LF का उपयोग करता है। लिनक्स / यूनिक्स में आपको LF की आवश्यकता होती है। इसलिए आपको अपनी स्क्रिप्ट में CR + LF को LF में बदलना होगा:

इंस्टॉल dos2unix

sudo apt-get install dos2unix

और के माध्यम से अपनी स्क्रिप्ट को सही करें

dos2unix <your_script_file>

या के माध्यम से

dos2unix -n <your_script_file> <out_file>

अगर आपको एक अलग आउटपुट फ़ाइल की आवश्यकता है

यहाँ और अधिक informations


से man dos2unix

NAME
       dos2unix - DOS/Mac to Unix and vice versa text file format converter

SYNOPSIS
           dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
           unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]

1

मैं विंडोज पर साइबरविन का उपयोग करता हूं।
Vi के साथ फाइल खोलें। फिर दर्ज करें

:set ff=unix<enter> followed by 
:wq<enter> 

लाइन वर्णों के यूनिक्स अंत के साथ फाइल को बचाएगा।


0

आप पूर्व मोड में विम का उपयोग कर सकते हैं:

ex -bsc '%s/\r//|x' file
  1. % सभी लाइनों का चयन करें

  2. s विकल्प

  3. \r कैरिज रिटर्न

  4. x सहेजें और बंद करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.