Страница 1 из 1

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 00:52
malvinochka2017
Терминал - штука хорошая и полезная. Поэтому как-то незаметно для себя снова стала (после некоторого долгого перерыва) возвращаться на использование командной строки. Вот заходила тут на форум Матунту и наткнулась на новую (с 2015 года) оболочку командной строки.
Заинтересовала Fish или Friendly Interactive Shell - это командная оболочка Linux нового поколения. Она разработана, чтобы облегчить пользователю выполнение команд, есть подсветка синтаксиса, подсветка правильных адресов файлов, быстрый поиск по истории, веб-конфигуратор, а также особый синтаксис скриптов. Это новая командная оболочка в Linux и её синтаксис не похож ни на одну из современных командных оболочек, а скорее на язык программирования Python.

В официальном репозитории Ubuntu 16.04 есть пакет Fish версии 2.2, но имеется возможность установить более новую версию из стороннего репозитория:

sudo add-apt-repository ppa:fish-shell/release-2 -y
sudo apt update
sudo apt install fish

В терминале после ввода команды fish открылось приглашение в новую командную оболочку.
@Vita
Что бы терминал всегда запускался не в bash, а в fish, ставим галочку в "запускать другую команду вместо моей оболочки" и пишем слово fish:
Снимок экрана в 2017-07-16 00-36-22.png
Лично мне Fish сразу понравилась. В первую очередь продвинутой автозаменой и поиском команд. Очень убыстряет работу. Изменение цвета команд (например, если есть ошибка синтаксиса, то текст подсвечивается красным). Остальные преимущества я пока просто не смогла осмыслить, что бы охарактеризовать :acute: Ну бывает так, что вроде прикольно и нравится, а почему - не понимаю :blush:

Плюшки под спойлером (@Хабр):

* Интерактивный режим работы и дружественность пользователю;
* Подробная и доступная информация о командах делает их поиск значительно проще, чем в man-страницах оболочки bash. И даже если fish не сможет подключиться к X-серверу, для показа справки будет задействован браузер links;
* Подсветка синтаксиса: при вводе команды буквы выделяются красным цветом, и меняют его на зелёный, если имя команды написано правильно;
* Названия существующих папок подчёркиваются;
* Eсть вкладки и история;
* Достаточно набрать 192 и нажать стрелку вверх как в командной строке будут листаться все когда-либо исполненные команды где фигурировал этот обрывок адреса
* Если начать набирать команду с начала, то сразу же предлагается продолжение из уже когда-либо выполненной команды, стрелочка направо и вся команда готова к запуску.
* Fish использует специфические конструкции скриптов, которые проще для начинающих пользователей;
* Автодополнение здесь лучше, чем в bash, так как fish умеет дописывать опции;
* Легко читаемый вид функций;
* Легко настраивать в браузере используя команду fish_config.
* Дополнительно поддерживается автодополнение по Tab;
* help команда для просмотра документации по FISH веб-браузера;
* Поддержка постоянной переменной;
* Подсветка синтаксиса и обширная проверка ошибок;
* Поддержка буфера обмена;
* Терминал поддерживает 256 цветов;
* Веб-конфигурация;
Гифки взяты отсюда
cd.gif
Подсветка синтаксиса: при вводе команды буквы выделяются красным цветом, если команда введена неверно или не полностью, если команда введена правильно, цвет изменяется на синий, и будет предлагаться продолжение из уже когда-либо выполненных команд
echo.gif
Подсветка синтаксиса: при вводе команды буквы выделяются красным цветом, если команда введена неверно или не полностью, если команда введена правильно, цвет изменяется на синий, и будет предлагаться продолжение из уже когда-либо выполненных команд
help.gif
Выполните команду help в оболочке fish, чтобы ознакомиться с инструкциями к командной оболочке Fish, которые откроются либо в браузере, либо в консоли
date.gif
date
locale
pwd

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 01:06
Chocobo
Штука безусловно занятная, но стоит заметить что не совместим с bash / sh

