"पदावनत" के दो अलग-अलग अर्थ हैं।
पदावनत होना: (मुख्यतः एक सॉफ्टवेयर सुविधा के) प्रयोग करने योग्य है लेकिन इसे अप्रचलित और सबसे अच्छा माना जाता है, आमतौर पर इसे लेट होने के कारण।
-नई ऑक्सफोर्ड अमेरिकन डिक्शनरी
इस परिभाषा के अनुसार बैकटिक्स को हटा दिया गया है।
अस्वीकृत स्थिति यह संकेत दे सकती है कि भविष्य में यह सुविधा हटा दी जाएगी।
- विकिपीडिया
इस परिभाषा के अनुसार बैकटिक्स को पदावनत नहीं किया जाता है।
अभी भी समर्थित:
शेल कमांड लैंग्वेज पर ओपन ग्रुप स्पेसिफिकेशन का हवाला देते हुए , विशेष रूप से "2.6.3 कमांड सब्स्टीट्यूशन" अनुभाग, यह देखा जा सकता है कि विनिर्देशन के जाते ही कमांड प्रतिस्थापन, बैकटिक्स ( `..cmd..`
) या डॉलर पार्न्स ( $(..cmd..)
) के दोनों रूप अभी भी समर्थित हैं।
अंश
कमांड प्रतिस्थापन एक कमांड के आउटपुट को कमांड नाम के स्थान पर प्रतिस्थापित करने की अनुमति देता है। कमांड प्रतिस्थापन तब होगा जब कमांड निम्नानुसार संलग्न है:
$(command)
or (backquoted version):
`command`
शेल एक सबहेल्ड वातावरण में कमांड निष्पादित करके कमांड प्रतिस्थापन का विस्तार करेगा (शेल एक्ज़ेक्यूशन एनवायरनमेंट देखें) और कमांड प्रतिस्थापन (कमांड का पाठ प्लस $()
संलग्नक या बैकक्ओट्स) को कमांड के मानक आउटपुट के साथ बदलकर , एक या एक से अधिक को हटाकर। प्रतिस्थापन के अंत में <newline> अक्षर। एंबेडेड <newline> आउटपुट समाप्त होने से पहले वर्ण हटाए नहीं जाएंगे; हालाँकि, उन्हें क्षेत्र के सीमांकक के रूप में माना जा सकता है और क्षेत्र विभाजन के दौरान समाप्त किया जा सकता है, जो कि IFS के मूल्य और प्रभाव में है। यदि आउटपुट में कोई नल बाइट्स है, तो व्यवहार अनिर्दिष्ट है।
आदेश प्रतिस्थापन के पीछे की शैली के भीतर, <backslash> इसके शाब्दिक अर्थ को बनाए रखेगा, इसके अलावा जब: '$', ' \`
', या <backslash> । मिलान किए गए बैककौट की खोज पहले अनकैप्ड गैर-एस्केप बैककोट से संतुष्ट होगी; इस खोज के दौरान, यदि एक गैर-बच गए बैककॉट का शेल टिप्पणी के भीतर सामना किया जाता है, तो यहां एक दस्तावेज, $(command)
फॉर्म का एक एम्बेडेड कमांड प्रतिस्थापन , या एक उद्धृत स्ट्रिंग, अपरिभाषित परिणाम होते हैं। एकल-उद्धृत या डबल-उद्धृत स्ट्रिंग जो शुरू होती है, लेकिन समाप्त नहीं होती है, " `...`
" अनुक्रम के भीतर अपरिभाषित परिणाम पैदा करता है।
$(command)
फ़ॉर्म के साथ , खुले कोष्ठक के मिलान समापन कोष्ठक के बाद सभी वर्ण कमांड का गठन करते हैं। किसी भी मान्य शेल स्क्रिप्ट का उपयोग कमांड के लिए किया जा सकता है, केवल एक स्क्रिप्ट को छोड़कर जिसमें पुन: दिशा-निर्देश होते हैं जो अनिर्दिष्ट परिणाम उत्पन्न करता है।
तो फिर हर कोई यह क्यों कहता है कि बैकटिक्स को हटा दिया गया है?
क्योंकि अधिकांश उपयोग के मामलों में बैकटिक्स के बजाय डॉलर पार्न्स फॉर्म का उपयोग किया जाना चाहिए । (ऊपर के पहले अर्थ में पदावनत।) कई सम्मानित साइटें (यू एंड एल सहित) अक्सर इसे पूरे राज्य में भी प्रस्तुत करती हैं, इसलिए यह ध्वनि सलाह है। गोले से बैकटिक्स के लिए समर्थन को हटाने के लिए कुछ गैर-मौजूद योजना के साथ इस सलाह को भ्रमित नहीं किया जाना चाहिए।
नोट: यह तीसरा अंश (ऊपर) कई स्थितियों को दिखाने के लिए जाता है जहां बैकटिक्स बस काम नहीं करेगा, लेकिन नए डॉलर के पार्न्स विधि निम्न पैराग्राफ के साथ शुरुआत करती है:
इसके अतिरिक्त, बैकअकोटेड सिंटैक्स में एम्बेडेड कमांड की सामग्री पर ऐतिहासिक प्रतिबंध हैं। हालांकि नया "$ ()" फ़ॉर्म किसी भी प्रकार की मान्य एम्बेडेड स्क्रिप्ट को संसाधित कर सकता है, लेकिन बैककोट का फॉर्म कुछ मान्य स्क्रिप्ट को संभाल नहीं सकता है जिसमें बैकलॉग शामिल हैं।
यदि आप पढ़ना जारी रखते हैं कि खंड विफलताओं को दिखा रहा है कि वे कैसे बैकटिक्स का उपयोग करने में विफल होंगे, लेकिन नए डॉलर के पार्स का उपयोग करके काम करें।
निष्कर्ष
इसलिए यह बेहतर है कि आप बैकटिक्स के बजाय डॉलर के पैरेन्स का उपयोग करें, लेकिन आप वास्तव में ऐसी किसी चीज का उपयोग नहीं कर रहे हैं जो तकनीकी रूप से "पदावनत" हो, जैसे कि "यह पूरी तरह से कुछ नियोजित बिंदु पर काम करना बंद कर देगा।"
यह सब पढ़ने के बाद आपको अपने पास ले जाना चाहिए कि जब तक आपको विशेष रूप से वास्तविक मूल गैर-पॉसिक्स बॉर्न शेल के साथ संगतता की आवश्यकता न हो, तब तक आपको डॉलर के पैरेन्स का उपयोग करने के लिए दृढ़ता से प्रोत्साहित किया जाए ।
cd
, उदाहरण के लिए निर्देशिका में मेरी मदद$(...)
करें कि नेस्टेड बैक-कोट्स की तुलना में नोटेशन का उपयोग करना आसान क्यों है।