Представлен (http://www.zsh.org/mla/users//2015/msg00839.html) релиз командной оболочки zsh 5.1 (http://www.zsh.org). Оболочка поддерживает набор команд bourne shell и обладает рядом расширенных функций, направленных на увеличение удобства интерактивной работы в командной строке. В частности, zsh отличается гибкой системой выборки файлов, возможностью редактирования многострочных команд и мощными средствами автоматического дополнения ввода, в том числе с поддержкой автодополнения аргументов для различных популярных команд.
Основные новшества (http://sourceforge.net/p/zsh/code/ci/master/tree/NEWS):
- Изменена нумерация выпусков, вместо трёх цифр (x.y.z) для релизов теперь будет применяться упрощённый формат "x.y", где x - номер значительной ветки, y - номер корректирующего выпуска;
- Поддержка нового синтаксиса назначений переменных после встроенных ключевых слов, таких как "local", "declare", "export", "readonly" и "typeset". Для данных ключевых слов введены зарезервированные наименования и изменён порядок присвоения значений - все перечисляемые после ключевых слов отдельные присвоения теперь трактуются как присвоения, заданные с новой строки. Например, при указании "local scalar=`echo one word` array=(several words)" в локальную переменную scalar будет записан текст "one word", а в массив значения "several" и "words";
- Добавлена защита от атак по подстановке команд в терминал: текст теперь передаётся в форме экранированного набора символов, что требует явного нажатия Enter на клавиатуре для выполнения команды, без возможности инициировать данное действие через спецсимвол перевода строки. Защита реализована через новый режим ZLE, осуществляющий принудительное обрамления в кавычки текста, вставляемого из буфера обмена;- Усовершенствованы средства автодополнения ввода;
- В команду print добавлены опции -x и -X для раскрытия символов табуляции в пробелы;- В "fc" добавлены опции для разделения внутренней и совместной истории;
- Все эмуляции, включая "sh", переведены по умолчанию на использование мультибайтовой кодировки;- Улучшена совместимость встроенной команды getopts с POSIX (в режиме POSIX_BUILTINS);
- Новый параметр setopt APPEND_CREATE для включения POSIX-совместимого поведения NO_CLOBBER;- Для управления откатом изменений добавлен новый параметр UNDO_LIMIT_NO;
- Многочисленные изменения в работе с дочерними процессами и обработке сигналов, внесённые для избежания состояний гонки и взаимных блокировок при использовании файловых дескрипторов и управлении памятью;
- В модуле zsh/system реализована новая встроенная команда sysopen для детального управления режимами файловых дескрипторов.URL: http://www.zsh.org/mla/users//2015/msg00839.html
Новость: http://www.opennet.me/opennews/art.shtml?num=42896
Оно-то да, чем больше, тем лучше. Но совместимость...(((
1. Что есть такого чего нет в bash + дополнения (типа bash-completion)?
2. С какой версией bash данная версия имеет 100% совместимость?
не умеешь ты критиковать.
В bash есть много чего, "чего нет в bash + дополнения". Вопрос - нужно ли это всё. Запускаешь - всё нещадно свистит и пердит. Смотришь на терминал товарища, использующего oh-my-zsh - и того лучше, везде какие-то разные цвета, ветки git, прочая фигня, нещадно тормозящая по нажатию tab.[сообщение отредактировано модератором]
> Вопрос - нужно ли это всё.Мне нужно. Я готов пожертвовать пару сотен миллисекунд на дополнение путей, флагов и т.п., которое работает лучше, чем bash-completion, на отображение текущей ветки в git и т.д. Самое главное - с oh-my-zsh это работает из коробки, никакого шаманства. С тех пор, как перешёл на zsh, любое столкновение с bash вызывает лишь печаль - но не потому, что bash плохой (я же им пользовался все эти годы), а потому что zsh удобнее, а к удобствам привыкаешь.
Тут надо понимать, что дополнения ведут себя также, как и программы. Есть требовательные, есть не очень. Если Вам нужна удобная и быстрая работа в shell, ну так не используйте аддоны, вызывающие тормоза. Тот же oh-my-zsh лучше в этом плане рассматривать как коллекцию расширений, из которых можно выбрать подходящие Вам лично.Я вот не использую его, например. Пока меня вполне устраивает связка zsh + zsh-syntax-highlight + completion + собственные алиасы и переменные окружения. Скажу честно -- без zsh-syntax-highlight мне сильно грустно работать.
А если просто включаете oh-my-zsh, то это всё равно что винду со ZverCD накатывать: куча конфликтов, куча ненужных свистелок...
Короче, мысль такая: ставьте только нужное, и получите хороший shell.
По поводу преимуществ zsh на bash -- я даже ответить затрудняюсь. Сравните хотя бы man-страницы: у zsh она в 5,5 раз больше. А ведь это только базовый функционал. Это мы ещё не говорили об огромном количестве расширений для zsh.
Что касается zsh как скриптового языка, то там более интуитивные правила раскрытия параметров, с массивами работать удобнее, да и вообще складывается у меня впечатление, что новичкам на нём было бы легче писать обвязки, нежели на bash: из-за удобного синтаксиса скрипт просто более интуитивно вычисляется. В то же время прежде, чем программист начнёт писать хороший код на bash, он должен набить множество шишек: сам начал писать на нём нормально лишь после прочтения SICP, когда хотя бы появилось понимание, что как было сделано и зачем.
Это, конечно, крайне субъективно, скорее всего дело вкуса просто, поэтому ни на чём настаивать не возьмусь.
> 1. Что есть такого чего нет в bash + дополнения (типа bash-completion)?Например, включаемая защита от rm * и множество других мелочей, которые вылазят в уставшем виде.
> 2. С какой версией bash данная версия имеет 100% совместимость?
Зачем? Совместимость имеет смысл с POSIX sh. А так различнейшие shell-скрипты нередко исполняю zsh (я в курсе про шебанг), порядок.
> Например, включаемая защита от rm * и множество других мелочей, которые вылазят
> в уставшем виде.alias rm='rm -i' ?
> Зачем? Совместимость имеет смысл с POSIX sh. А так различнейшие
> shell-скрипты нередко исполняю zsh (я в курсе про шебанг), порядок.Ну да если писать А=5
то скорее всего ошибок не будет...)))
> Оно-то да, чем больше, тем лучше. Но совместимость...(((
> 1. Что есть такого чего нет в bash + дополнения (типа bash-completion)?
> 2. С какой версией bash данная версия имеет 100% совместимость?1. Автодополнение в zsh очень и очень крутое. Особенно раскрытие путей, например, из /u/sh/doc/ffmp в /usr/share/doc/ffmpeg.
2. Про это не знаю.
> 1. Автодополнение в zsh очень и очень крутое. Особенно раскрытие путей, например,Наверное единственное чего нет в bash.
Хотя через таб как-то привычнее.
Вопрос не праздный а в связи с совместимостью пользовательского интерфейса.
Ну поставлю я себе zsh. А на работе в силу определенных правил будет везде bash. Я привык к определенным методикам работы, которые повшают мою производительность, а там мало того что их не будет а оно еще и не правильно может отработать, даже с вредом при удачном совпадении. Ну, например, дадите вы
cp 1 /u/sh/doc/ffmp
а там такой файл возьми да и окажется...)))
zsh я думаю предложит варианты а у вас файл затрется.
Так что для локалхоста годно, а глобально надо полная совместимость...
> Хотя через таб как-то привычнее....
> Ну, например, дадите вы
> cp 1 /u/sh/doc/ffmp
> а там такой файл возьми да и окажется...)))Вообще-то zsh преобразует /u/sh/doc/ffmp в /usr/share/doc/ffmpeg только по нажатию TAB, так что если после нажатия ничего не поменялось, значит файл есть. В остальных случаях zsh покажет варианты.
Чего только люди не придумают, лишь бы не использовать mc. :)
в нём есть автодополнение путей по TAB?
> в нём есть автодополнение путей по TAB?Есть. Весьма местами, насколько я зна, - имена команд и пути/файлы. Alt-Tab aka Esc,Tab во многих [файловых] диалогах и ком."строке".
Что только не используют люди, лишь бы не юзать ranger.
1. Статей на эту тему - тьма.
2. С той которая у тебя установлена). У меня скрипты которым нужен bash имеют "#!/usr/bin/env bash" и работать не перестали, при написании на bash чего-то простого в shell-е zsh проблемы отсутствовали.
> 1. Статей на эту тему - тьма.
> 2. С той которая у тебя установлена). У меня скрипты которым нужен
> bash имеют "#!/usr/bin/env bash" и работать не перестали, при написании
> на bash чего-то простого в shell-е zsh проблемы отсутствовали.а совместимость по интерфейсу? вам легко после zsh работать в bash?
Мне при переходе на sh(например в Соларисе) приходится постоянно твердить себе - это не bash...
Очень нужно.
Ибо у него много удобных фишечек и лицензия BSD, а не вирусная GPLv3
> лицензия BSD, а не вирусная GPLv3а какие конкретно приемущества лицензии bsd сделают для тебя удобнее использование этого шелла?
А чего тут непонятного? Возможность не посылать свои патчи в мэйнлайн и продавать видоизмененный продукт, не открывая исходников, конечно же! Это очень распространённый юзкейс: только посмотри на все эти тысячи закрытых клонов zsh, которые нарасхват покупаются несчастными потребителями, томимыми необходимостью использовать GPL-ный bash!
Гениально! Теперь я знаю все преимущества BSD! ヅ Сохранил, чтобы не забыть.
> А чего тут непонятного? Возможность не посылать свои патчи в мэйнлайн и
> продавать видоизмененный продукт, не открывая исходников, конечно же! Это очень распространённый юзкейс: только посмотри на все эти тысячи закрытых клонов zsh(подслеповато щурясь)
не вижу... зрение?
>>только посмотри на все эти тысячи закрытых клонов zsh
> (подслеповато щурясь)
> не вижу... зрение?Прописываю обновление броузера на тему тага "сарказм". Сеня, береги ру^Wглаза!
> а какие конкретно приемущества лицензии bsd сделают для тебя удобнее использование этого шелла?Не сделают, а делают. Благодаря такой лицензии, оно в OS X из коробки.
> Не сделают, а делают. Благодаря такой лицензии, оно в OS X из коробки.Неиспользование из коробки GPL-продуктов в яблооси — недостаток не GPL, а яблооси.
>> Не сделают, а делают. Благодаря такой лицензии, оно в OS X из коробки.
> Неиспользование из коробки GPL-продуктов в яблооси — недостаток не GPL, а яблооси.Там bash умолчательный.
Тогда это тем более не преимущество лицензии BSD.
> Там bash умолчательный.Угу, там пирамида с мумией BASHотамона III.II
Почувствуй разницу> % zsh --version
zsh 5.0.5 (x86_64-apple-darwin14.0)
> % bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.GPLv3 же очень строптивая лицензия...
Строптивая? GPL - это ответ на проприетирастские ухищрения урвать побольше и вставить поглубже, не более.
> GNU bash, version 3.2.57(1)
> GPLv3 же оченьWorks as designed! Друзья проприертарщиков страдают от собственных рассказов о страданиях проприертарщиков. Double win!!
Что тут непонятного копирасты хотят не только лицензионные отчисления но и код нахаляву.
и всё равно fish лучше
cmd.exe forever
> cmd.exe foreverне, там автокомплит не оч, да и божественных фишек powershell нет
Открой для себя clink
> и всё равно fish лучшеЛучше mirbsd korn shell. Меньше фич, плохих и одинаковых!
Бесспорно, для домохозяек fish лучше
> домохозяекты всерьёз считаешь людей, которые хотят удобную среду для работы, домохозяйками?
> и всё равно fish лучшеfish сложно назвать иначе как поделкой. Любой, кто использует шелл для чего-то, кроме запуска screenfetch, это понимает.
использую шелл для много чего, а fish считаю не поделкой, а хорошим, удобным(да ещё и из коробки) шеллом.
Подумываю с год или поболее перетащить altlinux.org/rescue на zsh по умолчанию -- принимаются мнения "за" и "против". Сейчас там обычный bash3 _без_ bash-completion, который способен выдавать неожиданности, например, при дополнении параметров mount(8).
> Подумываю с год или поболее перетащить altlinux.org/rescue на zsh по умолчанию --
> принимаются мнения "за" и "против". Сейчас там обычный bash3 _без_
> bash-completion, который способен выдавать неожиданности, например, при дополнении параметров
> mount(8).Все мои случаи использования zsh сводились к борьбе с еще более неожиданным completion-ом. Если есть возможность его как-то отключать — тогда, может, и есть смысл, хоть у меня и есть впетчатление, что completion — это его основная фича.
> Если есть возможность его как-то отключать — тогда, может, и есть смысл, хоть у меня и есть впетчатление, что completion — это его основная фича.Есть возможность отключать и даже использовать вместо zcompsys, написанного на zsh, «старую» систему compctl (на самом деле можно и совмещать). Что касается фич, то есть и приятные синтаксические расширения (как пример — удобный foreach для однострочников), и мощный zle, и ещё много важных мелочей.
Да решай сам, всёравно у альта больше пользователей нет.
Ну зачем так категорично... Придёт импортозамещение, и сразу куча появится. Свою ОС, как и свои ракеты надо всегда иметь "про запас". Так что ребята хорошее дело делают, потом спасибо скажут им.
> импортозамещение
> Свою ОСТолсто же
Не, всё норм. Они там весь код облазали за время разработки, и явных троянских коней стопудово нет. Так что тут своя - в смысле если и будет стучать - то только своим органам, а не фиг пойми кому. Есть ещё МСВС, или как там его... Кстати, что мешает Альту получить допуск на работу с гостайной? Так была секурная ОС, можно было бы ставить на важные серваки. Ну и что, что отстает от лубунты, зато надежная ;-)
если был бы адрес этого rescue, который я мог бы вбить в консоль ipxe, типаdhcp
chain http://rcd.altlinux.orgто и я бы использовал, когда срочно надо :) при вменяемых размерах
> Сейчас там обычный bash3 _без_
> bash-completion, который способен выдавать неожиданности, например, при дополнении параметров mount(8).Странно. Сколько пользуюсь bash-completion, ни разу не наблюдал таких вещей. Возможно, эта проблема относится только к altlinux, Михаил?
Не знаю, как mount, а с дополнением параметров mplayer у меня проблемы были: почему-то автодополнение думает, что медиафайлом может быть только файл с одним из заранее известных расширений, и отказывается дополнять файл, заканчивающийся на .mp4a или .weba, к примеру, не говоря уже о файлах без расширений вовсе.
Лично моё мнение: Rescue должен иметь максимально предсказуемое поведение.
Rescue всё-таки...
> Подумываю с год или поболее перетащить altlinux.org/rescue на zsh по умолчанию --
> принимаются мнения "за" и "против". Сейчас там обычный bash3 _без_
> bash-completion, который способен выдавать неожиданности, например, при дополнении параметров
> mount(8).Против.
> Подумываю с год или поболее перетащить altlinux.org/rescue на zsh по умолчанию --
> принимаются мнения "за" и "против". Сейчас там обычный bash3 _без_
> bash-completion, который способен выдавать неожиданности, например, при дополнении параметров
> mount(8).A почему v3?! Как бы там проблем всяких есть?.. ;)
Сам я альт никогда не использовал, поэтому не знаю его целевой аудитории, но лично для меня zsh в SRCD раздражает порой... Думаю, что zsh все-таки лучше для новичков и/или непрофессионалов... ИМХО.
BTW: Только что спросил коллегу, - он того же мнения, так что -2 к zsh! :)
Использую zsh.. хороший шел, но как же он меня иногда батхертит.
Я НЕПОНИМАЮ как можно было так сделать чтобы он по табуляции пытался в домашние диры юзеров долбиться.
Например, хочу попасть в папку rino в текущей дире:
~]>cd r
rabbitmq redis rino/ riak rootРаз в год пытаюсь от этого избавиться, трачу 1-2 часа, лет 8 уже и пока без результата.
И ОТ ЭТОГО ТАК БОМБИТ!"!!
> Раз в год пытаюсь от этого избавиться, трачу 1-2 часа, лет 8
> уже и пока без результата.
> И ОТ ЭТОГО ТАК БОМБИТ!"!!Держи, братец
echo 'unsetopt cdablevars' >> ~/.zshrc
:D
cd ./r
> Новый параметр setopt APPEND_CREATEОдним из первых шагов, сделавших zsh для меня понятным, стало чёткое понимание того, что есть опция, а что параметр (в bash то же самое, но можно не вникать). Ну так вот, это опция.
надо было вовсе убрать минорный номер, тогда инвесторы потянулись бы
UDP научилось?
Оно перестало тормозить при автокомплите в git-репах? А автодополнение для команды scp в примонтированной NFS шаре отрабатывает за приемлемое время? Приходилось делать ls <файл>, <UP>, заменить ls на scp.