LINUX.ORG.RU
ФорумTalks

fish: упрощённый шелл и другие несовместимые с sh. Кто-нибудь пользуется?

 , , ,


0

2

Вспомнил я про https://fishshell.com и даже прочитал tutorial и чуток доков. С одной стороны, вроде прикольно, обходит bash pitfall-ы, например $var никогда дальше не экспандится, с другой некоторые синтаксические особенности вызывают у меня сильные сомнения, особенно

command (subcommand | psub)

Вместо

command <(subcommand)

Мне кажется, что лепить команды в контекст где никак команды не вписываются как-то странно. Хотя… Да, по идее, команда psub может быть реализована как внешняя — вывести имя пайпа, а самой потом в него посылать данные.

В общем интересно, кто-нибудь этим пользуется? И как оно в сравнении с башем, есть какие-то неочевидные неудобства?

Ну и заодно csh/tcsh и тд, всякие шеллы не совместимые с bash/zsh/ash/mksh/ksh/dash — тоже интересно, кто-нибудь использует это?

★★★★★

Последнее исправление: Xenius (всего исправлений: 1)

Вместо

Дядя, ты болен?

subcommand | command

как оно в сравнении с башем, есть какие-то неочевидные неудобства

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

В остальном только плюсы.

no-such-file ★★★★★
()

Меня хватило на два дня, потому что неудобно. При этом сервер, который синхронизировал историю команд (самое интересное и полезное, что в нём было), кажется позже выпилили.

xaizek ★★★★★
()
Ответ на: комментарий от no-such-file

Дядя, ты болен?

А ты не болен? У меня наиболее частый юзкейс — это примерно такое:

$ diff -us numbers.txt <(od -An -w4 -tu4 numbers.bin | tr -d ' ')
Files numbers.txt and /dev/fd/63 are identical

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

Единственное неудобство, что нельзя просто скопипастить

Копипастить из интернета в шелл — это для ламеров

А да, ещё в fish насколько я понял, нету command <<< '...' которое я довольно часто использую, так как редактировать удобнее конец команды, чем её начало. А так да, это эквивалентно echo '...' | command

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

Пользуюсь fish уже столько, что забыл почему начал (в первую очередь конечно автодополнение, подсветка синтаксиса и история удобнее работает, шарится между терминалами и команды не дублируются). В bash иногда приходится переключаться (чтобы прогнать длиннющую скопипастеннную команду), это, пожалуй, единственное неудобство.

Куда-нибудь на сервер не поставил бы.

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

если у меня оба входных файла как-то обрабатываются

Ладно, ладно, я понял твою мысль. Я таким не пользуюсь, сразу не сообразил зачем так делать.

Копипастить из интернета в шелл

Обычная практика когда нужно поставить какие-то сторонние тулзы. Или ты думаешь, что если руками будешь перепечатывать из INSTALL.md тебя это как-то спасёт?

no-such-file ★★★★★
()
Ответ на: комментарий от Xenius

Я б тоже не поставил, ссыкотно. Нестандартные компоненты требуют нестандартной практики, а это повышает вероятность ошибок.

no-such-file ★★★★★
()
Ответ на: комментарий от Xenius

Ничего конкретного. bash общепринят и практически вся документация для него пишется. Можно, конечно, и на fish всё что угодно перевести, особенно если сервер личный, а если нет - то лучше придерживаться стандарта.

neversleep ★★
()

Самим fish пользуюсь на рабочей машине, удобно, но для скриптоты запускаю bash

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

Самим fish пользуюсь на рабочей машине, удобно, но для скриптоты запускаю bash

Для самописных скриптов он по идее лучше должен быть, не? Или ты про готовые, например из /etc/rc.d ?)

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

Пользуюсь dash и zsh, зависимость есть.

CYB3R ★★★★★
()

Планирую начать пользоваться nushell.

theNamelessOne ★★★★★
()

Ненужно, есть совместимый с python xonsh.

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

Пользуюсь fish уже столько, что забыл почему начал (в первую очередь конечно автодополнение, подсветка синтаксиса и история удобнее работает, шарится между терминалами и команды не дублируются). В bash иногда приходится переключаться (чтобы прогнать длиннющую скопипастеннную команду), это, пожалуй, единственное неудобство.

zsh с плагинами даст то же самое, но совместимость с башем останется.

SR_team ★★★★★
()

Тока даша, тока хардкор. и да всегда скриптоту проверяю на башизм и их чищу...

Jetty ★★★★★
()

например $var никогда дальше не экспандится

че-то я недавно читал, что в новых башах есть опция экспандить-не экспандить.

а вообще с bash я сейчас думаю над таким фокусом. не хочу набирать каждый раз /usr/local/etc/ во фряхе, а хочу, чтобы после ule<tab> экспандило. $ule не очень удобно, т.к. приходится нажимать аж две лишних клавиши (<shitf> и <4>).

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

zsh с плагинами даст то же самое, но совместимость с башем останется.

Ну лично мне вся эта хня не нужна. Я и так синтаксис баша знаю хорошо.

Меня в первую очередь привлекает более простой синтаксис fish, и отсутствие pitfall-ов (но на самом деле ли деле это отсутствие или просто нет документа который их так же хорошо бы описывал?)

То есть меня интересует как раз несовместимость с bash (и классическим sh) в нём.

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

Не, сам fish использую как интерактивный шелл. Там удобно и красиво всяческие автодополнения сделаны. Ну и какой-то пайп накидать тоже без проблем. Когда речь заходит о написании скрипта или какой-то команды с циклами, то использую bash. Потому что лень учить нормально fish и всё-таки скрипт на bash можно запустить на большем количестве систем

cobold ★★★★★
()

Пользуюсь как интерактивным шеллом, потому что там из коробки настроено всякое автодополнение и сокращение. В скриптах явно указывают bash или sh.

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

о написании скрипта или какой-то команды с циклами, то использую bash

У fish вроде то же самое, только do/then не нужны и в конце всегда end, а не fi/done/whatever.

Потому что лень учить нормально fish

Тогда и пользоваться смысла нет, по-моему. Да и что там учить? Там всего один оператор подстановки ( ), а остальное встроенными командами.

и всё-таки скрипт на bash можно запустить на большем количестве систем

Для одноразовых и локальных скриптов пофиг, а для каких-то более продвинутых bash тоже не очень.

Xenius ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.