The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Выпуск командной оболочки fish 3.0"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск командной оболочки fish 3.0"  +/
Сообщение от opennews (??), 28-Дек-18, 22:46 
Подготовлен (https://sourceforge.net/p/fish/mailman/message/36503612/) релиз интерактивной командной оболочки fish 3.0.0 (http://fishshell.com/) (friendly interactive shell), развивающейся как более дружественная пользователю альтернатива bash и zsh. Fish поддерживает такие возможности как подсветка синтаксиса с автоматическим выявлением ошибок ввода, предложение возможных вариантов ввода на основе истории прошлых операций, автодополнение ввода опций и команд с использованием их описания в man-руководствах, комфортная работа из коробки без необходимости дополнительной настройки, упрощённый язык написания сценариев, поддержка буфера обмена X11, удобные средства поиска в истории выполненных операций. Код проекта распространяется (https://github.com/fish-shell/fish-shell) под лицензией GPLv2. Готовые пакеты сформированы для Ubuntu (https://launchpad.net/~fish-shell/+archive/ubuntu/release-3), Debian, Fedora, openSUSE и RHEL (https://software.opensuse.org/download.html?project=shells&#...).

Значительное изменение номера версии связано с внесением  изменений, нарушающих обратную совместимость. Большая часть существующих скриптов продолжит работать, тем не менее авторам скрипов следует удостовериться (https://github.com/fish-shell/fish-shell/releases/tag/3.0.0), что в их коде не используются возможности, поведение которых было изменено. Некоторые изменения, нарушающие совместимость:


-  Прекращена возможность определения идентификаторов процессов и работ с использованием оператора "%", оставлена только поддержка выражения "%self", позволяющего определить текущий PID;


-  Прекращена поддержка синтаксиса "set x[1] x[2] a b" для установки разом нескольких элементов массива;
-  Обращение к массиву с нулевым индексом ("array[0] ") теперь приводит к ошибке (элементы массивов в fish начинаются с 1).
-  Переменные в циклах "for" больше не являются локальными для блока;
-  Переменные, установленные в условных выражениях "if" и "while" теперь доступны вне блока;
-  Во встроенной команде  math прекращена поддержка логических выражений  (для них следует использовать команду test);
-  В команде "cd" прекращена поддержка перехода по символическим ссылкам;
-  Указание аргументов после выражения "end" теперь не игнорируется, а приводит к выводу ошибки;
-  Зарезервированы и больше не могут использоваться в именах функций ключевые слова "argparse", "read", "set", "status", "test" и "[";
-  Прекращена разбивка переменных окружения в элементы массива при наличии разделителя, за исключением переменных, заканчивающихся на слово "PATH";
-  Переведены в разряд устаревших в будущем будут удалены такие возможности как переменная IFS для команды read (следует использовать опцию "--delimiter"), режим "--on-process-exit" (замена "--on-event fish_exit"), переменная $_ (замена "status current-command"), использование знака "^" для перенаправления stderr и маски "?".

Среди добавленных улучшений (https://github.com/fish-shell/fish-shell/releases/tag/3.0.0):


-  Добавлен механизм флагов, определяющих уровень поддерживаемой функциональности и позволяющий сохранить работоспособность скриптов в условиях прекращения поддержки определённых возможностей и внесения нарушающих совместимость изменений. Для определения используемого уровня функциональность предложены опция "--features" и переменная "fish_features", через которые можно указать необходимую версию fish. Например, если скрипт завязан на функциональность fish 3.0 можно указать "--features 3.0";

-  Добавлены логически операторы "&&", "||" и "!", которые можно использовать вместо "and", "or" и "not";
-  Переменные теперь можно использовать как команды (например, при запуске теперь можно указывать "$HOME/bin/mvim" без необходимости применения eval);

-  Добавлена опция "--private" для запуска оболочки в приватном режиме , в котором связанная с сеансом активность не сохраняется в логах и истории введённых команд;

-  Добавлена команда "wait" для ожидания завершения фоновых процессов;
-  Команда "math" теперь встроена в fish (ранее была реализована в виде обвязки над bc). По умолчанию все вычисления производятся в дробном представлении;

-  Добавлена зарезервированная переменная $hostname, отражающая имя текущего хоста;
-  Добавлены переменные $fish_pid и $last_pid, предложенные в качестве замены %self и %last;
-  Команда "string" теперь не останавливает разбор строки после нулевого символа. Для работы со строками с разделителем в виде нулевого символа добавлены отдельные подкоманды split0 и join0. Добавлена опция "--no-empty" для исключения пустых сток при выводе. В команду "string escape" добавлена опция "--style regex" для экранирования с применением регулярных выражений;

-  Предложен большой набор новых опций для различных команд, в том числе "alias --save", "bind --silent", "complete --keep-order", "funced --save", "functions --handlers", "history search --reverse", "jobs  --quiet", "read --delimiter", "set --append", "set --prepend", "set --show";
-  Добавлена команда xclip  для взаимодействия с буфером обмена;
-  В интерактивном режиме завершения строки символом "|" теперь приводит к продолжению работы на следующей строке (например, "echo foo |");-  Значительно расширены возможности системы автодополнения ввода  и  управления многостраничной прокруткой (pager);
-  Существенно повышена производительность установки переменных, запуска функций, команды abbr, раскрытия путей (globs), чтения строк из стандартного ввода, выборки из истории (особенно ускорен вызов $history[1] для получения последней запущенной команды).


URL: https://sourceforge.net/p/fish/mailman/message/36503612/
Новость: https://www.opennet.ru/opennews/art.shtml?num=49870

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

2. "Выпуск командной оболочки fish 3.0"  +13 +/
Сообщение от Антонимус (?), 28-Дек-18, 22:50 
> Обращение к массиву с нулевым индексом ("array[0] ") теперь приводит к ошибке (элементы массивов в fish начинаются с 1).

Фееричные инновации. Гениальный ход.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (3), 28-Дек-18, 22:51 
То есть некий неосилятор придумал свой POSIX-несовместимый синтаксис, а теперь понял что нахрен он такой никому не нужен и начал пилить совместимость?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Выпуск командной оболочки fish 3.0"  +4 +/
Сообщение от anon123123123 (?), 28-Дек-18, 22:59 
юзаю fish уже около года. отлично работает с коробки.
индекс с 1 - дичь, но есть объяснение

"Note that array indices start at 1 in fish, not 0, as is more common in other languages. This is because many common Unix tools like seq are more suited to such use. An invalid index is silently ignored resulting in no value being substituted (not an empty string)."

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Выпуск командной оболочки fish 3.0"  +5 +/
Сообщение от Kaffeine (?), 29-Дек-18, 00:45 
> В команде "cd" прекращена поддержка перехода по символическим ссылкам

Это как, вообще? Разработчики <s>не</s>вменяемые?

`cd /usr/src/linux`

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Выпуск командной оболочки fish 3.0"  –3 +/
Сообщение от Омоним (?), 29-Дек-18, 01:10 
И ведь не нашлось никого, кто б указал ему путь истинный. Давно мог бы благодатно башизмами обмазаться и достичь просветления через рач и zsh.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Вы забыли заполнить поле Name (?), 29-Дек-18, 01:12 
> Добавлена опция "--private" для запуска оболочки в приватном режиме

Порнорежим.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (8), 29-Дек-18, 01:34 
юзал когда-то. Но потом надоело, что копируемые из интернета баш-команды нужно было вначале переводить на фиш.

Для неадекватов: нет, я не из тех, кто устанавливает нескучный софт через curl | bash. Речь о командах вроде "установите наш репозиторий пакетов через dnf install http://example.com/$(rpm -E %fedora)" -- и вот тут-то нужно переводить с популярного баша на нескучный скриптовый язык от васяна.

Для еще больших неадекватов: выдерните у себя клавиши Ctrl, C и V, и залейте в гнезда этих клавиш какой-нибудь триоксид серы, ну чтобы прекратить лицемерить и полностью отказаться от концепции копипастинга.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Выпуск командной оболочки fish 3.0"  +3 +/
Сообщение от 0day (?), 29-Дек-18, 01:55 
Это перевод корявый Речь об https://github.com/fish-shell/fish-shell/issues/3350
Переименовывал ранее путь виртуальный. Теперь не будет.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от AnonPlus (?), 29-Дек-18, 01:55 
Насколько я понимаю, элменты и раньше начинались с 1, так что с сарказмом вы промахнулись

Просто раньше молча игнорилось обращение к нулевом элементу, а теперь будет ошибка.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

12. "Выпуск командной оболочки fish 3.0"  +6 +/
Сообщение от Аноним (12), 29-Дек-18, 03:08 
В языках высокого уровня индексы и не должны начинаться с нуля, т.к. там они означают порядковый номер элемента в списке.
В низкоуровнеых, вроде си, индексация начинается с нуля, т.к. она означает не порядковый номер в списке, а смещение в памяти, по которому лежит элемент (что в ЯВУ с автоматическим управлением памятью смысла не имеет).
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

13. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Вы забыли заполнить поле Name (?), 29-Дек-18, 03:15 
Вообще нужно на POSIX shell писать, чтобы было переносимо, особенно для простеньких скриптов установки зависимостей.

Также не понятно, почему не запусить bash и уже в нем указанные команды?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

15. "Выпуск командной оболочки fish 3.0"  –1 +/
Сообщение от Аноним (15), 29-Дек-18, 04:08 
Вот прямо угадали мою мысль. Если по честному, то и bash в целом перегружен.

В целом наверное достаточно было бы просто уметь запускать (exec) процесс,
а то эти возможности предоставляют людям возможность писать кривые .sh сценарии
один только autotools чего стоит.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

16. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (8), 29-Дек-18, 04:27 
> почему не запусить bash и уже в нем указанные команды?

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

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

17. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от vedronim (?), 29-Дек-18, 05:09 
> В языках высокого уровня индексы и не должны начинаться с нуля, т.к.
> там они означают порядковый номер элемента в списке.
> В низкоуровнеых, вроде си, индексация начинается с нуля, т.к. она означает не
> порядковый номер в списке, а смещение в памяти,

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

18. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от trolleybusemail (?), 29-Дек-18, 08:39 
Да и сейчас можно:
int* a = new int[10] - 1;
// code
delete[] a + 1;

PS1. Это не чистая сишечка, а плюсы, но роли не играет (malloc/free вместо new/delete, и готово)
PS2. Строго говоря, по стандарту это UB, но де-факто всегда работает (если только на какой-нибудь суперредкой и супердревней платформе не будет)

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Выпуск командной оболочки fish 3.0"  –1 +/
Сообщение от Росатый (?), 29-Дек-18, 08:48 
И чем это лучше zsh?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от 1 (??), 29-Дек-18, 09:43 
И клавиши Shift и Insert тоже выдёргивать ? O_o
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

21. "Выпуск командной оболочки fish 3.0"  –8 +/
Сообщение от Проходил мимо (?), 29-Дек-18, 10:27 
> В низкоуровнеых, вроде си, индексация начинается с нуля, т.к. она означает не порядковый номер в списке, а смещение в памяти, по которому лежит элемент (что в ЯВУ с автоматическим управлением памятью смысла не имеет).

В Си индекс означает смещение в памяти??????????????
Уважаемый, Аноним, вы написали полный бред. Индекс - это именно индекс. А смещение в памяти будет Размер_элемента * index.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

22. "Выпуск командной оболочки fish 3.0"  +2 +/
Сообщение от Аноним (22), 29-Дек-18, 10:59 
Никакого бреда. Индекс в C означает смещение в памяти. Чему смещение равно - совершенно другой вопрос.
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Выпуск командной оболочки fish 3.0"  +5 +/
Сообщение от Аноним (23), 29-Дек-18, 11:05 
Напомню. Этот тот самый шелл, который считает что
> Configurability is the root of all evil

И поэтому все, что можно настроить в фише - цвета.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от Аноним (24), 29-Дек-18, 11:45 
SCP работает значительно, на порядки быстрее
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

25. "Выпуск командной оболочки fish 3.0"  +2 +/
Сообщение от А. (?), 29-Дек-18, 12:02 
Кажется, вы путаете fish как командную оболочку и fish как протокол передачи файлов через ssh в mc.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

26. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от Аноним (24), 29-Дек-18, 12:08 
Забавно, sh у обоих образузется от shell: Files transferred over shell vs friendly interactive shell
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

27. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от fi (ok), 29-Дек-18, 12:39 
аааа, а то я уже испугался!
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

28. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от fi (ok), 29-Дек-18, 12:47 
Пользуюсь tcsh - никаких проблем с командами для bash из инета
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

29. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от Аноним84701 (ok), 29-Дек-18, 13:40 
> Да и сейчас можно:
> int* a = new int[10] - 1;
> // code
> delete[] a + 1;

"Свой" диапазон индексов скорее о таком:


var somearr: array[-5..10, -10..0] of Byte;
begin
    somearr[10][-5] := 37;
    somearr[-5,-10] := 13;
end;

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

30. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (30), 29-Дек-18, 15:53 
мышку не забудь эпоксидкой залить
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

31. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Урри (?), 29-Дек-18, 17:06 
Щас я взорву твою голову, аноним - вот этот код в С абсолютно и полностью легален:

int x[6];
3[x] = 12;

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

32. "Выпуск командной оболочки fish 3.0"  –1 +/
Сообщение от Аноним (32), 29-Дек-18, 17:38 
Хуже!
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

33. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (33), 29-Дек-18, 21:41 
> Забавно, sh у обоих образузется от shell.

Брат! Не бойся видеть того, чего не видят другие!
Ты только в самом начале пути, но твое сознание уже пробудилось!

Это все не просто так. Доверься силе внутри тебя!
Ведь cp образуется от copy, mv - от move!
И, я знаю, ты чувствовал это но сомневался, mkdir - от make directory!

Если люди не поверят тебе - знай что их сознание еще спит!
Держись, брат, ты не одинок!

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

34. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним84701 (ok), 29-Дек-18, 22:32 
> Щас я взорву твою голову, аноним - вот этот код в С
> абсолютно и полностью легален:
> int x[6];
> 3[x] = 12;

Ну дык:


A postfix expression followed by an expression in square brackets [] is a subscripted
designation of an element of an array object. The definition of the subscript operator []
is that E1[E2] is identical to (*((E1)+(E2))).

хотя выглядит эта "фича" скорее как очередной "привет" из добрых, старых, костыльных^W ламповых дней (т.е. "дырка"^W особенность реализации древних парсеров и т.д., которую уже никто не будет убирать из-за обратной совместимости)

А вообще, хватило бы более классического примера ;)


    int x[6];                                    
    *(x + 3) = 1337;  //особенности арифметики с указателями - работает без всяких "размер_элемента*индекс"
    printf("Hello World %d",x[3]);

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

35. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от Аноним (35), 30-Дек-18, 06:02 
а чем zsh лучше?
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

36. "Выпуск командной оболочки fish 3.0"  +1 +/
Сообщение от Аноним (36), 30-Дек-18, 06:31 
- Ставлю fish
- Набираю команду и вижу шелл делает подсказку автодополнением
- Нажимаю по привычке tab, что  быстро завершить написание слова согласно подсказке
- Курсор отскакивает от половины слова вставляя таб-пробел как при редактировании текстового файла
- Удаляю fish на фиг и забываю навсегда.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Выпуск командной оболочки fish 3.0"  –2 +/
Сообщение от Антонимус (?), 30-Дек-18, 14:43 
Чем fish :-)
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

38. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Аноним (-), 31-Дек-18, 15:46 
Чем, кроме свистоперделок, это лучше es ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

39. "Выпуск командной оболочки fish 3.0"  +/
Сообщение от Monster (?), 01-Янв-19, 11:33 
IMHO: авторам просто скучно и хочется запилить хоть что-нибудь. Но на серьёзное - не хватает тямы. Вот и развлекаются.
Обсуждать это вот - всё равно что спорить о соседском подростке, который сделал молоток с двумя ручками.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру