Видео ролики бесплатно онлайн

Смотреть 365 видео

Официальный сайт ysaa 24/7/365

Смотреть видео бесплатно

WeLinux.ru

07.06.09 15:22Minoru

Я рекомендую.ZSH: последний шелл, который Вам когда-либо понадобится!

Чуть более месяца назад muhas рекомендомал welinux'у попробовать Z-Shell. Я попробовал, и мне понравился этот шелл. С тех пор использую только его, а в последнее время увлёкся правкой конфига — написал пару функций, добавил отображение текущей работающей программы в заголовок окна… А недавно случайно наткнулся пусть и на довольно старый, но интересный и содержательный пост о ZSH. Его перевод я и представляю вниманию честной публики.

Оригинал: zsh: The last shell you’ll ever need!

Автор: John Rant

Переводчик: Minoru

Введение

На прошлой неделе общеизвестный Mako вдохновил меня на попытку использовать zsh. Я начал с .zshrc, и вот, неделю спустя, я уже рассказываю о нём всем и каждому. Но давайте-ка немного вернёмся в прошлое.
Сначала основы: я надеюсь, большинство из вас понимают, что такое шелл. Шелл является интерфейсом между пользователем и операционной системой. Для практических нужд достаточно понимания на уровне «штука, в которой я набираю команды». Существует огромное множество шеллов; большинство *nix'ов идут с различными умолчальными оболочками. Возможно, самым популярным шеллом на сегодняшний день является GNU Bourne Again Shell, более известный как bash. Ещё одна большая семья шеллов известна как C-шеллы (csh, tcsh) — они названы так в честь их синтаксиса, похожего на C.

Ладно, что такое zsh и почему я должен жаждать его больше, чем мой текущий шелл?

