ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° новая командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° nushell

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ nushell, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΉ возмоТности Power Shell ΠΈ классичСских unix shell. Код написан Π½Π° языкС Rust ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ развиваСтся ΠΊΠ°ΠΊ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Windows, macOS ΠΈ Linux. Для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, взаимодСйствиС с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ осущСствляСтся ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ JSON-RPC.

Π’ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ примСняСтся привычная для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Unix систСма ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «ΠΊΠΎΠΌΠ°Π½Π΄Π°|Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹|ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π²ΠΎΠ΄Π°». По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄ оформляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ autoview, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ примСнСния ΠΊΠΎΠΌΠ°Π½Π΄ для отобраТСния Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΌ прСдставлСнии. Бильной стороной nushell являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ манипуляции структурированными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° позволяСт ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡŽΡ‚ΡΡ с использованиСм ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ синтаксиса, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ изучСния ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, nushell позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ конструкции, ΠΊΠ°ΠΊ «ls | where size > 10kb» ΠΈ «ps | where cpu > 10», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ большС 10Kb ΠΈ процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ большС 10 сСкунд рСсурсов CPU:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° новая командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° nushell

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° новая командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° nushell

Для структурирования Π΄Π°Π½Π½Ρ‹Ρ… примСняСтся ряд надстроСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ надстройки ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ для ΠΊΠΎΠΌΠ°Π½Π΄ cd, ls, ps, cp, mkdir, mv, date, rm (для Π²Ρ‹Π·ΠΎΠ²Π° Ρ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ прСфикс «^», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ² «^ls» ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ запуску систСмной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ls). Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ ΠΈ спСциализированныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ open для отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² JSON, TOML ΠΈ YAML поддСрТиваСтся автоматичСский Ρ€Π°Π·Π±ΠΎΡ€.

/home/jonathan/Source/nushell(master)> open Cargo.toml

——————+——————+——————
dependencies | dev-dependencies | package
——————+——————+——————
[object Object] | [object Object] | [object Object] ——————+——————+——————

/home/jonathan/Source/nushell(master)> open Cargo.toml | get package

————-+—————————-+———+———+——+———
authors | description | edition | license | name | version
————-+—————————-+———+———+——+———
[list List] | A shell for the GitHub era | 2018 | MIT | nu | 0.2.0
————-+—————————-+———+———+——+———

/home/jonathan/Source/nushell(master)> open Cargo.toml | get package.version | echo $it

0.2.0

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ большой Π½Π°Π±ΠΎΡ€ инструкций для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ структурированных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‚ΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ строки, ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ столбцам, ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ простыС вычислСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ счётчики Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ CSV, JSON, TOML ΠΈ YAML. Для нСструктурированных Π΄Π°Π½Π½Ρ‹Ρ… (тСкста) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ инструкции для Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ Π½Π° столбцы ΠΈ строки Π½Π° основС символов-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru