PowerShell के बराबर यूनिक्स?


21

मुझे हमेशा यह अजीब लगता है जब जटिल शेल कमांड में AWK के साथ पार्सिंग टेक्स्ट आउटपुट शामिल होता है । मूल रूप से हम संरचित डेटा को पाठ में परिवर्तित कर रहे हैं, फिर संरचित डेटा पर वापस जाने के लिए पाठ को फिर से पार्स कर रहे हैं।

PowerShell एक विंडोज शेल है जो आपको टेक्स्ट के बजाय शेल कमांड के बीच टाइप की गई चीजों को पाइप करने की अनुमति देकर उस समस्या से बचा जाता है।

क्या कोई यूनिक्स गोले हैं जो टेक्स्ट-आधारित के बजाय ऑब्जेक्ट पर आधारित हैं, जैसे पावरशेल?

जवाबों:


24

नहीं, यह दूसरा तरीका है। कोई चम्मच नहीं है ^ एच ^ एच ^ हिस्टर्ड डेटा। केवल पाठ है।

यूनिक्स दर्शन का एक बड़ा हिस्सा पाठ के आउटपुट और इनपुट के रूप में पाठ को स्वीकार करने के विचार पर आधारित है। आप " द आर्ट ऑफ यूनिक्स प्रोग्रामिंग " पढ़ने पर विचार करना चाह सकते हैं , जिसमें इस बारे में अच्छी व्याख्या है।

मुझे गलत मत समझिए: मैं आपकी बात समझता हूं और मैं जानता हूं कि आप क्या पाने की कोशिश कर रहे हैं। रूबी और पायथन के इंटरैक्टिव दुभाषिए जैसी चीजें हैं, जिन्हें शेल के रूप में इस्तेमाल किया जा सकता है, लेकिन वे बैश के रूप में बुनियादी कार्यों के लिए अनुकूल नहीं हैं। उदाहरण के लिए, निर्देशिका बदलने का प्रयास करें।

इसके अलावा, एक शेल में वस्तुओं का उपयोग करना सब कुछ नहीं है। यदि केवल आपका शेल इस का समर्थन करता है, तो यूनिक्स पर, आपको नुकसान होगा। सभी मानक यूनिक्स पाठ हेरफेर उपकरण को बदलना होगा, जैसे कि grep, awk, sed, आदि।

मुझे लगता है कि कुछ साल पहले ऐसा कुछ बनाने की कोशिश की गई थी, लेकिन मुझे नाम याद नहीं है और मैंने लंबे समय में इसके बारे में नहीं सुना है। यह शायद उतारना नहीं है।


2
दिलचस्प है, डेटा ऑब्जेक्ट स्ट्रीम द्वारा टेक्स्ट स्ट्रीम (या वास्तव में, बाइट स्ट्रीम) की जगह, पुस्तक में तैयार किए गए सामान्य सिद्धांतों के खिलाफ नहीं जाएगी। यहां तक ​​कि यह "प्रतिनिधित्व के नियम" के साथ बेहतर खेलना प्रतीत होता है। यह सिर्फ इतना है कि यूनिक्स ने कार्यक्रमों के बीच इंटरफेस के रूप में पाठ धाराओं को चुना है।
कोएन

1
लेकिन 'डेटा ऑब्जेक्ट' से क्या आपका तात्पर्य एक वास्तविक पायथन / रूबी / सी ++ ऑब्जेक्ट या सी संरचना जैसा कुछ है?
14

3
+1 "चम्मच को मोड़ने की कोशिश मत करो, यह असंभव है। इसके बजाय केवल सच्चाई को महसूस करने की कोशिश करो ... कोई चम्मच नहीं है।" यह इतना टेक्स्ट- -ए-इंटरफ़ेस नहीं है, लेकिन एक इंटरफ़ेस के रूप में डेटा की धाराएं । ऑब्जेक्ट प्रोग्रामिंग के लिए अच्छे हैं, लेकिन कभी-कभी वे आपके दिमाग में डालने के लिए एक छोटी सी जेल बन जाते हैं ...
Avery Payne

2
zsh> बैश। मेरी राय है, लेकिन वास्तव में अगर आपने zsh की कोशिश नहीं की है तो आपको चाहिए
xenoterracide

2
@WimCoenen, "संरचित डेटा" के आसपास शिपिंग का मतलब है कि हर कोई और चाची टिली को सहमत होना होगा कि "संरचना" क्या है। सामान भी पसंद है ls(1)। पूरी तरह से बेकार।
वॉनब्रांड