Шелл, о котором я сегодня повествую, называется Z-shell, или zsh. Zsh является развитием шелла Корна (ksh), который является развитием bash. (АПДЕЙТ: Предыдущее утверждение, как было замечено многими читателями, является неправильным. ksh существовал до bash'а, то есть bash был вдохновлён ksh'ем. Я просто прошёлся по спискам возможностей и понял, что современный ksh значительно более могуч, чем bash, тем самым доказывая именно такие отношения. Я оставлю это утверждение, потому что его изменение может «плохо выглядеть»). Это один из самых мощных шеллов, которого Вы только можете захотеть, я даже пойду дальше — я скажу, что каждый может получить что-то от использования zsh. Особенно если Вы уже привыкли к bash или дефолтному шеллу вашей ОСи, я настоятельно рекомендую Вам попробовать zsh! Что мне в нём нравится?
  1. Ведёт себя поразительно схоже с bash. Вы можете использовать zsh точно так же, как Вы использовали bash и не учить одной вещи, и даже это будет улучшением! Совместимость со знакомыми шеллами очень важна. Переход с bash на zsh не будет похож на переход с GEdit на vim. Вы тотчас окажетесь дома, где все Ваши bash'евские сокращения и команды будут работать, как и ожидалось, но Вы также получите доступ к преимуществам zsh. Если Вы — поклонник шелл-скриптинга, Вы будете рады узнать, что синтаксис скриптов zsh также по большей части обратно совместим с bash.
  2. Исправление опечаток. Как часто Вы набирали что-то вроде aptg-et? Если я делаю это в zsh, я получаю сообщение, спрашивающее: «zsh: correct 'aptg-et' to 'apt-get' [nyae]?». Магия, не правда ли? Это исправление также применяется к любым параметрам, путям и именам файлов, которые Вы набираете.
  3. Феноменально умная система дополнения по TAB. Погодите… Я слышу, Вы что-то говорите. “Ты идиот, bash тоже может это! Тебе всего лишь нужно раскомментировать/проинсталлировать bash-completion.” Нет, это не то, что я имею в виду. Может ли Ваш bash:
    — Показать предположения при помощи меню, по которому можно «ходить» «стрелочками»?
    — Дополнять команду kill при помощи таблицы всех Ваших процессов?
    — Дополнять aptitude или ls при помощи меню параметров с их краткими описаниями?
    — Помимо прямых совпадений, показывать также близкие совпадения в отдельной секции?
    — При дополнении показывать подсказки практически мгновенно даже для сложных команд, без ужасных bash'евских задержек вроде «Ох, ох, мне нужно набрать ещё пару символов!»?
    Если Вы можете ответить «да» на один из этих вопросов, пожалуйста, дайте мне знать! Потому что за три года использования bash'а мой bash точно не мог этого!
  4. Обмен историей между сессиями. Несколько одновременно запущенных сессий zsh могут обмениваться историей друг с другом вместо того, чтобы мешать друг другу. Одной из наиболее разочаровывающих вещей для пользователя bash явялется набор длинной команды и последующий её поиск при помощи ctrl+r лишь для того, чтобы найти пустоту.
  5. Встроенный пейджер.Я ленив. Думаю, Вы тоже. zsh поставляется с пейджером, встроенным прямо в шелл. Это значит, что Вы можете набрать что-то вроде <README и это будет эквивалентно less README или cat README | less
  6. Более мощный глоббинг. Глоббинг — это термин для «шаблонов на стероидах» — Ваших выражений вроде «*.c», «*Office*S03E[0-2][0-9]*.avi» и так далее. Как показывает «Введение в zsh», zsh предоставляет Вам значительно более мощные выражения. Вы будете очень редко нуждаться в использовании find или поисковой тулзой с GUI.
  7. Более терпимый язык скриптов. Если Вы не шелл-скриптер, Вы, наверное, не поймёте, о чём я говорю, но для вас, шелл-скриптеры, я скажу вот что: скажите «пока» всем эти bash'евским извращениям. Сколько раз Вы сталкивались с ошибкой в выражении вроде [ $FOO = $BAR ] из-за того, что FOO или BAR были пусты, и Вам приходилось прибегать к глупым уловкам вроде [ x$FOO = x$BAR ]? В общем, zsh спасёт Вас от этого при помощи выражений с двойными квадратными скобками. [[ $FOO = $BAR ]] всегда будет работать, а [[ $FOO && $BAR ]] выглядит значительно более естественно, чем [ $FOO -a $BAR ]. Я не могу показать Вам и сотой части мощи zsh в области программирования, но я призываю Вас дать ему шанс!
  8. Многое другое. Не забывайте, я тоже начинающий. Я только сбил верхушку айсберга. Консультируйтесь с прекрасной документацией zsh (я дам ссылку на неё чуть позже), чтобы узнать о zsh всё, что хотите.


Ладно, Вы меня убедили. Как мне начать использовать zsh?

Отлично! Рад, что Вы решили дать ему шанс. К сожалению, zsh не станет делать всего того, что я описал выше, сразу же после установки. Он даже немного безвкусен в дефолтном состоянии. Два года назад я, услышав кое-что о zsh, поставил его и попробовал «зажечь»; первой мыслью было «Что за говнянистая вещь? Тут нету даже дополнения по tab! Я возвращаюсь на bash.» Для того, чтобы заставить zsh делать магические вещи, Вам следует отконфигурировать его при помощи файла с именем .zshrc. Это аналог bash'евского .bashrc или .cshrc для csh (который, кстати, не является городом в Боснии). Большинство людей добывают этот файл, погуглив «zshrc» и используя чужой конфиг к качестве примера. Ну, некоторые из штуковин, используемых в моих zshrc, я тоже нагуглил или взял из конфига Mako, так что я ни в коем случае не претендую на права на эти решения. Ладно, начнём:
  1. Установите zsh с помощью средств своего дистрибутива. По возможности Вам следует использовать пакетный менеджер (yum, apt-get, Synaptic, Portage, fink — Вам видне), потому что zsh с высокой вероятностью уже присутствует в Вашем дистрибутиве в виде пакета. Вообще-то пакетов два — zsh и zsh-devel или zsh-beta. Бетапакет новее и содержит больше возможностей и разработок, но также может содержать баги. Лично я использую беты, там пока что есть проблемы, но выбор зависит только от Вас. Оба варианта работают отлично.
  2. Найдите zshrc. Вы можете погуглить и составить свой, или начать с моих:
    — Linux: Это стандартный zshrc, который я использую на моих Linux машинах. Я юзаю Ubuntu, но я не помещал в конфиг никаких дистроспецифичных вещей.
    — Mac OS X: Почти идентичен варианту для Linux, исключая фиксы режима кнопок delete, Page Up, Page Down, Home и End, а также специальную цветовую схему — чёрный текст на белом фоне — для приглашения командной строки (лично я считаю, что она хорошо смотрится на моём макбуке)
    Этот файл должен быть сохранён в ~/.zshrc; то есть это файл с именем «.zshrc» в Вашей домашней директории.
  3. Наслаждайтесь, читайте документацию, настраивайте так, как Вашей душе угодно! Пожалуйста, сходите на домашнюю страницу zsh и почитайте тамошние доки о советах и уловках. Я новичок с zsh — я не могу научить Вас многому, потому что я сам пока что только учусь.

