TGViewer
Сіпласпластик Сіпласпластик @cpplastic · 740 subscribers
Post #182 235
Сіпласпластик Я вже якось згадував, що почав користуватись Warp як терміналом на macOS. Вирішив його спробувати, бо сподобалася (читайте — зійшлася з моєю) ідея блоків: фактично він просто групує команду з її аутпутом, що, втім, доволі зручно. Проте я ніяк не міг позбутися…
Хотів, було, розповісти вам, як я успішно перейшов з #zsh остаточно на #fish пару тижнів тому, бо останній значно прикольніший: більш людяний синтаксис, легший для сприйняття, ну й в цілому цікавий чи що. Проте на fish я надовго не затримався, бо виявилося, що є ще крутіші альтернативи. Навіть трохи шкода 😢

Колись давно я дізнався про #PowerShell від Microsoft і був до глибини душі вражений, що вони реалізували передачу структурованих обʼєктів замість тексту через пайп, адже і сам мріяв про таке давно 🙂 Але з павершелом врешті не зайшло, хоча я навіть книгу прочитав. Не тому, що він поганий абощо — ні, він навпаки чудовий, а ті, хто стверджує протилежне, просто жодного разу ним не користувалися, мабуть. Мені, наприклад, дуже подобається їх схема імен а ля Verb-Noun. Не дуже лаконічно, зате зрозуміло. Але в якийсь момент я відчув, що для ефективного використання треба глибше пірнати в .NET, а мені воно було не в тему. Та годі про PowerShell.

Я натрапив на Nushell! Він також передає структуровану інформацію через пайп, але є й інші цікавинки. Наприклад, змінні там по дефолту immutable, що спонукає писати в більш функціональному стилі. Загалом відчувається якась атмосфера Haskell трохи. Синтаксис лямбд при цьому скоріше як в Ruby. Іще цей шел не POSIX-сумісний, що безперечно є додатковою перевагою 😉 Окремо варто згадати, що він не інтерпретує вирази, а компілює: з перевіркою типів, нормальними повідомленнями про помилки — з усіма ніштяками отже.

Той факт, що через пайпи передаються структуровані дані, наприклад той же JSON, також означає, що потенційно нарешті не потрібен jq. Я тут щойно погрався і за пару хвилин зміг порахувати кількість рядків коду та ін., що ми написали в останньому тримісячному проєкті:
> let excludes = [**/3rdparty/** **/node_modules/**]
> glob **/*.{cpp,hpp,qml,js} --exclude $excludes | each { |f|
open $f | str stats
} | math sum
╭───────────┬────────╮
│ lines │ 22169 │
│ words │ 44291 │
│ bytes │ 516740 │
│ chars │ 516714 │
│ graphemes │ 516714 │
╰───────────┴────────╯

Серед читачів безперечно є хтось, хто зараз може вийти зі своїм магічним ванлайнером на баші, седі, перлі та wc, що зробить все швидше та легше, але я в них не тямлю і, головне, не хочу, бо вони навіть між собою не стандартизовані ніфіга. А тут я зміг дещо накалякати без сторонньої допомоги чисто після читання пари сторінок мануала та користування командою help.

Спробую пожити з #Nushell як з дефолтним, бо цікава штука.
  • ⚡ 1
  • 👍 1
  • 👀 1
More from @cpplastic
  1. Oct 9, 2026Зацініть рівень української служби підтримки. Жодних пояснень, заяв, перепитувань: «Не тре…
  2. Oct 7, 2026Post #543
  3. Oct 2, 2026Щось не злетіло з self-driving cars у автовиробників, еге ж? А стільки галасу було. Ну зат…
  4. Sep 24, 2026Ух, яку ж класну доповідь подивився: «Scott Jenson: Are we really going to use the same De…
  5. Sep 23, 2026Post #540
  6. Sep 21, 2026«Порекламую» вам український сайт, який мені дуже подобається. Взяв слово в лапки, бо як і…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →