
nushell v0.115.0
نوع جديد من الشل
Nushell
نوع جديد من الصدفات.

جدول المحتويات
الحالة
وصل هذا المشروع إلى مستوى جودة الحد الأدنى القابل للتطبيق. يستخدمه الكثيرون كأداة يومية، لكنه قد يكون غير مستقر في بعض الأوامر. تصميم Nu عرضة للتغيير مع نضوجه.
التعرف على Nu
يُعد كتاب Nushell المصدر الأساسي لتوثيق Nushell. يمكنك العثور على قائمة كاملة بأوامر Nu في الكتاب، ولدينا العديد من الأمثلة على استخدام Nu في كتاب الوصفات.
نحن أيضًا نشطون على Discord؛ تعال وتحدث معنا!
التثبيت
لتثبيت Nu بسرعة:
# Linux and macOS
brew install nushell
# Windows
winget install nushell
لاستخدام Nu في GitHub Action، راجع setup-nu لمزيد من التفاصيل.
يمكن العثور على تعليمات التثبيت التفصيلية في فصل التثبيت من الكتاب. Nu متاح عبر العديد من مديري الحزم:
للحصول على تفاصيل حول المنصات التي يدعمها فريق Nushell بنشاط، راجع سياسة دعم المنصات لدينا.
الإعدادات
يمكن العثور على الإعدادات الافتراضية في sample_config وهي ملفات الإعدادات التي يحصل عليها المستخدم عند تشغيل Nushell لأول مرة.
تقوم بتعيين جميع الإعدادات الافتراضية لتشغيل Nushell. من هنا يمكن للمرء تخصيص هذا الملف وفقًا لاحتياجاته الخاصة.
لمعرفة مكان وجود config.nu على نظامك، اكتب ببساطة هذا الأمر.
$nu.config-path
يرجى الاطلاع على الكتاب للحصول على جميع وثائق Nushell.
الفلسفة
يستلهم Nu الإلهام من مشاريع مثل PowerShell ولغات البرمجة الوظيفية وأدوات سطر الأوامر الحديثة. بدلاً من التفكير في الملفات والبيانات كتدفقات خام من النص، ينظر 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} │
# => ╰──────────────────┴────────────────────╯
يمكننا تمرير هذا إلى أمر يحصل على محتويات أحد الأعمدة:
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 │
# => ╰───────────────┴────────────────────────────────────╯