मैं अपने सर्वर के लिए शेल स्क्रिप्ट लिख रहा हूं, जो कि FreeBSD को चलाने वाली एक साझा होस्टिंग है। मैं अपने पीसी पर चलने वाले लिनक्स पर स्थानीय रूप से उनका परीक्षण करने में सक्षम होना चाहता हूं। इसलिए, मैं उन्हें एक पोर्टेबल तरीके से लिखने की कोशिश कर रहा हूं, लेकिन इसके साथ sedमुझे ऐसा करने का कोई रास्ता नहीं दिख रहा है।
मेरी वेबसाइट का हिस्सा उत्पन्न स्थिर HTML फ़ाइलों का उपयोग करता है, और यह पुनर्जीवन रेखा प्रत्येक उत्थान के बाद सही DOCTYPE सम्मिलित करती है:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
यह sedलिनक्स पर GNU के साथ काम करता है , लेकिन FreeBSD बैकअप कॉपी के लिए एक्सटेंशन होने के sedबाद पहले तर्क की उम्मीद करता -iहै। यह इस तरह दिखेगा:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
हालांकि, GNU sedबदले में तुरंत बाद की अभिव्यक्ति की अपेक्षा करता है -i। (यह भी newline हैंडलिंग के साथ सुधार की आवश्यकता है, लेकिन यह पहले से ही यहाँ में जवाब दिया है )
बेशक मैं स्क्रिप्ट के अपने सर्वर कॉपी में इस बदलाव को शामिल कर सकता हूं, लेकिन यह संस्करण के लिए वीसीएस के मेरे उपयोग को गड़बड़ करेगा। वहाँ एक पूरी तरह से पोर्टेबल तरीके से sed के साथ इसे प्राप्त करने का एक तरीका है?
-i