शेल स्क्रिप्ट से फाइल बनाएं, लिखें और सेव करें


10

मैं फ़ाइल मैन्युअल रूप से लिखना नहीं चाहता, इसलिए मैंने एक शेल-स्क्रिप्ट बनाई। क्या उपयोगकर्ता को कुंजियाँ दबाने के बिना फ़ाइल को स्वचालित रूप से लिखने और सहेजने का एक तरीका है?

sudo nano blah
#write stuff to file
#save file
#continue

^ यह * .sh फाइल के अंदर होगा

या एक स्क्रिप्ट में एक साधारण पाठ फ़ाइल बनाने का एक और तरीका है?


1
मुझे संदेह है कि आप यहां गलत सवाल पूछ रहे हैं। नैनो जैसे किसी संपादक को नियंत्रित करने की कोशिश करने की तुलना में प्रोग्रामेटिक तरीके से एक फ़ाइल को लिखने के बहुत सरल तरीके हैं। हमें बताएं कि आप इसके बजाय फ़ाइल के साथ क्या करना चाहते हैं।
वॉरेन हिल

मैं बस इसे बनाना चाहता हूं और लाइनों का एक गुच्छा लिखना चाहता हूं।
जरकोपाफिलिस

क्या आप Windows के लिए Autoit जैसा कोई समाधान पूछ रहे हैं जो अन्य चीजों के बीच GUI प्रोग्राम को स्वचालित कर सकता है या उदाहरण के लिए टेक्स्ट फॉर्म को शेल स्क्रिप्ट लिखने में सक्षम कैसे हो सकता है $echo "Some text" > afile.txt?
स्टेफ के

@Zarkopafilis - मैंने आपके प्रश्न का संपादन यह स्पष्ट करने के लिए किया है कि आपका क्या मतलब है। अगर मैंने आपको गलत समझा है तो आप इसे हमेशा वापस ले सकते हैं। मैंने आपके लिए एक उत्तर भी पोस्ट किया है।
वारेन हिल

जवाबों:


14

आदेशों के अधिक जटिल अनुक्रमों के लिए आपको यहां दस्तावेज़ केcat साथ कमांड का उपयोग करने पर विचार करना चाहिए । मूल स्वरूप है

command > file << END_TEXT
some text here
more text here
END_TEXT

यह दो अलग-अलग व्यवहार हैं, यह इस बात पर निर्भर करता है कि END_TEXT लेबल उद्धृत है या निर्विरोध:

  1. अनक्लेटेड लेबल : सामग्री सामान्य शेल विस्तार के बाद लिखी जाती है

  2. उद्धृत लेबल : यहां दस्तावेज़ की सामग्री को सामान्य शेल विस्तार के बिना, शाब्दिक रूप से व्यवहार किया जाता है

उदाहरण के लिए निम्नलिखित लिपि पर विचार करें

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

परिणाम हैं

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

तथा

$ cat file2
do some commands on "$var1" 
and/or "$var2"

यदि आप अपनी स्क्रिप्ट से शेल कमांड का उत्पादन कर रहे हैं, तो आप शायद उद्धृत फॉर्म चाहते हैं।


मैन मैंने कितने समय तक इसे खोजा ^ ^ एक सवाल: क्या यह केवल स्क्रिप्ट में काम करता है या क्या इसे सीधे शेल में भी उपयोग करना संभव है?
derHugo

@derHugo आप इसे सीधे शेल में उपयोग कर सकते हैं - उस स्थिति में, इसे छोड़ना सामान्य होगा END_TEXTऔर CTRL-Dइनपुट के अंत का संकेत देने के लिए इसका उपयोग करें। उदाहरण के लिए देखें कि
स्टडिन

7

ऐसा करने के लिए एक संपादक के साथ गड़बड़ करने की आवश्यकता नहीं है।

आप साधारण इको कमांड के साथ फाइल में कुछ जोड़ सकते हैं। उदाहरण के लिए

echo "Hello World" >> txt

फ़ाइल में "हैलो दुनिया" को जोड़ देगा txt। यदि फ़ाइल मौजूद नहीं है तो इसे बनाया जाएगा।

या यदि फ़ाइल पहले से मौजूद हो सकती है और आप इसे ओवरराइट करना चाहते हैं

echo "Hello World" > txt

पहली पंक्ति के लिए: और

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

बाद की पंक्तियों के लिए।

यह सरलतम है कि .shस्क्रिप्ट में इको कमांड का एक सेट हो सकता है।

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