एक बार मैंने पॉवर्सशेल पर एक लेख लिखा था जिसमें इसके लिनक्स जैसे गुणों की प्रशंसा की गई थी। मेरे पास उसमें एक अच्छा एनीमेशन भी था, जो सभी के मनोरंजन के लिए था। कई वर्षों के तेजी से आगे बढ़ने पर, Microsoft ने ओपन-सोर्स पॉवर्सशेल का फैसला किया और इसे लिनक्स (!) पर उपलब्ध कराया, और यह अब शुरुआती परीक्षण के लिए उपलब्ध है। पी>
मुझे यह विचार कई कारणों से पसंद है। यह विकास और सिस्टम के रखरखाव में अधिक सामान्य आधार की अनुमति देता है, विशेष रूप से चूंकि विंडोज के लिए बैश भी है, इसलिए हम प्रयासों का एक अच्छा प्रतिबिंब देख सकते हैं। लंबे समय में, यह दो ऑपरेटिंग सिस्टमों को अधिक प्रभावी ढंग से सहयोग करना चाहिए, और वास्तविक विजेता प्रशासन, डेवलपर्स, बल्कि अंतिम उपयोगकर्ता भी होंगे। आइए देखें कि यह कैसे काम करता है। पी>
पॉवरशेल सेटअप करें
मेरी परीक्षण प्रणाली एक CentOS 7.2 Xfce बॉक्स है, और यह समर्थित Linux उदाहरणों में से एक है। Microsoft वर्तमान में Ubuntu, उसकी दो LTS पीढ़ियों और CentOS के लिए इंस्टॉलर प्रदान करता है। सेटअप काफी तुच्छ है, भले ही डाउनलोड के लिए पैकेज ढूंढना थोड़ा जटिल हो। स्थानीय रूप से yum के साथ संस्थापित करें, और कमांड लाइन से लॉन्च करें। पी>
yum install powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm
पी>
अब क्या?
मैं वास्तव में उन्नत पावरहेल उपयोगकर्ता नहीं हूं। लेकिन यह एक खोल है, और इसलिए आपको सिंटैक्स सीखने और इसका उपयोग शुरू करने की आवश्यकता है। अब, क्या यह बाश या समान रूप से प्रतिस्थापित कर सकता है? ठीक है, वास्तव में नहीं, लेकिन वह बात नहीं है। किसी भी तरह, मैंने कुछ बुनियादी आदेशों को टटोलना शुरू कर दिया, बस यह कैसे काम करता है, यह जानने के लिए। पी>
सबसे पहले, उपयोग मॉडल लिनक्स उपयोगकर्ताओं के लिए थोड़ा प्रति-सहज हो सकता है। लेकिन सार वही रहता है। पावरहेल वर्तमान में कैसे महसूस किया जाता है इसका एक नकारात्मक पक्ष रंग कोड है। सफेद पर पीला अच्छी तरह से काम नहीं करता है, इसलिए आप एक अलग टर्मिनल थीम का उपयोग करना चाह सकते हैं। पी>
पी>
पी>
यदि आप संघर्ष करते हैं, तो आप हमेशा मदद का आह्वान कर सकते हैं:सहायता <कमांड>, या बेहतर, गेट-हेल्प <कमांड> - उदाहरण, वास्तव में उचित सिंटैक्स देखने के लिए और इसका उपयोग कैसे किया जाता है। यह काफी मददगार है। आदेश केस-असंवेदनशील होते हैं, हालांकि उनके पास यहां और वहां औपचारिक अपर-केस नोटेशन होता है। पी>
पी>
कुछ कमांड (cmdlets) का संक्षिप्त संस्करण भी होता है। उदाहरण के लिए, Get-ChildItem UNIX खोज के समकक्ष कार्यक्षमता के लिए एक गैर-सहज ज्ञान युक्त नाम है, साथ ही इसे gci के लिए संक्षिप्त भी किया जा सकता है। यह पहली बार में थोड़ा भ्रमित करने वाला हो सकता है। लेकिन ज्यादा नहीं। पी>
gci -path /* -include "igor" -recurse
एक और चीज जो आपको भ्रमित कर सकती है - रूट निश्चित रूप से पिछली स्लैश के साथ चिह्नित है, लेकिन अधिकांश पथ-निर्भर कमांड सही ढंग से काम करने के लिए, आपको वास्तव में स्लैश के बाद एक तारांकन जोड़ना चाहिए। जाओ पता लगाओ। फिर भी, मैं आपकी तरह बेबी-स्टेपिंग कर रहा हूं। पी>
यह सब वहाँ है। दिखने और महसूस करने में थोड़ा अलग - और निश्चित रूप से नाम में, लेकिन यह ठीक काम करता है। खोल काफी स्थिर था। एक अपवाद यह था कि बहुत लंबी पुनरावर्ती फ़ाइल खोज के समय को मापने के दौरान पॉवरशेल हैंग हो गया। यह बस रुक गया, लेकिन मैं निष्पादन को बाधित करने में सक्षम था। पी>
पी>
त्रुटियाँ
पॉवर्सशेल बहुत वर्बोज़ है और त्रुटियों के लिए प्रवण है, जो लाल रंग के कारण खतरनाक लग सकता है और तथ्य त्रुटियां पाठ के बहुत लंबे ब्लॉक बन जाती हैं, जैसे कि विंडोज पर। लेकिन हम निर्दोष बातें कर रहे हैं, कमांड लाइन पर फ़ाइल खोज के दौरान अनुमति जैसी सामग्री ने त्रुटियों को अस्वीकार कर दिया। पी>
फिर, आपको एक और उदाहरण देने के लिए, माप-आदेश cmdlet (एक तरह से लिनक्स समय के बराबर) को कर्ली ब्रैकेट में संलग्न करने के लिए तर्कों की आवश्यकता होती है। अगर आप इन्हें मिस करते हैं, तो आपको एक बड़ी एरर मिलेगी जो देखने में काफी डरावनी लगती है, लेकिन वास्तव में यह काफी हानिरहित है। बहुत से अन्य cmdlets के लिए भी यही बात लागू होती है। पी>
पी>
यह त्रुटि का केवल शीर्ष आधा है। अभी और है। पी>
पी>
फेडोरा उपयोक्ताओं के बारे में क्या?
ठीक है, हम जानते हैं कि Microsoft ने Ubuntu और CentOS के लिए Powershell जारी किया। मैं सोच रहा हूँ कि क्या फेडोरा वर्गीकृत करता है। वास्तव में, मैं सोच नहीं रहा हूँ। मैंने परीक्षण किया। जैसा कि होता है, यह छोटा प्रयोग उतना सहज नहीं था जितना मैंने आशा की होगी। स्थापना के तुरंत बाद, और पॉवर्सशेल चलाने की कोशिश करते हुए, मुझे एक अच्छी, रसदार त्रुटि मिली:
पावरशेल
CoreCLR को प्रारंभ करने में विफल, HRESULT:0x80131500
यह एक काफी सामान्य त्रुटि है, और इस विषय पर गिटहब पर उपलब्ध एक लंबी चर्चा है। हालाँकि, केवल आँख बंद करके सुझावों का पालन करने के बजाय, मैं पहले यह पुष्टि करना चाहता था कि समस्या लिबिकू निर्भरताओं के साथ थी। बुद्धि के लिए, मैंने स्ट्रेस की शक्ति का आह्वान किया, जो मेरे बढ़ते डिबगिंग शस्त्रागार में अधिक मुट्ठी भर उपकरणों में से एक है। पी>
open("/usr/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) =-1 ENOENT (ऐसी कोई फ़ाइल या निर्देशिका नहीं)
दरअसल हमारे पास कुछ लापता पुस्तकालय हैं। बात यह है कि, यह पैकेज फेडोरा पर उपलब्ध है, केवल यह पॉवर्सशेल की अपेक्षा एक नया संस्करण है। मैंने प्रतीकात्मक लिंक बनाकर समस्या को हल करने की कोशिश की, और इससे थोड़ी मदद मिली। पी>
ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.50
अंत में, त्रुटि सामान्य स्टार्टअप समस्या से साझा ऑब्जेक्ट के अंदर प्रतीकों के साथ एक समस्या में चली गई। और यह ऐसी चीज है जिसे आप मनमाने ढंग से हल नहीं कर सकते। पी>
पावरशेल
पॉवरशेल:सिंबल लुकअप एरर:/opt/microsoft/powershell/6.0.0-alpha.9/System.Globalization।
Native.so:अपरिभाषित प्रतीक:uloc_getDefault_50
इसका समाधान यह है कि लिबिकू के पुराने संस्करण को डाउनलोड किया जाए, इसे कहीं से निकाला जाए, और फिर लाइब्रेरी पाथ को इस तरह से सेट किया जाए जिससे पॉवर्सशेल पहले लिबिकू निर्भरता को ढूंढ और चुन सके, जैसे:
निर्यात LD_LIBRARY_PATH=
निष्कर्ष
यहाँ हम हैं। यह वर्ष 2016 है, और आप मूल रूप से विंडोज़ पर बाश चला सकते हैं, और आप मूल रूप से लिनक्स पर पावरहेल चला सकते हैं। बॉब न केवल आपके चाचा हैं, आप बॉब के चाचा भी हैं! मैं इस विकास से प्रसन्न हूं। लंबे समय में इससे सभी को फायदा ही होगा। पी>
स्क्रिप्टिंग टूल, भाषा और ढांचे के लिए पॉवर्सशेल मेरी तत्काल पसंद नहीं है, लेकिन इसकी खूबियां हैं, और जिन लोगों को मल्टी-ओएस वातावरण बनाए रखने की आवश्यकता है, उनके लिए यह प्रशासन के प्रयासों को काफी सरल बना सकता है। प्रारंभिक अल्फा बिल्ड परीक्षण के लिए पर्याप्त स्थिर है, लेकिन मैं भारी परीक्षण के खिलाफ दृढ़ता से अनुशंसा करता हूं, विशेष रूप से रूट अनुमतियों के साथ नहीं, और उत्पादन प्रणालियों पर। सिर्फ सुरक्षित पक्ष पर होने के लिए। कुल मिलाकर, बिलकुल ठीक। वैसे भी, तुम जाओ। अपने कीबोर्ड के साथ बेला करने का समय। पी>
प्रोत्साहित करना। पी>