
nushell v0.115.0
एक नए प्रकार का शेल
Nushell
एक नए प्रकार का शेल।

विषय-सूची
- स्थिति
- Nu के बारे में जानना
- इंस्टॉलेशन
- कॉन्फ़िगरेशन
- दर्शन
- लक्ष्य
- आधिकारिक रूप से समर्थित
- योगदान
- लाइसेंस
स्थिति
यह प्रोजेक्ट न्यूनतम-व्यवहार्य-उत्पाद स्तर की गुणवत्ता तक पहुँच गया है। कई लोग इसे अपने दैनिक उपयोग के लिए उपयोग करते हैं, लेकिन कुछ कमांड के लिए यह अस्थिर हो सकता है। Nu का डिज़ाइन परिपक्व होने के साथ बदल सकता है।
Nu के बारे में जानना
Nushell पुस्तक Nushell दस्तावेज़ीकरण का प्राथमिक स्रोत है। आप पुस्तक में Nu कमांड की पूरी सूची पा सकते हैं, और हमारे पास कुकबुक में Nu का उपयोग करने के कई उदाहरण हैं।
हम Discord पर भी सक्रिय हैं; आइए और हमसे बात करें!
इंस्टॉलेशन
Nu को जल्दी से इंस्टॉल करने के लिए:
# Linux and macOS
brew install nushell
# Windows
winget install nushell
GitHub Action में Nu का उपयोग करने के लिए, अधिक जानकारी के लिए setup-nu देखें।
विस्तृत इंस्टॉलेशन निर्देश पुस्तक के इंस्टॉलेशन अध्याय में पाए जा सकते हैं। Nu कई पैकेज मैनेजरों के माध्यम से उपलब्ध है:
Nushell टीम किन प्लेटफ़ॉर्मों का सक्रिय रूप से समर्थन करती है, इसके विवरण के लिए हमारी प्लेटफ़ॉर्म समर्थन नीति देखें।
कॉन्फ़िगरेशन
डिफ़ॉल्ट कॉन्फ़िगरेशन sample_config में पाए जा सकते हैं जो वे कॉन्फ़िगरेशन फ़ाइलें हैं जो उपयोगकर्ता को Nushell पहली बार शुरू करने पर मिलती हैं।
यह Nushell चलाने के लिए सभी डिफ़ॉल्ट कॉन्फ़िगरेशन सेट करता है। यहाँ से कोई भी अपनी विशिष्ट आवश्यकताओं के लिए इस फ़ाइल को अनुकूलित कर सकता है।
यह देखने के लिए कि आपके सिस्टम पर config.nu कहाँ स्थित है, बस यह कमांड टाइप करें।
$nu.config-path
कृपया सभी Nushell दस्तावेज़ीकरण के लिए हमारी पुस्तक देखें।
दर्शन
Nu PowerShell, कार्यात्मक प्रोग्रामिंग भाषाओं, और आधुनिक CLI टूल्स जैसे प्रोजेक्टों से प्रेरणा लेता है। फ़ाइलों और डेटा को कच्चे टेक्स्ट स्ट्रीम के रूप में सोचने के बजाय, Nu प्रत्येक इनपुट को संरचना वाली चीज़ के रूप में देखता है। उदाहरण के लिए, जब आप किसी डायरेक्टरी की सामग्री सूचीबद्ध करते हैं तो आपको पंक्तियों की एक तालिका मिलती है, जहाँ प्रत्येक पंक्ति उस डायरेक्टरी में एक आइटम का प्रतिनिधित्व करती है। इन मानों को चरणों की एक श्रृंखला के माध्यम से पाइप किया जा सकता है, जिसे 'पाइपलाइन' कहलाने वाले कमांडों की श्रृंखला में।
पाइपलाइन
Unix में, एक जटिल कमांड को कई चरणों में विभाजित करने के लिए कमांडों के बीच पाइप करना आम है। Nu इसे एक कदम आगे बढ़ाता है और पाइपलाइनों के विचार पर भारी रूप से निर्माण करता है। Unix दर्शन की तरह, Nu कमांडों को stdout पर आउटपुट करने और stdin से पढ़ने की अनुमति देता है। इसके अतिरिक्त, कमांड संरचित डेटा आउटपुट कर सकते हैं (आप इसे तीसरे प्रकार की स्ट्रीम के रूप में सोच सकते हैं)। पाइपलाइन में काम करने वाले कमांड तीन श्रेणियों में से एक में आते हैं:
- कमांड जो एक स्ट्रीम उत्पन्न करते हैं (जैसे,
ls) - कमांड जो एक स्ट्रीम को फ़िल्टर करते हैं (जैसे,
where type == "dir") - कमांड जो पाइपलाइन के आउटपुट का उपभोग करते हैं (जैसे,
table)
कमांडों को पाइप प्रतीक (|) द्वारा अलग किया जाता है ताकि बाएँ से दाएँ बहने वाली पाइपलाइन को दर्शाया जा सके।
ls | where type == "dir" | table
# => ╭────┬──────────┬──────┬─────────┬───────────────╮
# => │ # │ name │ type │ size │ modified │
# => ├────┼──────────┼──────┼─────────┼───────────────┤
# => │ 0 │ .cargo │ dir │ 0 B │ 9 minutes ago │
# => │ 1 │ assets │ dir │ 0 B │ 2 weeks ago │
# => │ 2 │ crates │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 3 │ docker │ dir │ 0 B │ 2 weeks ago │
# => │ 4 │ docs │ dir │ 0 B │ 2 weeks ago │
# => │ 5 │ images │ dir │ 0 B │ 2 weeks ago │
# => │ 6 │ pkg_mgrs │ dir │ 0 B │ 2 weeks ago │
# => │ 7 │ samples │ dir │ 0 B │ 2 weeks ago │
# => │ 8 │ src │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 9 │ target │ dir │ 0 B │ a day ago │
# => │ 10 │ tests │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 11 │ wix │ dir │ 0 B │ 2 weeks ago │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯
चूँकि अधिकांश समय आप पाइपलाइन का आउटपुट देखना चाहेंगे, table मान लिया जाता है।
हम उपरोक्त को इस प्रकार भी लिख सकते थे:
ls | where type == "dir"
एक ही कमांड का उपयोग करना और उन्हें अलग-अलग तरीकों से संयोजित करना Nu में एक महत्वपूर्ण दर्शन है।
उदाहरण के लिए, हम चल रही प्रक्रियाओं की सूची प्राप्त करने के लिए अंतर्निहित ps कमांड का उपयोग कर सकते हैं, ऊपर के समान where का उपयोग करके।
ps | where cpu > 0
# => ╭───┬───────┬──────┬───────────┬──────┬─────────┬───────┬────────────┬──────────╮
# => │ # │ pid │ ppid │ name │ user │ status │ cpu │ cpu_time │ mem │
# => ├───┼───────┼──────┼───────────┼──────┼─────────┼───────┼────────────┼──────────┤
# => │ 0 │ 2240 │ 9872 │ Slack.exe │ dev │ Running │ 16.40 │ 1min 12sec │ 178.3 MB │
# => │ 1 │ 16948 │ 9872 │ Slack.exe │ dev │ Running │ 16.32 │ 48sec │ 205.0 MB │
# => │ 2 │ 17700 │ 4632 │ nu.exe │ dev │ Running │ 3.77 │ 2sec │ 26.1 MB │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯
फ़ाइलें खोलना
Nu फ़ाइल और URL सामग्री को कच्चे टेक्स्ट या संरचित डेटा के रूप में लोड कर सकता है (यदि यह प्रारूप को पहचानता है)। उदाहरण के लिए, आप एक .toml फ़ाइल को संरचित डेटा के रूप में लोड कर सकते हैं और उसका अन्वेषण कर सकते हैं:
open Cargo.toml
# => ╭──────────────────┬────────────────────╮
# => │ bin │ [table 1 row] │
# => │ dependencies │ {record 25 fields} │
# => │ dev-dependencies │ {record 8 fields} │
# => │ features │ {record 10 fields} │
# => │ package │ {record 13 fields} │
# => │ patch │ {record 1 field} │
# => │ profile │ {record 3 fields} │
# => │ target │ {record 3 fields} │
# => │ workspace │ {record 1 field} │
# => ╰──────────────────┴────────────────────╯
हम इसे एक कमांड में पाइप कर सकते हैं जो किसी एक कॉलम की सामग्री प्राप्त करता है: