मेरा एक दोस्त बताता है कि यदि आप करते हैं:
perl -pi.bak -e 's/foo/bar/' somefile
जब "somefile" वास्तव में एक सिम्लिंक होता है, तो perl वही करता है जो डॉक्स कहता है कि यह करेगा:
यह इनपुट फ़ाइल का नाम बदलकर, आउटपुट फ़ाइल को मूल नाम से खोलता है, और प्रिंट के लिए डिफ़ॉल्ट के रूप में उस आउटपुट फ़ाइल का चयन करता है () कथन। विस्तार, अगर आपूर्ति की जाती है, तो बैकअप प्रतिलिपि बनाने के लिए पुरानी फ़ाइल के नाम को संशोधित करने के लिए उपयोग किया जाता है [...]
जो अपरिवर्तित वास्तविक फ़ाइल की ओर इशारा करते हुए एक नए सिम्कलिन "somefile.bak" के परिणामस्वरूप होता है, और एक नया, नियमित फ़ाइल "somefile" को परिवर्तनों के साथ बदल देता है।
कई मामलों में, सीलिंक का अनुसरण करना वांछित व्यवहार होगा (भले ही यह .bak फ़ाइल अस्पष्ट का सही स्थान छोड़ता है)। क्या एक सरल तरीका यह है कि एक रैपर में सिम्बल के परीक्षण के अलावा और उचित तरीके से मामले को संभालने के लिए?
( sedवही काम करता है, जो इसके लायक है।)
-p -iआपकी स्क्रिप्ट में फिर से लागू हो जाएगा।