अपडेट पर वापस जाएँ
New releaseAug 30, 2026

nushell v0.115.0

एक नए प्रकार का शेल

साझा करें

Nushell

Crates.io Build Status Nightly Build Discord The Changelog #363 GitHub commit activity GitHub contributors

एक नए प्रकार का शेल।

Example of nushell

विषय-सूची

स्थिति

यह प्रोजेक्ट न्यूनतम-व्यवहार्य-उत्पाद स्तर की गुणवत्ता तक पहुँच चुका है। कई लोग इसे अपने दैनिक उपयोग के लिए अपनाते हैं, लेकिन कुछ कमांड्स के लिए यह अस्थिर हो सकता है। Nu का डिज़ाइन परिपक्व होने के साथ बदल सकता है।

Nu के बारे में सीखना

Nushell पुस्तक Nushell दस्तावेज़ीकरण का प्राथमिक स्रोत है। आप पुस्तक में Nu कमांड्स की पूरी सूची पा सकते हैं, और हमारे कुकबुक में Nu का उपयोग करने के कई उदाहरण हैं।

हम Discord पर भी सक्रिय हैं; आइए और हमसे बातचीत करें!

स्थापना

Nu को जल्दी से स्थापित करने के लिए:

# Linux और macOS
brew install nushell
# Windows
winget install nushell

GitHub Action में Nu का उपयोग करने के लिए, अधिक जानकारी के लिए setup-nu देखें।

विस्तृत स्थापना निर्देश पुस्तक के स्थापना अध्याय में पाए जा सकते हैं। Nu कई पैकेज मैनेजरों के माध्यम से उपलब्ध है:

Packaging status

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  │   name    │  cpu  │    mem    │  virtual  │
# => ├───┼───────┼───────────┼───────┼───────────┼───────────┤
# => │ 0 │  2240 │ Slack.exe │ 16.40 │ 178.3 MiB │ 232.6 MiB │
# => │ 1 │ 16948 │ Slack.exe │ 16.32 │ 205.0 MiB │ 197.9 MiB │
# => │ 2 │ 17700 │ nu.exe    │  3.77 │  26.1 MiB │   8.8 MiB │
# => ╰───┴───────┴───────────┴───────┴───────────┴───────────╯

फ़ाइलें खोलना

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}   │
# => ╰──────────────────┴────────────────────╯

हम इसे एक कमांड में पाइप कर सकते हैं जो किसी एक कॉलम की सामग्री प्राप्त करता है:

open Cargo.toml | get package
# => ╭───────────────┬────────────────────────────────────╮
# => │ authors       │ [list 1 item]                      │
# => │ default-run   │ nu                                 │
# => │ description   │ A new type of shell                │
# => │ documentation │ https://www.nushell.sh/book/       │
# => │ edition       │ 2018                               │
# => │ exclude       │ [list 1 item]                      │
# => │ homepage      │ https://www.nushell.sh             │
# => │ license       │ MIT                                │
# => │ metadata      │ {record 1 field}                   │
# => │ name          │ nu                                 │
# => │ repository    │ https://github.com/nushell/nushell │
# => │ rust-version  │ 1.60                               │
# => │ version       │ 0.72.0                             │
# => ╰───────────────┴────────────────────────────────────╯

और यदि आवश्यक हो तो हम और गहराई में जा सकते हैं:

open Cargo.toml | get package.version
# => 0.72.0

प्लगइन्स

Nu उन प्लगइन्स का समर्थन करता है जो शेल को अतिरिक्त कार्यक्षमता प्रदान करते हैं और उसी संरचित डेटा मॉडल का पालन करते हैं जो अंतर्निहित कमांड्स उपयोग करते हैं। crates/nu_plugins_* निर्देशिकाओं में कुछ उदाहरण हैं।

प्लगइन्स बाइनरी हैं जो आपके path में उपलब्ध हैं और nu_plugin_* नामकरण परंपरा का पालन करते हैं। ये बाइनरी एक सरल JSON-RPC प्रोटोकॉल के माध्यम से nu के साथ इंटरैक्ट करते हैं जहाँ कमांड स्वयं की पहचान करता है और अपना कॉन्फ़िगरेशन भेजता है, जिससे यह उपयोग के लिए उपलब्ध हो जाता है। यदि प्लगइन एक फ़िल्टर है, तो डेटा स्ट्रीम एक समय में एक तत्व के रूप में उस तक पहुँचती है, और यह stdin/stdout के माध्यम से डेटा वापस स्ट्रीम कर सकता है। यदि प्लगइन एक सिंक है, तो उसे अंतिम डेटा का पूरा वेक्टर दिया जाता है और उसे stdin/stdout पर अपनी इच्छानुसार उपयोग करने की पूर्ण स्वतंत्रता दी जाती है।

awesome-nu रेपो विभिन्न nu-प्लगइन्स की सूची देता है जबकि showcase रेपो Nushell के बारे में लिखे गए जानकारीपूर्ण ब्लॉग पोस्टों को दिखाता है, साथ ही उन वीडियो को भी जो प्रस्तुत किए गए तकनीकी विषयों को उजागर करते हैं।

लक्ष्य

Nu अपने डिज़ाइन दर्शन को बनाने वाले लक्ष्यों के एक समूह का बारीकी से पालन करता है। जैसे-जैसे सुविधाएँ जोड़ी जाती हैं, उन्हें इन लक्ष्यों के विरुद्ध जाँचा जाता है।

  • सबसे पहले और सबसे महत्वपूर्ण, Nu क्रॉस-प्लेटफ़ॉर्म है। कमांड्स और तकनीकें सभी प्लेटफ़ॉर्मों पर काम करनी चाहिए और Nu का Windows, macOS और Linux के लिए प्रथम-श्रेणी समर्थन है।

  • Nu मौजूदा प्लेटफ़ॉर्म-विशिष्ट निष्पादन योग्य फ़ाइलों के साथ संगतता सुनिश्चित करता है।

  • Nu का वर्कफ़्लो और टूल्स में 2022 (और उसके बाद) के आधुनिक सॉफ़्टवेयर से अपेक्षित उपयोगिता होनी चाहिए।

  • Nu डेटा को संरचित या असंरचित के रूप में देखता है। यह PowerShell की तरह एक संरचित शेल है।

  • अंत में, Nu डेटा को कार्यात्मक रूप से देखता है। उत्परिवर्तन का उपयोग करने के बजाय, पाइपलाइनें परिवर्तनीय स्थिति के बिना डेटा को लोड करने, बदलने और सहेजने के साधन के रूप में कार्य करती हैं।

आधिकारिक रूप से समर्थित

इस सूची में जोड़े जाने के लिए कृपया एक issue या PR सबमिट करें।

योगदान

विवरण के लिए योगदान देखें। उन सभी लोगों को धन्यवाद जिन्होंने पहले ही योगदान दिया है!

लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस के तहत उपलब्ध कराया गया है। अधिक जानकारी के लिए LICENSE फ़ाइल देखें।

श्रेणियाँ