क्या vi में एक टेक्स्ट फ़ाइल बनाने से मेरा कंप्यूटर बदल जाएगा?


9

मुझे पता है कि लिनक्स एक ऑपरेटिंग सिस्टम है जो टेक्स्ट फाइलों पर बनाया गया है। मैं जो कुछ करना चाहता हूं वह viउन सभी विभिन्न कमांडों का उपयोग करके एक फ़ाइल बनाना है जो मैंने सीखा है। इस तरह मैं प्रत्येक व्यक्ति के आदेश मिल सकता है बहुत आसानी से उपयोग कर रहा /में vi। लेकिन मैं केवल यही करना चाहता हूं अगर यह मेरे कंप्यूटर के काम करने के तरीके को नहीं बदलता है। क्या यह एक अच्छा विचार होगा?


12
हां, इसमें कहीं न कहीं एक टेक्स्ट फाइल होगी। ;-) (मजाक) वास्तव में, एक फ़ाइल एक फ़ाइल है। यह पूछने की तरह है कि क्या किसी फोल्डर में फोटो जोड़ना या नया वर्ड डॉक्यूमेंट बनाना आपके कंप्यूटर को बदल देगा। हाँ यह होगा; आपके पास वहां एक और फोटो / दस्तावेज है। जो भी हो, आपको मिले उत्तर अधिकतर सही हैं।
रमानो

आप ऐसा क्यों सोचेंगे?
ब्रियाम

2
यह निश्चित नहीं है कि "टेक्स्ट फ़ाइलों पर निर्मित एक ऑपरेटिंग सिस्टम" से आपका क्या मतलब है, लेकिन लिनक्स वास्तव में पाठ फ़ाइलों की बात करते हुए, विंडोज से अलग नहीं है। विंडोज में .ini और .bat फाइलें हैं उदाहरण के लिए, यदि आप यही सोच रहे हैं।
hyde

इसके अलावा, क्या आपको लगता है कि इसके बारे में कुछ विशेष है vi(जैसा कि, कहना, की तुलना में gedit) या आपका मतलब सिर्फ "एक पाठ संपादक" था?
श्री लिस्टर

1
@BJsgoodlife कुछ टेक्स्ट फाइलें सिस्टम को नियंत्रित करती हैं। उन्हें विशेष स्थानों पर रखा जाता है और आम तौर पर उन्हें बिना संशोधित नहीं किया जा सकता है sudo
cpast

जवाबों:


34

पाठ फ़ाइल लिखना "आपके कंप्यूटर के कार्य करने के तरीके" को बदलने वाला नहीं है।

विशेष रूप से, ऐसा कुछ करने के लिए, आपको एक कार्य करना होगा

  • कुछ महत्वपूर्ण फ़ाइल को अधिलेखित करें
  • अपनी फ़ाइल को एक विशेष संरक्षित स्थान जैसे * .d निर्देशिका / in आदि में लिखें; आपको ऐसा करने की अनुमति नहीं होगी
  • फ़ाइल निष्पादन योग्य को चिह्नित करें और इसे अपने पथ में रखें

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


3
मैंने सुझाव दिया #ताकि अनजाने में किसी भी तरह का मौका न मिले। मुझे लगता है कि इसका हमेशा बेहतर होना सुरक्षित है।
heemayl

8
मुझे लगता है कि हमेशा सुरक्षित रहना बेहतर नहीं होता। सुरक्षा में एक लागत है, और एक ऐसा बिंदु है जिस पर कम जोखिम अब लागत के लायक नहीं है। उदाहरण के लिए, जब आप उस चीज़ के मूल्य से अधिक हो जाते हैं जिसे आप सुरक्षित रखने की कोशिश कर रहे हैं (संदर्भों में जहां यह तर्क समझ में आता है)। ओवरऑल इंफ़ॉर्मेशन सिक्योरिटी पर आपको बहुत सारे उत्तर मिल सकते हैं, जिसमें चर्चा की गई है कि एक सुरक्षा व्यापार कैसे उचित है, और एकमात्र पूरी तरह से सुरक्षित प्रणाली भी पूरी तरह से बेकार है, इसलिए सभी मामलों में सही सुरक्षा पर जोर देना मूर्खतापूर्ण होगा।
डेविड जेड

9
एक अलग मुद्दे के रूप में, मुझे लगता है कि सबसे महत्वपूर्ण बिंदु को लाने के लिए (जो कि यह उत्तर करता है, और दूसरा नहीं करता है) यह है कि एक मनमाना फ़ाइल बनाना सिस्टम को बदलने के लिए कुछ भी करने वाला नहीं है। आप केवल एक ऐसी फ़ाइल बनाकर सिस्टम को प्रभावित कर सकते हैं, जो किसी अन्य प्रक्रिया की तलाश में है, या आपके द्वारा बनाई गई फ़ाइल को निष्पादित करके, यदि इसमें सिस्टम को प्रभावित करने के लिए कोड है - लेकिन यह पूरी तरह से अज्ञात शेल कमांड नहीं चलाने की सामान्य सलाह के अंतर्गत आता है , जो स्मार्ट है आप फ़ाइलों के साथ काम कर रहे हैं या नहीं।
डेविड जेड

2
मेरे लिए एक सैंडविच बना दो। You won't have permission to do this। sudo मुझे एक सैंडविच बनाते हैं। Aye, aye, sir!
रेयान

2
@heemayl सिर्फ फ़ाइल में पहली पंक्ति क्यों नहीं बनाते exit?
रैंडम 832

15

आप एक फ़ाइल में सीखे गए सभी आदेशों को सहेज सकते हैं लेकिन कुछ महत्वपूर्ण बिंदुओं पर ध्यान दें:

  • फ़ाइल को निष्पादन योग्य न बनाएं
  • कभी sourceफाइल नहीं
  • सबसे अच्छा तरीका यह होगा कि #सभी कमांड्स की शुरुआत में सभी कमांड को कमेंट करें ताकि वे गलती से निष्पादित न हों। इस तरह से आप वास्तव में उस कमांड को खोज सकते हैं जिसकी आपको आवश्यकता है और यह जोखिम मुक्त भी होगा। आप #निम्न आदेश द्वारा प्रत्येक पंक्ति के प्रारंभ में जोड़ सकते हैं :

    sed -i 's/^/#/' <file_name>

EDIT: मैंने तीसरे बिंदु को एक चरम सुरक्षा उपाय के रूप में दिया है, जैसा कि "neon_overload" और "David Z" ने बताया कि सभी लाइनों में हैश लगाना बहुत व्यापक है और इसलिए इसकी आवश्यकता नहीं है, मैं इस संदर्भ में उनके साथ दूसरा होगा। जैसा कि "random832" द्वारा बताया गया है, मेरे तीसरे बिंदु के लिए एक बेहतर विकल्प फ़ाइल के साथ शुरू करना होगा exit, क्योंकि बाद में कोई भी आदेश निष्पादित नहीं किया जाएगा।

EDIT-2: "रिनविंड" ने दो महत्वपूर्ण बिंदुओं का उल्लेख किया है:

  • किसी मौजूदा फ़ाइल को अधिलेखित न करें

  • फ़ाइल को उपयोगकर्ता की होम निर्देशिका ( /home/$USER/) में संग्रहीत करें ।


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyमुझे बिल्कुल यकीन नहीं है कि क्या यह एक गंभीर सुझाव है या एक मजाक है। मेरे व्यंग्य डिटेक्टर ने मुझे आज विफल कर दिया।
रेयान

जिस शब्द को आपको महत्व देना है, वह 'दुर्घटनावश' है .. उपयोगकर्ता गलती से किसी जगह फ़ाइल को असुरक्षित रूप से निष्पादन योग्य रख सकता है .... यहाँ मैं बस कोई
संभावना

4
क्या वह फाइल की शुरुआत में "एक्जिट" या ऐसा कुछ नहीं डाल सकता था, जो हर एक लाइन पर टिप्पणी करने के बजाय हो?
ओ ० '।

शायद उसका मतलब था #! - यह दुभाषिया को अशक्त करने के लिए सेट है, इसलिए यह नहीं चलता है।
जोशुआ

1
@BJsgoodlife, नहीं #!- बस exit; इस तरह से आप के खिलाफ भी रक्षा की जाती है sh yourfile, जो कि एक अवैध शेबांग के खिलाफ मदद नहीं करेगा।
चार्ल्स डफी

7

neon_overload का बहुत अच्छा जवाब है।

मैं आपके प्रश्न के एक निश्चित पहलू पर थोड़ा विस्तार करूँगा - मैं इसे एक टिप्पणी करूँगा, लेकिन मेरी यहाँ पर पर्याप्त प्रतिष्ठा नहीं है।

लिनक्स, एक ऑपरेटिंग सिस्टम के रूप में, बहुत ज्यादा पाठ-फाइलों पर आधारित नहीं है। उस ने कहा, मैं देख सकता हूं कि आप कहां से आ रहे हैं। एक बाहरी पर्यवेक्षक के लिए, विशेष रूप से विंडोज की तुलना में "टेक्स्ट" फाइलों को संपादित करने और लॉन्च करने के लिए बहुत कुछ है।

इसके कई कारण हैं, जिनमें से कुछ हैं:

  • लिनक्स में कोई रजिस्ट्री सिस्टम नहीं है, जैसे विंडोज में है। इसलिए, एप्लिकेशन के लिए टेक्स्टफ़ाइल्स में अपनी सेटिंग्स को संग्रहीत करना आम है, और आपको विंडोज़ की तरह रजिस्ट्री को संपादित करने के बजाय उन्हें संपादित करने का निर्देश दिया जाएगा।
  • लिनक्स बहुत व्यापक रूप से एक सर्वर सिस्टम के रूप में उपयोग किया जाता है, और उनमें से कई, जो इसे डेस्कटॉप पर उपयोग करते हैं, सर्वर सिस्टम के साथ काम करते हैं। विंडोज सर्वर के विपरीत, लिनक्स सर्वर आमतौर पर बिना ग्राफ़िकल इंटरफ़ेस के चलते हैं। इसलिए, लिनक्स सर्वर पर चलने वाले उत्पादों और, वास्तव में, उनके उपयोगकर्ताओं और प्रशासकों को ग्राफ़िकल इंटरफ़ेस के बिना काम करने की उम्मीद है। उत्पाद (और सिस्टम फीचर्स, कहने लायक) जो केवल विंडोज पर चलने की उम्मीद है, आमतौर पर जीयूआई केंद्रित होते हैं (जैसे, एमएस एसक्यूएल कहते हैं)
  • लिनक्स स्क्रिप्टिंग सिस्टम विंडोज की तुलना में कुछ अधिक सामान्य और अधिक पारदर्शी है। आप विंडोज़ पर स्क्रिप्ट देखेंगे - लेकिन उन्हें कुछ कहा जाएगा। आपको कभी-कभी महसूस नहीं होगा कि वे पाठ फाइलें हैं - लेकिन, मेरे दूसरे बिंदु में क्या है, इस पर विचार करते हुए, लिनक्स में .sh फ़ाइलों के आसपास स्नूपिंग करने के लिए बहुत अधिक सामान्य है।
  • अंत में, लिनक्स के कई उपयोगकर्ता ग्राफ़िकल इंटरफ़ेस के बिना काम करने के आदी हैं, और कई चीज़ों के लिए इच्छाशक्ति के बजाय सीधे फाइलों को संपादित करते हैं, जैसे कि वे जीयूआई के बिना, ग्राफ़िकल टूल के साथ इधर-उधर ठोकर खाने के बजाय। मुझे पता है कि जब मैं सिस्टम में कुछ गहरा करना चाहता हूं, तो मैं बस टर्मिनल शुरू करता हूं, और इसलिए अपने कई सहयोगियों को करता हूं।

"लिनक्स में कोई रजिस्ट्री सिस्टम नहीं है", लेकिन dconf ( en.wikipedia.org/wiki/Dconf ) है। लिनक्स कर्नेल को चलाने वाले सभी सिस्टमों में यह नहीं होगा, और सभी चीजें जो विंडोज सिस्टम रजिस्ट्री में कॉन्फ़िगर होंगी, उन्हें वहां कॉन्फ़िगर किया जाएगा, हालांकि।
डैनियल लैंडौ

1

संक्षिप्त उत्तर है, नहीं, आप vi में पाठ फ़ाइल बनाकर अपना कंप्यूटर नहीं बदलेंगे । हालाँकि, यदि आप सावधान नहीं हैं, तो उस पहले पाठ फ़ाइल को बनाने से आपका जीवन बदल सकता है । यूनिक्स के तरीके को सीखना एक गहरा पुरस्कृत अभ्यास हो सकता है।


0

viएक टेक्स्ट एडिटर है , इसलिए यदि आप चाहते हैं कि आप टेक्स्ट टेक्स्ट फ़ाइल में कुछ टेक्स्ट स्निपेट्स स्टोर करें, और इसके माध्यम से खोजें, तो आप इसे टर्मिनल से सीधे बिल्ट-इन कमांड्स के साथ कर सकते हैं।

  1. एक पाठ फ़ाइल पर एक नोट लिखें (यदि यह मौजूद नहीं था तो फ़ाइल बनाएगा):

    इको नोट महत्वपूर्ण डेटा के साथ >> info.txt

महत्वपूर्ण: एकल और दोहरे उद्धरणों के लिए देखें, और यदि आप उन्हें शामिल करना चाहते हैं, तो उन्हें स्लैश के साथ उपसर्ग करें।

  1. कुछ पाठ के लिए फ़ाइल खोजें (जैसे important):

    grep --color -i महत्वपूर्ण info.txt

--color -iउस टाइपिंग से बचने के लिए जिसे आप में अलियास किया जाना चाहिए ~/.bashrc

आप मौजूदा या गैर-मौजूदा पाठ फ़ाइलों में बहु-पाठ जोड़ सकते हैं:

cat >> info2.txt

फिर टेक्स्ट टाइप करें या पेस्ट करें, और जब किया जाए तब CTR+ दबाएंZ

सिस्टम को बदलने के लिए, नहीं, यह आपके सिस्टम के काम करने के तरीके को तब तक नहीं बदलेगा जब तक आप अपने खुद के होम फोल्डर में फाइल बनाते हैं और उन्हें निष्पादित नहीं करते हैं (आप किसी फाइल को निष्पादित कर सकते हैं, भले ही वह निष्पादन योग्य न हो, जैसे कि bash myFile) । यह भी सुनिश्चित करें कि आप केवल रूट विशेषाधिकारों का उपयोग तब करें जब आपको उनकी आवश्यकता हो।

और अंत में, फ़ाइल-आधारित सिस्टम की आपकी व्याख्या ने आपको कुछ हद तक गुमराह किया है: अधिकांश ऑपरेटिंग सिस्टम में ऐसी फाइलें होती हैं जो महत्वपूर्ण सेटिंग्स को संग्रहीत करती हैं जो सिस्टम को संचालित करने के तरीके को गहराई से प्रभावित करती हैं, लेकिन वे पूर्वनिर्धारित स्थानों में स्थित हैं और आमतौर पर नियमित उपयोगकर्ताओं द्वारा संशोधन से सुरक्षित हैं।

हालांकि यह आसानी से पैर में अपने आप को गोली मारना संभव है, उदाहरण के लिए, यदि एक नियमित उपयोगकर्ता के रूप में आपके पास एक स्थानीय 'निष्पादन योग्य' फ़ोल्डर है जिसे आपने जोड़ा है PATH, और यदि उस फ़ोल्डर में आपको निष्पादन योग्य फाइलें हैं जो उसी नाम से निर्मित हैं -सामान्य उपयोगिताओं या बैश कीवर्ड, जैसेtest , echo, cat, for, cut, आदि

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