Для новичков может много проблем и не преподнесет, но те же выборки под * (wildcard) - толком не умеет. Как и многие другие bash-конструкции.
Т.е. если где то потребуется выполнить bash-команду - 30/70 вероятности, что она не отработает под фиш, ибо они не стремятся обеспечить POSIX-совместимость.

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 01:19
malvinochka2017
Chocobo писал(а): Т.е. если где то потребуется выполнить bash-команду
Например, какую? :lupa:

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 03:25
BadBird
Терминатор хороший терминал.
Главное для меня в нем это закладки....

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 03:27
Chocobo
BadBird, эмулятор терминала тут не при чем :smile: речь за сам шелл который будет там рисоваться

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 03:38
Chocobo
malvinochka2017 писал(а): Например, какую?
например простой перебор в цикле

Код: Выделить всё

chocobo@desktop ~ $ echo $SHELL
/bin/bash
chocobo@desktop ~ $ for i in {1..5};do echo $i; done;
1
2
3
4
5
chocobo@desktop ~ $

Fish - дружелюбная командная строка.

Добавлено: 16 июл 2017, 09:51
malvinochka2017
Chocobo, Да, не работет...
Команда 'done' не найдена, возможно вы имели в виду:
Команда 'dune' из пакета 'whitedune' (universe)
Команда 'one' из пакета 'opennebula' (universe)
Команда 'drone' из пакета 'ostinato' (universe)
Команда 'dane' из пакета 'sshfp' (universe)
done: команда не найдена
fish:
$ for i in {1..5};do echo $i; done;
А, может, это из-за различия в синтаксисе?

Fish - дружелюбная командная строка.

Добавлено: 18 ноя 2017, 10:20
Dja
что только не придумают лишь бы стандартным эмулятором не пользоваться :-D

Fish - дружелюбная командная строка.

Добавлено: 19 ноя 2017, 16:37
root
malvinochka2017 писал(а):
16 июл 2017, 00:52
Fish использует специфические конструкции скриптов, которые проще для начинающих пользователей;
Вот это и смущает. Лучше сразу научиться как делать правильно, чем потом переучиваться. Но это в случаи, если я правильно понял написанное... Помню, когда с++ только изучал, скачал простецкую программку "для новичков". Многие команды, которые в правильном компиляторе привели бы к ошибке, там выполнялись без них. Т.е. какой-нибудь динамический двумерный массив можно было объявить так int mas[i][j], что ни есть норма, +от препода прилетело :-D . Потом пришлось переучиваться. Если в Fish такой же принцип, это ни круто. Кроме того, соглашусь с Chocobo, POSIX-совместимость также очень важна. Все-таки остановлю обычный терминал GNOME, а за тему спасибо.

Fish - дружелюбная командная строка.

Добавлено: 19 ноя 2017, 22:40
Bill Williamson
root писал(а):
19 ноя 2017, 16:37
POSIX-совместимость также очень важна.
Тогда отличная альтернатива zsh. Плагинами типа zsh-autosuggestions можно сделать похожим на fish. Как-то уже тема поднималась.
root писал(а):
19 ноя 2017, 16:37
Все-таки остановлю обычный терминал GNOM
Fish - дружелюбная командная строка.

Fish - дружелюбная командная строка.

Добавлено: 19 ноя 2017, 22:53
Dja
Bill Williamson, это не та, которая умеет писать так, что оттуда можно копировать?

Fish - дружелюбная командная строка.

Добавлено: 19 ноя 2017, 23:02
Bill Williamson
Dja писал(а):
19 ноя 2017, 22:53
это не та, которая умеет писать так, что оттуда можно копировать?
Имеется в виду автодополнение?

Fish - дружелюбная командная строка.

Добавлено: 19 ноя 2017, 23:04
Dja
Bill Williamson, нет. Вроде есть какая-то консоль, которую можно ею же записать, а потом при воспроизведении записанного делать паузу и оттуда копировать.

Fish - дружелюбная командная строка.

Добавлено: 20 ноя 2017, 00:03
connor41
Dja, ну дык тут обговаривают не эмулятор терминала, а командная оболочка (shell)