उपयुक्त "अस्थिर सीएलआई इंटरफ़ेस" चेतावनी देता है


63

मैं एक स्क्रिप्ट लिख रहा हूं, जिसमें एक पैकेज की जानकारी वाली फाइल को पढ़ने की जरूरत है जिसके लिए मैंने यह लाइन लिखी थी

apt show $PACKAGE_NAME > pack_info.txt

हालाँकि यह pack_info.txtफ़ाइल नहीं बनाता है और हमेशा यह चेतावनी देता है:

चेतावनी: उपयुक्त स्थिर CLI इंटरफ़ेस नहीं है। लिपियों में सावधानी बरतें।

समय के लिए मैं पुनः निर्देशित दोनों की कोशिश की STDOUTऔर STDERRका उपयोग कर &>और इसे बाहर काम किया एक फाइल देने के लिए pack_info.txtहै कि हम की जरूरत है।

मैंने भी इससे सामग्री प्राप्त करने की कोशिश की dpkgऔर यह भी काम किया:

dpkg -s $PACKAGE_NAME > pack_info.txt

क्या अच्छा है कि यह न तो चेतावनी दिखाता है और न ही त्रुटि।

क्या बुरा है कि हम dpkg का उपयोग नहीं करना चाहते हैं और केवल फ़ाइल के रीडायरेक्ट करने के लिए उपयुक्त का STDOUT चाहते हैं।

इसलिए, मेरे पास पूछने के लिए तीन प्रश्न हैं:

  1. Stable CLI Interface से हमारा क्या अभिप्राय है?
  2. स्क्रिप्ट में ऐसे कमांड को सुरक्षित और त्रुटि मुक्त उपयोग कैसे करें? [कृपया उदाहरण के साथ समझाने की परवाह करें]
  3. क्या apt showकिसी फ़ाइल का केवल और केवल अनुप्रेषित STDOUT का कोई रास्ता है ?

जवाबों:


80

aptटर्मिनल के लिए है और सुंदर उत्पादन देता है, जबकि apt-getऔर apt-cacheस्क्रिप्ट के लिए कर रहे हैं और स्थिर, parseable उत्पादन दे। आपकी apt showआज्ञा के बराबर लिपि इस प्रकार है:

apt-cache show $PACKAGE_NAME >pack_info.txt

अब एक-एक करके अपने सवालों के जवाब दें:

Stable CLI Interface से हमारा क्या अभिप्राय है?

aptस्क्रिप्ट में आउटपुट अच्छी तरह से प्रयोग करने योग्य नहीं है। उदाहरण के लिए, apt install(तुलना में apt-get install) एक प्रगति पट्टी को प्रदर्शित करता है जो स्क्रिप्ट के लिए बेकार है और आउटपुट के पार्स होने पर त्रुटियों को फेंक सकता है। apt show firefoxएक अतिरिक्त रिकॉर्ड के लिए एक संकेत दिखाता है, जो एक स्क्रिप्ट में भी पूरी तरह से बेकार है, आप इसे हर रिकॉर्ड को बस वहां आउटपुट करना चाहते हैं - यही वह apt-cache show firefoxकरता है। आइए देखें कि man aptइसके बारे में क्या कहना है:

उपयुक्त (8) कमांडलाइन एक अंतिम-उपयोगकर्ता उपकरण के रूप में बनाया गया है और यह संस्करणों के बीच व्यवहार बदल सकते हैं। हालांकि यह पिछड़ी अनुकूलता को न तोड़ने की कोशिश करता है लेकिन इसकी गारंटी नहीं दी जाती है यदि कोई परिवर्तन इंटरैक्टिव उपयोग के लिए फायदेमंद लगता है।

की सभी विशेषताएं उपयुक्त (8) की तरह समर्पित अपार्ट उपकरण में उपलब्ध हैं apt-get (8) और उपयुक्त-कैश (8) के रूप में अच्छी तरह से। apt (8) बस कुछ विकल्पों के डिफ़ॉल्ट मान को बदलता है ( apt.conf (5) और विशेष रूप से बाइनरी गुंजाइश देखें)। इसलिए आपको अपनी लिपियों में इन कमांड (संभवतः कुछ अतिरिक्त विकल्पों के साथ सक्षम) का उपयोग करना पसंद करना चाहिए क्योंकि वे जितना संभव हो सके पिछड़ेपन को बनाए रखते हैं।


स्क्रिप्ट में ऐसे कमांड को सुरक्षित और त्रुटि मुक्त उपयोग कैसे करें?

सादे के बजाय बस apt-getया apt-cacheक्रमशः उपयोग करें apt। :) समकक्षों की सूची के लिए इस उत्तर को देखें ।


क्या किसी फ़ाइल में केवल और केवल STDOUT apt शो का ही एक तरीका है?

आपने ऐसा पहले ही सही किया है: >fileया 1>fileस्टडआउट को 2>fileपुनर्निर्देशित करता है , स्ट्रीडर को &>fileपुनर्निर्देशित करता है और दोनों को रीडायरेक्ट करता है file

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