Дополнительные источники информации

Если Вам понравилась идея, но у Вас вопросов ещё больше, чем было, пожалуйста, загляните на эти чудесные сайты:
  • Домашняя страница zsh. Тут Вы сможете найти ссылки на другие замечательные ресурсы.
  • Введение в zsh. Действительно быстрочитающаяся вещь, которая даст Вам хороший обзор возможностей zsh.
  • Руководство по zsh. Более крупное, но почти всеобъемлющее руководство по zsh с точки зрения пользователя.
  • Мануал по zsh. Действительно огромный мануал, который охватывает всё, что Вы захотите знать о zsh. Особенно если Вы шелл-скриптер — Вам нужен именно этот!
  • Шпаргалка по zsh. Для ленивых и нетерпеливых! (однако она верхней стороной вниз… сожалею, но это не моя ошибка!)
  • zsh FAQ. Отлично подходит для вопросов вроде «Хм, а почему zsh делает А и Б не так, как мой бывший шелл?»
  • zsh Wiki. Документация, советы и уловки, zshrc, расширения и аддоны, поддерживаемые и развиваемые сообществом.
P.S. Избегайте соблазна провести всю следующую неделю взаперти, играясь с zshrc. Это на самом деле вредно для здоровья… (Кстати, может ли имя хоста быть оформлено цветом с помощью $PR_BLUE или $PR_GREEN в приглашении командной строки? Я до сих пор созерцаю это в моём zshrc!)

Примечания переводчика: спасибо sqrrl за вычитку!
+29
Username07.06.09 15:27# +1
ну наконец-то. Стопроцентный зачот, эпик вин. Хоть узнал о фичах его, а то все zsh, zsh.. :)
Minoru07.06.09 15:36# +0
Есть ещё хорошая заметка про ZSH в Debian Package of the Day: zsh: a REALLY nice alternative for bash, или по-русски: ZSH: действительно хорошая замена BASH. Правда, и критика на debaday.debian.org, и Алексей Бешéнов (переводчик) отметили, что почти все описанные возможности есть и в bash.
muhas07.06.09 15:49# +2
надр было попробывать с чьим нить конфигом, и тода бы забил на чтение сравнений, и юзал бы zsh подправив конфиг под себя :)
fun08.06.09 00:09# +0
Это да, я до сих пор Вашим пользуюсь)
sqrrl07.06.09 17:54# +0
+1
Давно ждал подобную статью.
l1feh4ck3r07.06.09 15:27# +-3
А у меня zsh тормозит при автодополнении, поэтому я на него забил.
Minoru07.06.09 15:38# +0
У меня автодополнение работает так же быстро, как и в bash — ну, разве что параметры медленнее дополняются.
Minoru07.06.09 15:39# +0
Комментарий выше должен был быть прикреплён к комментарию l1feh4ck3r
cheerfulboy16.06.09 19:52# +0
хм, странно.. у меня в gentoo автодополнение работает в bash ну оооочень медленно.
drujebober07.06.09 15:52# +2
Интересно было почитать, спасибо, когда то даже сам написал на хабре про него немного.
exelens07.06.09 15:53# +0
— Дополнять команду kill при помощи таблицы всех Ваших процессов?

