Fish-шелл всем шелам шелл

Поделиться
HTML-код
  • Опубликовано: 5 ноя 2024

Комментарии • 73

  • @t0digital
    @t0digital 2 года назад +14

    Круто! Я чет скриптинг их не использовал, надо ещё раз попробовать

  • @karmicdude-
    @karmicdude- Год назад +5

    fish прикольный шел, использую около 2 лет. Но все же это не posix совместимый шел и многие важные вещи там работать просто не будут. На счет удобства скриптинга на фише - это очень спорный вопрос))) Если копнете чуть глубже, выяснится, что фиш просто никак не умеет некоторые очень важные вещи и добавлять их не собираются, потому что разработчик не желает их имплементить и поддерживать.
    Из коробки очень хороший автокомплит по coreutils и часто используемых утилит, не забывайте поставить mandb, откуда в т.ч. берется информация по параметрам. Но стоит выйти за это и столкнешься со многими проблемами. До сих пор не так много софта поддерживает из коробки автодополнение fish. Не так уж давно, например, это только завезли в kubectl, а там он прям супер нужен. До этого приходилось писать/дополнять чужие попытки сделать автокомплит. И это не единичный случай, такого очень много) Если тулза не поддерживает комплит по фишу, то придется писать свой автокомплит, если тебе он нужен, а в некоторых случаях придется ставить заглушки явно его отключая, чтобы отключить попытки фиша что-то подставлять, потому что оно ломает вывод или мешает дополнению по именам файлов.
    Про поиск по истории не сказали, что он еще и контекстный. В определенной директории, где выполнялась та или иная команда, вес у нее будет значительно выше и при начале ввода первых букв команды, фиш начнет подсвечивать теневым текстом остаток наиболее релевантной команды, это весомо отличается от обычного Ctrl-R в bash, но там это решается через тот же fzf.
    Не рассказали про очень крутую штуку с аббревитаурами - вводишь аббревиатуру и она распаковывается при нажатии пробела в заданный текст. К сожалению это работает только в начале ввода команды. Где-нибудь в середине строки работать не будет (в zsh плагином это достигается и это супер удобно для ввода каких-нибудь сложных и длинных параметров, например `--sort-by=.metadata.creationTimestamp --field-selector=.spec.nodeName=...`. В zsh делаешь аббревиатуру, типа !sn и по нажатию пробела она распакуется.
    Конечно, это можно реализовать каким-нибудь сторонним средством в MacOS дефолтный распаковыватель аббревиатур (плохо работает в консоле) или какой-нибудь модуль Alfred. В лине, например, AutoKey, в Windows AutoHotKey - но все это разные реализации, никакой кроссплатформенности.
    Есть много хороших плагинов, которые упрощают работу для тех кто много работает в консоле, например автозакрытие скобочек и кавычек как в IDE.
    Фиш позволяет настроить любой биндинг, у него даже есть инструмент для захвата сочетания, вводишь fish_key_reader, дальше сочетание и он подсказывает тебе какой биндинг добавить для любого действия.
    И при этом он очень быстрый. Если его не захламлять какими-нибудь монструозными плагинам-менеджерами и настройками (надеюсь oh-my-fish не как oh-my-zsh), то он очень быстр (кстати там есть даже утилита для тестирования скорости работы).
    Мелкие приятные вещи типа alt+# (комментирует, раскоментирует команду), хотя в баше работает через последовательность ESC, # , но назад нужно возвращать из истории и стерать # самому.
    alt + s - подстановка в начало команды sudo, но такое себе, зато posix совместимая штука !! не работает (ну т.е. sudo !!) в fish не работаетг
    И еще много много всего, плюсов и минусов.
    Но честно сказать, все больше подрывает меня пересесть на zsh обратно - пользовался им около года несколько лет назад. Если прям совсем хочеться мощи консоли и есть желание упарываться, то лучше использовать zsh. Но придется потратить немного времени на допиливание его. У zsh огромная экосистема плагинов. Использовать фреемворки и тяжелые менеджеры пакетов типа oh-my-zsh - кмк дич, шел превращается в жутко тормозящую оболочку с часто ломающими что-нибудь плагинами/зависимостями, а время активации нового промта возрастает до визуальной задержки. С ними, чаще всего, идет нагромождение хлама, который нужно отдельно прописывать и отключать. И в целом zsh очень не дружелюбная среда для настройки - можете посмотреть примеры конфигов на фише и на zsh, ну это земля и небо. Да что говорить, книга по zsh есть отдельная на 600 страниц - ZSH Manual). Тем не менее, если решитесь использовать - то начинайте с пустой конфигурации, подключите antidote и активируйте несколько плагинов типа zsh-utils, zsh-fzf-history-search, zsh-abbr, fast-syntax-highlighting, zsh-autosuggestions, zsh-completions, zsh-history-substring-search, zsh-syntax-highlighting. Без всякой настройки это уже превосходит возможности фиша в удобстве. Для мощного промта подключите starship (о нем чуть ниже), для более простого и легкого полно всяких тем. zsh очень функциональный и сложноватый в настройке под себя, если хочется совсем лютой кастомизации. Но если в дебри не лезть он даст фулпак возможностей.
    Потому рекомендация такая - хочется функциональный шел, удобный и быстрый полностью из коробки и нет необходимости в более продвинутых паттернах использования оболочки - то fish это хороший выбор. Если хочется не менее мощный шел, куда более гибкий и Posix совместимый, быстрый и, если есть время потратить на базовуюц настройку, то zsh очевидный выбор. В остальных моментах и чуть настроенный bash подходит.

    • @karmicdude-
      @karmicdude- Год назад +3

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

    • @rst5nn
      @rst5nn 7 месяцев назад

      Есть ещё fish tide, это так на всякий случай

  • @Skaiiur
    @Skaiiur 2 года назад +12

    ZSH + OH-MY-ZSH =

  • @Павел-б1д3я
    @Павел-б1д3я 2 года назад +16

    Перешел со временем на ZSH c Fish, из-за несовместимости с Bash форматом. Но в остальном - отличная штука

    • @sh_zik
      @sh_zik 2 года назад

      В чем проблема указать zsh перед именем скрипта?

  • @atla5_
    @atla5_ 2 года назад +11

    фиш конечно хорош, много вещей работают из коробки, но из за того что несовместим с баш, на нем к сожалению не работают нужные скрипты, например nvm.
    все время переключать шелы неудобно, поэтому zsh мой выбор

    • @nakidai
      @nakidai Год назад

      ты скрипты копипастишь в шелл напрямую?

  • @lego12239nn
    @lego12239nn 2 года назад +20

    SOER, в bash есть ctrl-R/ctrl-S :-).
    Математика обычно так делается:
    echo 2 + 2 | bc

    • @DmitryRomantsov
      @DmitryRomantsov 2 года назад +5

      zsh alt-p, alt-n, а поиск по части строки crrl-r. И без плагинов, кстати.

    • @lego12239nn
      @lego12239nn 2 года назад

      @@DmitryRomantsov
      > И без плагинов, кстати.
      Конкретно это да :-). Но по-сути все seq, bc, echo и т.п. - это плагины. Просто благодаря архитектуре unix и shell, всё ПО соответствующее определённым соглашениям по работе с stdin, stdout, stderr и кодов возврата будет плагином для shell.
      Отсюда: среда работы в unix это и есть сам/весь unix.

    • @lego12239nn
      @lego12239nn 2 года назад

      Кстати, было бы интересно посмотреть на реализацию (()) не через встраивание в shell, как сейчас, а через отдельный процесс с интерфейсом в виде псевдоФС или, на худой конец, в виде unix domain socket. Допустим, это будет чуть поправленный bc, который умеет слушать вход с unix domain socket. На вход - выражение в текстовом виде: "r=28; 2*4*a(1)*r". На выход - ответ. А (( будет просто отправлять текст в этот socket, без обработки(ну кроме подстановки перменных с $). Т.о. первый же скрипт требующий вычисления будет стартовать эту прогу и далее никаких затрат на fork/exec. Небольшие затраты на работу с сокетом, НО. Но зато shell становится легче и можно как угодно добавлять, совершенствовать возможности этой отдельной проги, без затрагивания и даже обновления shell. Плюс, переносимость арифметических операций между разными shell(так же как сейчас с sed, awk, grep).
      То же самое и для [.

    • @brkbrkvjk
      @brkbrkvjk 2 года назад +1

      bash echo $((2+2))

    • @brainlesstalks
      @brainlesstalks 2 года назад

      z в баше это по сути dirs pushd и popd
      glo gaa и вообще любые сокращение делаются через alias

  • @Грант1147
    @Грант1147 2 года назад +3

    Спасибо большое за ваши обучающие видео)

  • @SsergeySav
    @SsergeySav 3 месяца назад

    Что бы BASH умел листать стрелками историю по частично набранной команде нужно добавить в файл .inputrc всего две строки
    "\e[A": history-search-backward
    "\e[B": history-search-forward

  • @enkryp
    @enkryp 2 года назад +2

    Пользуюсь фишем как основным шеллом под макось, но только сейчас узнал что к нему есть такие крутые плагины, спасибо!

  • @АртурЛагунов-ч6ъ

    Спасибо большое за контент, очень полезный! Жаль что я досмотрел видео когда уже прошел всю боль установки:))

  • @worldautotrader
    @worldautotrader 2 года назад +2

    Спасибо Евгений, отличный ролик.

  • @OB-el5ih
    @OB-el5ih 2 года назад +8

    да на любом проде или деве или в контейнерах по дефолту итд - баш. и делать нужно на нем. и все 🤷‍♂️ фиш умер так и не родившись. только локально разве что.

    • @leoneii
      @leoneii Год назад

      Делать да, но работать то каждый день - на чем удобно =)

  • @alko4188
    @alko4188 2 года назад +12

    ну на вкус и цвет как известно
    for в баше позволяет делать все тоже самое ) fish немного удобнее это делает, но не киллер фича.
    история команд за прошлый год? зачем ? обычно реверс серч на предыдущие 2-3 часа. все остальное, если серьезно нужно заносится в ansible/alias
    математика в шел скриптах? зачем? понимаю json из коробки )
    вообще переход на python для адванс скриптинга давно уже мейнстрим
    поиск по истории команд
    history | grep
    наделать своих элиасов на гит команды без плагинов, под свой вкус вааще не удивил )
    а вот в чем прикол манжары? нет, меня мой выбор макось + debian более чем устраивает, но вдруг ваши фломастеры вкуснее ))

    • @S0ERDEVS
      @S0ERDEVS  2 года назад +3

      еще будет видос "красивости в Fish", там про темки, цвета, функции, хуки и тому подобные штуки расскажу, здесь решил не загромождать

    • @OB-el5ih
      @OB-el5ih 2 года назад

      для истории да и вообще есть fzf))) а вообще баш умеет тоже самое)))

    • @alko4188
      @alko4188 2 года назад +1

      @@arleenlasleur и что в нем такого под дев, чего нет в остальных дистрибах ?

  • @donald2407
    @donald2407 2 года назад +2

    Oh-my-bash ставлю и больше мне и не нужно)

  • @sadpotato7563
    @sadpotato7563 2 года назад +2

    Еще можно посмотреть в сторону nushell. Что-то среднее между power-shell, bash и sql. Присутствует типизация и нативная поддержка yaml, json, csv (что обрадовало после попытки в баше распарсить yaml).

  • @pavelgushchin2223
    @pavelgushchin2223 2 года назад +2

    Да, fish - крутой shell, юзаю его уже почти год)

  • @dsyabitov
    @dsyabitov Год назад

    Поиск в баше - set -o vi (для вимеров), далее esc , /, вводишь что надо и по вимовски (j , k) листаешь.

  • @petrvictorovich
    @petrvictorovich 2 года назад +6

    Соер стал лучше выглядеть.
    То-ли ЗОЖ, то ли смет выставил.

  • @АйзекАзимов299
    @АйзекАзимов299 2 года назад +1

    привет, если не секрет, для работы какой у тебя ПК(ноутбук) ?

  • @xintreavideo
    @xintreavideo 2 года назад +4

    Не понимаю, но ведь фишевые скрипты не будут работать в баше. Тогда зачем фиш нужен?

    • @dsedchenko
      @dsedchenko 2 года назад +2

      Для неосиляторов которым bash не зашел

  • @RedkeiGost
    @RedkeiGost 2 года назад +1

    я так-то грепаю хистори в баш. Я познал юникс-вей?
    Поиск конечно зачетный, ради него уже стоит попробовать. Но может можно рыбью историю отдельно как-то установить, не тащить к себе весь новый шелл? Вообще, я реально Cool Retro Term временами работаю. Глаза конечно спасибо за сияющую штуку не скажут, но разнообразие вносит. Да, я знаю толк в извращениях.

  • @nekoill
    @nekoill 2 года назад

    Рыба не распознаёт многострочные команды, если не ошибаюсь. Если точнее, одну из шелловых команд, необходимых для установки докера.
    Алсо, zsh может находить по первым символам команды в истории, и для него arguably немного проще писать скрипты. Но это чисто мои 5 копеек.

  • @vladtroshin421
    @vladtroshin421 2 года назад +1

    самый шельный шеел из всех шеелов

  • @squiretrelawny5769
    @squiretrelawny5769 2 года назад +2

    поиск по истории команд есть и в баш
    ctrl-r и повторять этот хоткей

    • @squiretrelawny5769
      @squiretrelawny5769 2 года назад +2

      seq это не фича фиша, это отдельная программа стандартная

  • @q1ncite
    @q1ncite Год назад

    1:12 она в bash есть ctrl+r нажимаешь и всё!!

  • @antonpetrov9565
    @antonpetrov9565 2 года назад +2

    В баше историю можно также настроить без плагинов

  • @qrthack
    @qrthack 2 года назад

    Чудо, а ты не использовал Alacritty ?

  • @sirokuza
    @sirokuza 2 года назад

    Подскажите как называется пакет z в убунте не могу найти?

  • @dmitriiyokohamaman8523
    @dmitriiyokohamaman8523 2 года назад

    Fish вроде по умолчанию не "интерпретирует" Bash. Вот его основной недостаток.

  • @vitek7219
    @vitek7219 2 года назад +3

    Не знаю я юзаю bash мне норм, а эти свистелки-перделки хз не понимаю .

    • @nakidai
      @nakidai Год назад

      юзай tcsh 👍

  • @alicenNorwood
    @alicenNorwood 2 года назад +1

    Где купить этот худи

  • @ac130kz
    @ac130kz 2 года назад +2

    да, fish очень хорош, тока у него слабенькая поддержка bash

    • @S0ERDEVS
      @S0ERDEVS  2 года назад +3

      Я использую bass когда надо bash

    • @zencod_ru
      @zencod_ru 2 года назад

      @@S0ERDEVS вот про bass не знал, спасибо))) приходилось мучиться, когда нужен был bash, на одном из устройств даже перешел изза этого на zsh)

  • @yevheniit2900
    @yevheniit2900 2 года назад +1

    broot,btop,exa,hanter

  • @0alsh
    @0alsh 2 года назад

    Ощущение, что некоторые результаты были неожиданными для автора. :-)
    Например, где (echo 1 2 3). Ожидалось ведь, что для каждой цифры будет выполнена отдельная команда echo $x ?

    • @S0ERDEVS
      @S0ERDEVS  2 года назад

      Ага, echo 1 2 3 я ожидал в виде последовательности.

  • @MIRZAEV
    @MIRZAEV 2 года назад +2

    много скриптов на фиш написал. пользуюсь не первый год. видео ещё не смотрел, но сразу говорю: ФИШ - ИМБА

    • @OB-el5ih
      @OB-el5ih 2 года назад +2

      такое. это локально. а если еа енвах и в контейнерах и из коробки везде баш то поверь плевать на этот фиш.

  • @zeleniumex
    @zeleniumex 2 года назад

    Я bashit использую, он делает все то же самое только на bash, и плагинов и автокомплитов у него много

  • @brkbrkvjk
    @brkbrkvjk 2 года назад +1

    Bash - ctrl+r

  • @eskaro75
    @eskaro75 Год назад

    на компе один админ а один пользователь пользуется только судо так вот админу поставил фиш а как обычному пользователю тоже фиш поставить

  • @Romgenas
    @Romgenas 2 года назад

    4:22 А почему только положительный результат?

    • @siteted2013
      @siteted2013 2 года назад +1

      Так мат. функции в алгебре работают. В целом корнем числа А считается именно положительное число В, квадрат которого равен А.

    • @siteted2013
      @siteted2013 2 года назад

      Уточню, что я именно про арифметический корень.

    • @Romgenas
      @Romgenas 2 года назад

      @@siteted2013 арифметика отрицательные числа не проходит?

  • @Romgenas
    @Romgenas 2 года назад

    Что значит "не надо ничего запоминать"??

  • @МаркБрут-ы1ф
    @МаркБрут-ы1ф 2 года назад +2

    Незасраный хомяк... такое вообще бывает?

    • @S0ERDEVS
      @S0ERDEVS  2 года назад +1

      Виртуалка же

  • @Igor_Engineer
    @Igor_Engineer 2 года назад +1

    ничего не понятно

  • @mrslashx
    @mrslashx 2 года назад

    zsh

  • @onetwothree123-
    @onetwothree123- 2 года назад

    Честно так и не понял почему это всем шелам шелл, ну да ладно
    Лайфхак: если не помнишь команду содержащую слово "omf" и она есть в истории то "history | grep omf" что выдаст лист с порядковым номером и потом "!порядковыйНомерИзПредыдущейКоманды" что вставит эту команду в терминал
    А так вообще мой выбор ZSH