10

वास्तव में पश नामक एक परियोजना है जिसका उद्देश्य पावरशेल (मोनो के शीर्ष पर) को लागू करना है, लेकिन ऐसा लगता है कि यह ठप हो गया है।


2
यूनिक्स हैकर्स माइक्रोसॉफ्ट-आधारित परियोजनाओं पर समय बिताते हैं = यही चींटी और टिड्डे फिर से सब पर
ixtmixilix

4
हम मृतकों से वापस आ गए हैं: github.com/JayBazuzi/Pash , twitter.com/PashProject
Jay Bazuzi

4

एक परियोजना है, जिसका लक्ष्य पॉवरशेल : हॉटवायर के साथ समानता साझा करता है । यह अजगर स्क्रिप्टिंग और खिड़की / चित्रमय वातावरण के साथ नियमित रूप से श को जोड़ती है। आप इसे एक रूप दे सकते हैं।

यह ऑब्जेक्ट-ओरिएंटेड पाइपलाइन के आसपास आधारित है जिसे आप मौजूदा कार्यक्रमों को लपेटकर या पायथन लाइब्रेरीज़ का उपयोग करके अपनी स्वयं की वस्तुओं के साथ बढ़ा सकते हैं।


1
यह परियोजना मैं बंद नाम याद करने की कोशिश कर रहा था! ट्रंक में अंतिम प्रतिबद्ध: दो साल पहले ...
wzzrd

4

PowerShell 2016 में ओपन-सोर्स बन गया। तब से यह अधिक से अधिक मल्टी-प्लेटफ़ॉर्म प्राप्त कर रहा है। स्रोत कोड GitHub पर उपलब्ध है और इसलिए एक नंबर UNIX जैसी प्रणालियों के लिए पैकेज स्थापित किए गए हैं।


1

मुझे लगता है कि आप व्याख्या की गई (या संकलित) लिपियों का एक गुच्छा लिखकर, उनमें से अधिकांश को पूरा कर सकते हैं, फिर दुभाषिया के खोल के भीतर उन्हें आमंत्रित कर सकते हैं, जो आपकी वस्तुओं को वापस करेगा या संरक्षित करेगा और इसी तरह यदि आप चाहें।

आप इसे कम से कम रूबी, पर्ल, पायथन, हास्केल (जैसे, जीएचसीआई), जावास्क्रिप्ट (जैसे, नोड.जेएस), मतलाब और निश्चित रूप से अन्य भाषाओं में कर सकते हैं ...


पाइप होने वाली वस्तुओं का मतलब है कि आप आलसी मूल्यांकन कर सकते हैं आदि। यदि आप एक पाइप के नीचे फ़ाइल ऑब्जेक्ट का एक सेट पास कर रहे हैं .. तो शायद आप नाम, या संशोधित तिथि, लेकिन शायद सामग्री के बारे में परवाह करते हैं। आप JSON में कौन सा डेटा पास करते हैं? उत्तर: यह निर्भर करता है। यदि पाइप का उपभोक्ता डेटा खींचता है, तो वह सही डेटा का अनुरोध कर सकता है। समस्या सुलझ गयी।
निगेल थॉर्न

1

तीन साल बाद एक और विचार: एक्सएमएल या JSON का उपयोग करके किसी पाठ स्ट्रीम के साथ एक वस्तु का प्रतिनिधित्व करना संभव है। मैं JSON (सरल) पसंद करता हूं, और, वास्तव में क्लासिक * NIX उपयोगिताओं JSON समर्थन देने के लिए परियोजनाएं हैं। उदाहरण के लिए: https://github.com/step-/JSON.awk

AWK जैसे क्लासिक * NIX कार्यक्रमों के लिए ऑब्जेक्ट-प्रकार मॉडल का उपयोग करने के साथ एक समस्या यह है कि उनके पास वास्तव में OO समर्थन नहीं है। उदाहरण के लिए, जबकि AWK के पास सहयोगी सरणियाँ हैं, सरणियाँ बहु-आयामी नहीं हैं (AWK सरणी में प्रत्येक तत्व को एक संख्या या एक स्ट्रिंग होना चाहिए; AWK में एक सरणी ऑब्जेक्ट होने की अनुमति नहीं है)।


क्लोजर edn प्रदान करता है जो टाइप किए गए डेटा के सभी प्रकार को क्रमबद्ध / deserialized करने की अनुमति देता है जबकि JSON सीमित है।
मारियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.