LINUX.ORG.RU

Fish Shell 4.0

 , ,

Fish Shell 4.0

0

4

Командная оболочка Fish Shell, популярная среди пользователей терминалов, обновилась до версии 4.0, которая принесла значительные изменения и улучшения.

Основное новшество заключается в том, что Fish Shell теперь полностью переписана на языке программирования Rust. Однако для обычных пользователей этот переход будет практически незаметен: команды, настройки и типичные взаимодействия останутся прежними.

Другие значимые изменения изменения

  • Новая система привязки клавиш. Fish Shell 4.0 представляет обновленную систему привязки клавиш и более глубокую совместимость с терминалами. Теперь можно заменить неинтуитивные esc-последовательности на более человекочитаемые команды, такие как bind ctrl-right. Благодаря поддержке протокола клавиатуры Kitty, Fish может различать последовательности управления, которые ранее казались идентичными, например bind ctrl-i, bind ctrl-I и bind tab.
  • Интеграция с возможностями терминала. Fish теперь автоматически использует последовательности OSC 133 для подсказок и вывода команд, что способствует более гладкой синхронизации с различными терминалами, которые ранее полагались на дополнительные скрипты интеграции оболочки.
  • Улучшенная обработка длинных команд. Оболочка теперь более аккуратно обрабатывает длинные командные строки, прокручивая их вместо неправильного отображения. Любые изменения, вызванные привязками командной строки, сразу видны, что обеспечивает более интуитивный опыт работы.
  • История команд. Пейджер истории команд, впервые представленный в Fish 3.6, был доработан. Теперь можно использовать синтаксис glob для более точной фильтрации записей истории, например, поиск по * glob syntax - git*HEAD выдаст всё, где есть git и HEAD именно в таком порядке.
  • Новая тема по умолчанию. В новой версии тема по умолчанию была слегка изменена: команды теперь отображаются в «нормальном» цвете терминала вместо трудночитаемого «синего». Существующие пользователи сохранят свои текущие настройки, если не перезагрузят тему вручную через fish_config.
  • Самоустанавливаемые сборки. Новая функция самоустанавливаемых сборок может стать настоящим прорывом для пользователей, часто работающих через SSH на серверах без административных привилегий. После компиляции Fish можно запустить один самодостаточный бинарный файл, который извлекает все необходимое — функции, страницы руководства и даже веб-инструмент настройки — в домашний каталог.
  • Исключение команд из истории. Наконец появилась долгожданная функция, позволяющая исключать определенные команды из истории. Определив пользовательскую функцию fish_should_add_to_history, можно точно решить, какие команды будут сохранены.
  • Улучшения для скриптинга:
    • string match теперь поддерживает опцию --max-matches, позволяющую ограничить количество обрабатываемых совпадений;
    • циклы for больше не будут запоминать локальные переменные из предыдущей итерации;
    • set получает опцию --no-event для подавления событий изменения переменных;
    • time начинает измерение раньше, захватывая продолжительность любых подстановок команд до их выполнения;
    • complete --erase полностью отключает автозагрузку завершений для указанных команд.

>>> Полный список изменений и релиз на GitHub

>>> Подробности в блоге fishshell.com

★★★★★

Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 5)
Ответ на: комментарий от Dr64h

В целом не так сложно её убрать

Зачем убирать если можно вообще не выводить ?

Нормальная софтина должна иметь или соответствующую опцию (я думаю далеко не все разделяют твой восторг по поводу псевдографики) или сама определять куда идет вывод, и если в трубу, то все излишества прибивать

alx777 ★★
()
Ответ на: комментарий от dataman

Должно быть очень удобно.

Нет, хотя и красиво.

Прямо из nushell можно фильтровать html код http ответа.

~> http get https://www.linux.org.ru/news/opensource/17898556?cid=17899611 
| query web --query '#comment-17899611 .msg_body > p' 
| to text 
Нет, хотя и красиво., 
Например, нужно выделить несколько строк из вывода встроенной , ls, . Псевдографика тут будет лишней.

Для того, чтоб переносить часть команды на новую строку надо нажимать Alt+Enter.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 2)
Ответ на: комментарий от alx777

Я посмотрел, если прям так неудобно с графикой, есть опции для таблиц - раздел «Table Display»

config nu --doc | nu-highlight | less -R
$env.config.table.mode = "none"
$env.config.footer_mode = "never"
$env.config.table.index_mode = "never"
...
Подсветку тоже можно убрать.
$env.config.use_ansi_coloring = "false"
Выхлоп:
     name         type      size       modified   
 Видео           dir        8.1 kB   2 weeks ago  
 Документы       dir        3.4 kB   2 months ago 
 Загрузки        dir       53.2 kB   3 days ago   
 Игры            symlink      16 B   4 months ago 
 Изображения     dir        3.4 kB   3 months ago 
 Музыка          dir        3.4 kB   4 months ago 
 Общедоступные   dir        3.4 kB   4 months ago 
 Префиксы        symlink      19 B   4 months ago 
 Приложения      symlink      14 B   3 months ago 
 Проекты         dir        3.4 kB   2 weeks ago  
 Рабочий стол    dir        3.4 kB   20 hours ago 
 Шаблоны         dir        3.4 kB   4 months ago

Dr64h ★★★
()
Последнее исправление: Dr64h (всего исправлений: 1)
Ответ на: комментарий от ZogG

Лучше уж тогда https://www.nushell.sh/

☕️🍰🌮🍏🍎🍓🍍🍅🥬🍈🥦

Двух чаев мало. Nushell супер инструмент. Это удобней чем irb в Ruby, так как сразу дает высокоуровневый доступ к http, датам, базам данных. Если irb как-бы сам по себе, для внутренних расчетов, то nushell уже связан со окружающим миром: файлами, базами, сетью.

Это следующий шаг после Ruby REPL, еще быстрей. Сразу получил доступ к http запросу, сразу выбрал нужный элемент через CSS селектор. Без какого либо require.

Высший класс.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 4)
Ответ на: комментарий от alx777

Зачем убирать если можно вообще не выводить ?

В ситуации nushell табличное оформление востребованно, так как вся фильтрация производиться через мощный язык программирования. Таблицы же читать удобней.

сама определять куда идет вывод, и если в трубу, то все излишества прибивать

Это shell ему не требуется куда-то перенарпавлять свой вывод, в данной ситуации вывод надо сделать читабильным.

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

Любопытства ради, а зачем это нужно?
Как часто вам приходится проделывать подобные операции? Ну и обычно подобная полученная информация затем как-то обрабатывается или передается, так что лучше изначально взять какой нибудь питон и накидать скриптик.

eyrell
()
Ответ на: комментарий от eyrell

Любопытства ради, а зачем это нужно?

Для прототипирования, исследований, оценок и быстрых подсчетов. В английском языке это называется «throw away scripts».

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от eyrell

так что лучше изначально взять какой нибудь питон и накидать скриптик.

Получается, что больше ради nu используете, нежели ради самого shell(repl)?

За несколько сообщений в треде я уже всё объяснил. Если вам интересно, перечитайте сообщения, почитайте сайт проекта. Складывается впечатление, что вам надо «ущучить», доказать, что Nushell не нужен, засыпая вопросами.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 3)
Ответ на: комментарий от lbvf50txt

Так я и спрашиваю, потому что даже прочитав ваши посты не понял какие проблемы оно у вас решает. Приведенные примеры выглядят сомнительно.
Я пользовался им около месяца и могу поделиться ровно противоположным опытом, поэтому и пытаюсь понять как и зачем его используют другие люди.
Имхо, как шелл в интерактивном режиме это просто отвратительное решение. Если вывод программы по везению сможет сформатироваться под формат таблицы, то безусло удобно фильтровать/выбирать и т.д, но таких задач почти не возникает. Для просмотра файлов данных лучше использовать visidata, так что и здесь мимо. Вычленять что-то из ответов хттп в интерактивном шелле тоже не часто приходится.
Вот и возникает вопрос «а зачем», когда для интерактивности есть привычные и простые шеллы для которых не нужно учить отдельный язык, а для анализа данных, poc и " скриптов на выброс" такие языки как питон.
Для меня это выглядит как использование идеи/концепта ради факта использования, а не для решения задач.

eyrell
()
Ответ на: комментарий от papin-aziat

Возьмём современный русский язык, где точно нет [w]

Я бы не был столь категоричен. Даже помимо выше упомянутого дефекта дикции есть и в заимствованных словах — в основном в названиях торговых марок. Например сигареты на кассе я часто слышу, что люди передо мной спрашивают именно wинстон, а не винстон и тем более не уинстон. Да и Шекспира часто называют не Уильямом и уж точно не Вильямом, а Wильямом таки. Но да, прям в русских-русских словах такого звука явно нет.

В любом случае в моём тексте везде вместо v стоит u.

Всё не как у людей — надо же наоборот!

- BVRN THE VVITCH!
- Как можно, падре?! Она же такая красивая!
- Ну лааадно!.. Но потом — сжечь!

CrX ★★★★★
() автор топика
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от eyrell

Так я и спрашиваю, потому что даже прочитав ваши посты не понял какие проблемы оно у вас решает.

Об nushell я узнал из поста @ZogG, несколько часов назад. Какие пролемы nu может у меня решать?

Я пользовался им около месяца и могу поделиться ровно противоположным опытом,

Наверное, потому что вы не рубист и не привыкли писать в определенном стиле. У рубистов Nushell вызывает определенные дежавю; видно, что язык сконструирован под сильным влиянием Ruby.

когда для интерактивности есть привычные и простые шеллы для которых не нужно учить отдельный язык

Это для вас новый язык который «надо учить». А для кого-то это уже давно знакомый язык котрого не хватало в shell.

Для меня это выглядит как использование идеи/концепта ради факта использования, а не для решения задач.

P.S. И на будущее пишите сразу: у меня был такой-то опыт, мне не понравилось. «Выведение на чистую воду» через множественные вопросы и однозначные вердикты они не приятны вашему собеседнику.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 5)
Ответ на: комментарий от lbvf50txt

Если ты Рубист сплеча,
То nuди не слишком,
А не то прийдёт сейчас
Ржавый, злой Rustишка!

CrX ★★★★★
() автор топика
Ответ на: комментарий от CrX

Ага. Плагины в Nu ставятся через Cargo. Благо что плагин query из примера для @dataman идет в комплекте с Nu. Его надо просто зарегать через

plugin add /usr/libexec/nushell/nu_plugin_query

и заюзать через

plugin use query.

Пере этим определившись где находятся плагины через dpkg -L nushell.

Ржавый, злой Rustишка!

На Lor стало притяно Rust хейтить.

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

На Lor стало притяно Rust хейтить.

Я не хейтер, если что (хотя и не фанат тоже — просто язык как язык, со своими плюсами и минусами). Это скорее где-то на грани между иронией и сарказмом. Возможно даже постирония (а может и нет — я этот термин сам толком не понимаю…)

CrX ★★★★★
() автор топика
Ответ на: комментарий от CrX

Всё не как у людей — надо же наоборот!

Попробую найти книгу и проверить, возможно память отжигает, такое бывает.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

Если найдёшь, посмотри ещё на предмет буквы K. Есть ли она там в принципе и как часто встречается, если есть. И опять же, если есть, все ли слова с ней — варварские заимствования

CrX ★★★★★
() автор топика
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

Ну вдруг :)

Уж если там u вместо v, а не наоборот, то всякое может быть.

CrX ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Вообще, мне кажется, что я видел книгу, в которой было и так и эдак. А конкретнее — в заголовках и КАПСОМ — везде V вместо U, а в тексте обычным регистром — уже с u. Но я не помню, что это была за книга, и не «приснилось» ли мне это вообще, если честно. Почти точно уверен, что если она такая была, то уже точно нашей эры и связана с христианством. Кажется, там то ли в названии то ли в заголовке одной из самых первых глав было DOMINVS. Но я точно не уверен.

CrX ★★★★★
() автор топика
Ответ на: комментарий от CrX

Видимо прописанные идут V, а строчные — u.

Память таки сыграла шутку, то был не Тацит, а Тит Ливий 😁

Однако всё как я сказал: https://i.ibb.co/Xr5t0JPS/IMG-20250301-030147.jpg