кривая ссылка.
Я бы и сам пофиксил =) да не знаю куда оно должно вести
Minoru07.06.09 16:00# +0
Да, действительно. Спасибо, сейчас исправлю!
nymiiin07.06.09 16:03# +1
Спасибо за пост! Продолжайте писать о zsh, очень интересно!
Minoru07.06.09 16:20# +0
Дальше можно писать разве что о своих наработках в улучшении юзабилити — то есть алиасы, функции, какие опции для чего были выставлены. Хотя это можно свести и до простого обмена конфигами — к примеру, поюзай мой (не забудь .dir_colors!) или muhas'а.
nymiiin07.06.09 16:22# +0
С удовольствием почитаю о функциях :)
Minoru07.06.09 16:34# +0
Ну я сам-то с ними ещё не очень знаком, да и примеров пока что недостаточно для статьи… Если muhas или ещё кто-то поопытней не опередит — напишу ;)
drujebober07.06.09 16:34# +0
можно писать переводы хотя бы той же официальной документации, например про zstyle, глоббинг, zle и др.
Minoru07.06.09 16:45# +0
Идея, конечно, заманчива с точки зрения читателя — но не сильно ли помпезна для переводчика?
booley07.06.09 16:04# +-1
Было +4, плюсанул - стало +7. о_О
Хорошый пост, будем пробовать зш :)
Minoru07.06.09 16:23# +2
Очевидно, между моментом загрузки страницы и тем моментом, когда ты плюсанул, ещё двое тоже плюсанули. Когда ты плюсуешь, на сервер отсылается твой голос, а тебе возвращается количество текущих. Вот и выходят такие вот «скачки».
hello07.06.09 17:34# +0
— Показать предположения при помощи меню, по которому можно «ходить» «стрелочками»?
— Дополнять команду kill при помощи таблицы всех Ваших процессов?
— Дополнять aptitude или ls при помощи меню параметров с их краткими описаниями?
— Помимо прямых совпадений, показывать также близкие совпадения в отдельной секции?
— При дополнении показывать подсказки практически мгновенно даже для сложных команд, без ужасных bash'евскиз задержек вроде «Ох, ох, мне нужно набрать ещё пару символов!»?


1. -
2. bash_completion
3. bash_completion
4. -
5. не замечал такого за башем
Minoru07.06.09 18:01# +0
Я с bash_completion никогда не играл — может быть, оно и позволяет это сделать…
По поводу пятого пункта — я и сам не понял, что автор хотел сказать. Вроде сравнил — bash и zsh себя одинаково ведут.
assaron07.06.09 19:48# +1
а ведь sqqrl был прав, когда говорил, что слова «ихнего» нет в русском языке
kampfusbeke08.06.09 09:34# +3
если скрипты писать не только для себя, лучше делать это под башем ;) а то, хорошо, конечно, что зш более "терпим" к синтаксису, но у большинства людей все-таки баш и там эти скрипты не заработают.
а за статью спасибо :)
lwilis08.06.09 11:20# +3
если уж совсем по-хорошему, то скрипты пишут под sh воще. Есть же друзья-БСДэшники.
Minoru08.06.09 13:09# +3
Это бесспорно — всё шелл-скрипты следует писать под sh. Если надо чего посложней — Perl/Python вам в руки. А вот юзать особенности конкретного шелла — это, имхо, плохо, потому как скрипт этот будет работать только в этом шелле, что нехорошо… А вдруг у меня zsh вообще нету, как я буду такие скрипты исполнять?

Top блогов (все)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Top пользователей (все)
Топ пользователей Топ блогов
В сети: KblCb, SMiX

Новенькие: SWJ, DuskMan, max7, discip1e, Stil
welinux.ru
Идея сайта exelens; Движок 0byte, разработчик nvbn; Дизайн - Astramak

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн