मुझे एक टेक्स्ट फ़ाइल बनाने की ज़रूरत है (जब तक कि यह पहले से मौजूद नहीं है) और बैश का उपयोग करके फ़ाइल पर एक नई लाइन लिखें।
मुझे यकीन है कि यह सरल है, लेकिन क्या कोई मुझे यह समझा सकता है?
जवाबों:
यदि आप इसे एक स्क्रिप्ट के रूप में चाहते हैं, तो निम्नलिखित बैश स्क्रिप्ट को वही करना चाहिए जो आप चाहते हैं (प्लस आपको बताएं कि फ़ाइल पहले से मौजूद है):
#!/bin/bash
if [ -e $1 ]; then
echo "File $1 already exists!"
else
echo >> $1
fi
यदि आप "पहले से मौजूद" संदेश नहीं चाहते हैं, तो आप उपयोग कर सकते हैं:
#!/bin/bash
if [ ! -e $1 ]; then
echo >> $1
fi
उपयोग करने के बारे में संपादित करें:
आपके द्वारा पसंद किए गए नाम के साथ जो भी संस्करण बचाएं, चलो "create_file" कहें (मेरा उद्धरण, आप उन्हें फ़ाइल नाम में नहीं चाहते हैं)। फिर, फ़ाइल को निष्पादन योग्य बनाने के लिए, कमांड प्रॉम्प्ट पर करें:
chmod u+x create_file
फ़ाइल को अपने पथ में निर्देशिका में रखें , फिर उसका उपयोग करें:
create_file NAME_OF_NEW_FILE
$ 1 एक विशेष शेल चर है जो प्रोग्राम के नाम के बाद कमांड लाइन पर पहला तर्क देता है; उपरोक्त उपयोग उदाहरण में NAME_OF_NEW_FILE $ 1 को ले जाएगा।
यूनिक्स में एक टेक्स्ट फाइल बनाना एक टेक्स्ट एडिटर (vim, emacs, gedit, आदि) के माध्यम से किया जा सकता है। लेकिन आप जो चाहते हैं वह कुछ इस तरह हो सकता है
echo "insert text here" > myfile.txt
यह 'myfile.txt' फ़ाइल में 'टेक्स्ट सम्मिलित करें' पाठ डाल देगा। यह सत्यापित करने के लिए कि यह कमांड 'कैट' का उपयोग करता है।
cat myfile.txt
यदि आप एक फ़ाइल का उपयोग करने के लिए संलग्न करना चाहते हैं
echo "append this text" >> myfile.txt
आपको लगता है कि UNIX शेल कमांड का मतलब है, बस चलाएं
echo >> file.txt
echo
एक newline प्रिंट करता है, और >>
शेल को उस न्यूलाइन को फ़ाइल में संलग्न करने के लिए कहता है, अगर यह पहले से मौजूद नहीं है।
हालांकि, प्रश्न का ठीक से उत्तर देने के लिए, मुझे यह जानना होगा कि यदि फाइल पहले से मौजूद है तो आप क्या करना चाहते हैं। यदि आप नई सामग्री के साथ इसकी वर्तमान सामग्री को बदलना चाहते हैं, उदाहरण के लिए, आप उपयोग करेंगे
echo > file.txt
EDIT: और जस्टिन की टिप्पणी के जवाब में, यदि आप नईलाइन जोड़ना चाहते हैं यदि फ़ाइल पहले से मौजूद नहीं है, तो आप दे सकते हैं
test -e file.txt || echo > file.txt
कम से कम जो बैश में काम करता है, मुझे यकीन नहीं है कि यह अन्य गोले में भी होता है।
#!/bin/bash
file_location=/home/test/$1.json
if [ -e $policy ]; then
echo "File $1.json already exists!"
else
cat > $file_location <<EOF
{
"contact": {
"name": "xyz",
"phonenumber": "xxx-xxx-xxxx"
}
}
EOF
fi
यह कोड यह जांचता है कि उपयोगकर्ता की दी गई JSON फाइल टेस्ट होम डायरेक्टरी में मौजूद है या नहीं। यदि यह मौजूद नहीं है तो यह इसे सामग्री के साथ बनाएगा। आप अपनी आवश्यकताओं के अनुसार फ़ाइल स्थान और सामग्री को संशोधित कर सकते हैं।