В тексте и строчные и прописные — U, то есть совсем отсутствует V.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

А, блин, это же Ab Urbe condita. Я же это видел. Но как-то не придал значения этим u. Хотя возможно, что в моей версии просто было иначе. Давно это было…

P.S. А главное всё понятно. Даже мне, при том, что я латынь конкретно никогда целенаправленно не учил. Оно само по себе как-то понятно — из знания других языков и понимания закономерностей. Хороший всё-таки язык был…

CrX ★★★★★
() автор топика
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

Короче, Тит Ливий жил до 17 года новой эры (родился в -59). А U для [v] начали использовать с IV века нашей эры, так что это анахронизм. Твоя догадка о K не лишена смысла, но я, кстати, ни разу такого не видел, а вот J — да.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

Да тут не надо полиглотом быть. Я может совсем немножко слукавил, что латынь не учил — падежи и времена всё же знаю более-менее. Но даже без этого всё понятно же, о чём речь. «casibus» — ну даже в русском теперь есть слово «кейс», variis — даже не зная английскоого various, ты знаешь слова «вариант» и «варьируется» и понимаешь, что в них общего. Ладно, совсем дикий человек может понять плохо слово cum, конечно… Но кто видел другие латинские тексты, тот и его понимает, даже без специального изучения. multitudine непонятно разве? Ну и так далее. Ну а имена собственные вообще перевода не требуют.

CrX ★★★★★
() автор топика
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от lbvf50txt

рубист

Фигасе. Респект, камрад. Я уж думал я тут один.

t3n3t
()
Ответ на: комментарий от CrX

В этом плане нам вообще довольно просто — индоевропейские языки все похожие. Даже санскрит можно читать и примерно понимать, хотя бы о чём там (а при небольшой подготовке — вполне понимать уже), при большом желании. Оно же всё то же самое везде. Даже унылые детские шутки о том, что «буддизм — от слова будить» — это ведь не задорновщина и не просто глупость, а там действительно один корень: с викисловаря — बोधति (bodhati, “to wake, to awaken”).

Всё гораздо хуже, когда дело доходит до языков другой группы. Даже семитских. Не говоря уж о всяких китайских и японских. Вот там всё совсем трудно, да.

CrX ★★★★★
() автор топика
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Есть нюансы со славянскими языками, например. Те же чешский и польский с уродами, позорами, овощами-фруктами, диванами-коврами и т.п.

А в целом все так, да, особенно в германской группе языков. С романскими чуть сложнее, но таки через латынь воспринимается легче.

t3n3t
()
Ответ на: комментарий от CrX

Не, у меня лингвистическая догадка на нуле, я либо знаю слово или выражение, либо нет, хотя возможно вообще знаю мало слов. Читал, что это можно натренировать, но что-то лениво. Да чего говорить, уже сколько английской грызу, а до сих пор произвольный текст скорее всего не пойму.

Хотя на итальянском когда-то немного говорил и читал, во всяком случае ездил в Италию с бумажным разговорником нормально, и латинский, кстати, делал попытки учить.

У меня есть простое объяснение — нет таланта к языкам. Опять же, возможно это тренируется, чтобы поменять подходы на такие, которые будут ближе к людям одарённым, но я пока не нащупал. Разумеется, у меня есть кучка хороших аргументов в пользу своей теории, потому что я прочитал много книг о всяких полиглотах и все их рекомендации мимо кассы.

Давай сразу договоримся, что мнение людей, которые хорошо учили языки в детстве меня не интересуют от слова совсем, надеюсь не придётся объяснять почему 😁

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

У меня есть простое объяснение — нет таланта к языкам.

«Талант к языкам» - спорная терминология, вокруг которой много-много сломанных копий. Видел много людей совершенно разных возрастных групп, которые начинали изучать иностранные языки (тоже разные) с нуля. Даже практиковал немного, хотя в основном, наблюдал за работой профессионалов.

Сделал для себя субъективный вывод, что данная проблематика решается разницей подходов к процессу обучения и, непосредственно, вникания. Хорошо сочетается что-то, действительно интересующее человека в плане получения удовольствия с принудительным потреблением оного на соответствующем языке. Да-да, пресловутые фильмы в оригинале с субтитрами, игры (особенно игры, ибо дофаминовая награда), музыка. Только не литература. Ни техническая, ни художественная.

t3n3t
()
Ответ на: комментарий от papin-aziat

Не, у меня лингвистическая догадка на нуле, я либо знаю слово или выражение, либо нет, хотя возможно вообще знаю мало слов.

Да, когда больше слов знаешь, оно точно легче.

Читал, что это можно натренировать, но что-то лениво.

Я не знаю, насколько упешно это можно именно специально натренировать — скорее само по себе так получается, но от «тренировок» — не специально организованных.

Давай сразу договоримся, что мнение людей, которые хорошо учили языки в детстве меня не интересуют от слова совсем, надеюсь не придётся объяснять почему 😁

Я не такой, если что. Я только русский и английский знаю. Остальные никогда не учил, полностью не понимаю, только на уровне вот догадок о чём там. Полиглотом я точно не являюсь. Но латынь всё же кажется довольно понятной.


А вообще тут надо иногда просто чуть подольше посидеть и повчитываться. Это не интуиция, а всё же скорее анализ. Хотя после определённой тренировки он и начинает происходить быстрее легче.

Давай попробуем с примером. Я сейчас напишу название книги, а ты пока дальше пост не читай, просто над самими словами подумай хотя бы минуту. Возьму сразу что посложнее.

Вот у Фрейда есть Jenseits des Lustprinzips.

Разве тебе не понятны эти слова?

То, что des это то же, что в английском of, понять конечно нельзя, только запомнить. Но оно часто встречается и легко заседает в память как стандартная конструкция. Jenseits — явно из двух слов/корней составлено — это, думаю, довольно очевидно само по себе. Начнём с seits. Зайц какой-то. Понятно, что это не заяц, но какие мы слова похожие знаем, чтоб не про зайцев при этом? О, английское side! Похоже? Похоже. А если вспомнить, что там t в d переходило не только в этом, а в очень многих словах, то всё совсем на свои места встаёт. Сторона, стало быть. Что-то со сторонами. Понять Jen не получится, но можно дальше по контексту пойти, или же можно вспомнить, что у Ницше есть Jenseits von Gut und Böse — прям совсем знаменитое произведение, и переводится как «По ту сторону добра и зла» — даже мемом стало. Ну значит явно же «по ту сторону». Слово Lust понятно из знания английского. В немецком значение немного другое — удовольствие скорее, но даже оно чуть ближе к английскому, нежели именно к русскому «удовольствие», потому что имеет всё же некоторый такой подтекст. Ну а prinzips прям совсем, как мне кажется, понятно. В итоге получаем какую-то фигню: по ту сторону принципа удовольствия… Не получилось, хрень какая-то… А, нет, именно прям вот под таким названием книга и издавалась на русском :)

CrX ★★★★★
() автор топика

Зашёл поучаствовать в очередном техническом сраче, а тут каких-то Титов Ливиев обсуждают.

Чего???

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Чего???

Ко всему прочиму тут обсуждают Nushell, в котором есть типы данных Filesize и Сell Path. Cell Path позволяет записать путь к ячейке много мерного массива и потом применять этот путь на разных массивах. А вы думали?


# Meню нашего ресторана
~> let fruts = [[apple banana gurshana] [cherry grape pineapple] [ peach abrico kiwi]]
~> let beverage = [[vdochra pivo yers] [pervak votryar soda] [pepsi cola kvas]]

# Tипичны заказ. Вот он вот Cell Path!
let cp = $.1.2

# Применения заказа к фруктам и напиткам

~> $fruts | get $cp
pineapple
~> $beverage | get $cp
soda

# Заказ для гурманов
~> let one_more_cp = $.0.1
~> $fruts | get $one_more_cp
banana
~> $beverage | get $one_more_cp
pivo

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

у меня для такого есть vscode с жупитерскими ноутбуками (в которых может быть далеко не только питон)

Lrrr ★★★★★
()
Ответ на: комментарий от jfs

есть yash, posix совместимый, подсказки на основе истории, автодополнение путей, (некоторых) комманд. работает из коробки

Интересно. Похоже, что с японским качеством.

dataman ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.