Oh my zsh установка

Oh my zsh установка

Небольшой обзор и инструкция по установке оболочки для терминала Zsh и набора модификаций для него, чтобы сделать работу в терминале приятной и информативной.

Хочу поделиться очень отличным шелом, а по большей части, фреймворком созданным для него, который превратит вашу консоль в очень информативный и продуктивный инструмент.

Данный материал пригодет только для пользователей unix-подобных систем, а именно Linux и MacOS. На MacOS не знаю что да как, но судя по всему установка и настройка совершенно не отличаются друг от друга. Соответственно его можно ставить и на веб-сервера.

Что это и зачем оно

Немного введу в курс дела, чтобы вы понимали что это такое и что оно даст. Во-первых, потребуется установить новую оболочку для терминала Zsh и переключиться на неё (кто не в курсе, они живут рядом с друг-другом и не затирают аналоги, так что можно всегда вернуться обратно, например на bash в ubuntu, + можно каждому юзеру выбирать свою, так что это совершенно безопасно). Во-вторых, мы поставим фреймворк для Zsh, который позволяет писать различные плагины, темы и т.д. для данной оболочки, что, собственно, и делает её такой удобой, так как люди написали кучу годноты.

Я не могу вам описать всех возможностей, ибо некоторые из них не так заметны и не сразу бросаются в глаза. Например, при указании пути до файлапапки Tab в Zsh, делает то же самое что и в bash, но куда круче, а я заметил это спустя неделю, так как не обращал внимания. Он мало того что может учитывать регистры папок и поправлять вас, так и список папок также можно визуально перебирать табом, что просто очень удобно и ускоряет работу.

Я вообще изначально ставил данный шелл и фреймворк только ради Git плагина, который показывает (если вы находитесь в папках с репозиторием), актуально ли текущее состояние репозитория, в какой ветке находимся, имеются ли новые изменения в файлах, есть ли коммиты или изменения. В общем всю необходимую информацию. Не нужно проверять ветку через git branch -v , проверять есть ли изменения через git status и т.д.

У него есть куча интеграций с различными программами и системными утилитами, которые позволяют сделать работу с терминалом намного, намного приятнее. Ведь, особенно, с Drupal 8, работать с ним нужно все чаще и больше.

Установка Zsh и Oh My Zsh

Первым делом нужно установить оболочку Zsh, для этого в Ubuntu необходимо просто запросить данный пакет, так как он находится в официальных репозиториях:

Далее нам необходимо поставить фреймворк Oh My Zsh. Разработчики предлагают два варианта установки, по сути они одинаковые, вам просто предоставляется выбор как вытянуть скрипт установщика, wget или curl , это лишь важно в тех случаях, когда на системе нет одного из них (частенько можно встретить отсутствие curl), и вы не хотите ставить пакет ради этого, или нет прав. Я также пишу вам два варианта, а какой использовать решайте сами:

После данной установки, у вас запросят пароль чтобы переключить шел для текущего пользователя на Zsh. Вводим, и всё готово!

Из коробки он хоть уже и дает больше информации, как по мне, он выглядит хуже оригинального. Для этого в OMZ есть поддержка тем и плагинов, которые могут в корне менять оболочку.

Где и что находится

Данный раздел я не мог упустить так как он может очень сильно помочь в дальнейшем. Фреймворк Oh My Zsh находится в папке

/.oh-my-zsh — там, в свою очередь, находятся все файлы фреймворка. А сама папка ничто иное как репозиторий Oh My Zsh. Но удалять папку просто так не стоит, там для этого есть специальный скрипт, ниже напишу как.

Все настройки для Oh My Zsh находятся в файле

/.zshrc . О нем подробнее будет ниже.

Установка плагинов

Начнем с установки нужных нам плагинов. Из коробки там стоит только git, больше никакие плагины не активированы. Список всех додступных плагинов поставляемых с фреймворком можно посмотреть на странице wiki, с описанием для чего они используются.

Например я хочу поставить себе следующие плагины:

  • npm — добавлят поддержку автодополнения к команде npm
  • vagrant — так как я часто пользуюсь vagrant из-за Drupal VM, то мне он тоже не помешает. Также как и npm добавляет поддержку автодополнения. Там же есть и docker.
  • composer — в 8-ке очень активно использую composer, а данный плагин опять же, добавляет автодополнение, и помимо этого различные полезные синонимы команд. Например cu = composer update .
  • sudo — частенько бывает и такое, что вбиваешь или копируешь команду из интернета, но для неё требуются права супер-пользователя. Постоянно переводить курсор и дописывать муторно, а данный плагин позволяет просто нажать два раза Esc , и он сам добавит sudo в начало команды.
  • web-search — а иногда случается ситуация, что роешься в консоли и забыл какую-то команду, нужно гуглануть, и чтобы не переключаться на браузер, не кликать на строку поиска, данный плагин позволяет написать google drupal 8 composer , и в браузере по умолчанию сразу откроются результаты.

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

Для того чтобы включить данные плагины (они уже есть в комплекте), достаточно отредактировать файл

/.zshrc . Для этого, в ubuntu, достаточно написать nano

/.zshrc , что вам удобнее. Открываем данный файл на редактирование и ищем строку plugins=(git) и добавляем туда все нужные нам плагины, учитывая список выше, вышло следующее: plugins=(git npm vagrant composer sudo web-search) . После изменения данного файла, всегда необходимо прописывать source

/.zshrc , иначе изменения вступят в силу только после перезагрузки.

После этого можете тестировать работу.

Установка тем оформления

Из коробки оформление Zsh кому-то может и приглянуться, но мне оно не зашло. Называется она robbyrussell . Но есть куча других тем, по ссылке полный список тем которые идут в комплекте Oh My Zsh.

Читайте также:  Penohome подложка под обои отзывы

Я покажу как включать темы на примере оформления agnoster, так как оно больше всего мне по душе и иногда также требует дополнительных действий для корректной работы.

Для включеня данной темы нам опять, достаточно открыть

/.zshrc файли найти строку ZSH_THEME="robbyrussell" и заменить стандартную тему на нужную, в моем случае agnoster , итого получается ZSH_THEME="agnoster" . Не забываем про source

/.zshrc . И всё уже работает!

Если у вас вместо иконок Git или нету "уголков" в строке навигации, то вам нужно поставить спец. шрифты с данными иконками. Множество тем требует установки данных шрифтов, они никак не помешают, но будет работать как нужно. Если всё как и на скринах — ставить не нужно, если же нет, то ниже инструкция для вас.

Этого уже будет достаточно, можно работать. Но некоторые моменты я ещё затрону.

Настройки

Я их не правлю, но выписал с обьяснением чтобы было проще ориентироваться. Напоминаю что все они в

/.zshrc . Если настройка закомментирована, то вы можете расскоментировать её удалив # , то что указано в значении которое закомментировано — является противоположным значению по умолчанию.

  • CASE_SENSITIVE="true" — чуствительность к регистру. Как я указал в начале статьи, он сам может исправлять регистр если видит что в текущем ничего не найдено. Если это мешает, установив данный параметр в true, поведение будет привычное bash.
  • HYPHEN_INSENSITIVE="true" — включает автоматическую замену между "_" и "-". Аналогично параметру выше, но касается только дефиса и подчеркивания.
  • DISABLE_AUTO_UPDATE="true" — позволяет отключить автоматическое обновления Oh My Zsh.
  • export UPDATE_ZSH_DAYS=13 — задает переодично проверки обновлений.
  • DISABLE_LS_COLORS="true" — позволяте отключить цветовую палитру при выводе команды ls .
  • DISABLE_AUTO_TITLE="true" — отключение автоматического заголовка терминала.
  • ENABLE_CORRECTION="true" — включает корректировку команд. Например, вводя compozer он выдаст запрос: correct ‘compozer’ to ‘composer’? .
  • COMPLETION_WAITING_DOTS="true" — включает точки ожидания ввода аргументов. Например введя composer и нажав Tab , он будет перебирать доступные команды (из-за одноименного плагина), а если ввести java и нажать таб, у него нет вариантов автодополнения (они будут появляться по мере их успешнного ввода в терминале и кэшироваться) он будет отображать красные точки для обязательного ввода которые можно отменить только Ctrl + C .
  • DISABLE_UNTRACKED_FILES_DIRTY="true" — отключает пометку неиспользуемых файлов в пределе Git репозитория как "гразных", что увеличивает скорость скана для git. Не могу сказать точнее что это и как это работает, но это напрямую связанно с git вообще, а не только плагином.
  • HIST_STAMPS="mm/dd/yyyy" — позволяет менять формат даты для команды history .
  • ZSH_CUSTOM=/path/to/new-custom-folder — позволяет добавить дополнительный путь до папки где будут храниться кастомные плагины и темы. По дефолту

/.oh-my-zsh/custom , она также будет функционаривать, т.е. параметр не перезатерающийся.

Это все настройки Oh My Zsh, ниже по файлу вы найдете различные переменные и примеры использования.

Фиксим проблему с PATH

В Linux (не знаю как в MacOS), и в текущей версии я такой проблемы не словил, есть или можеть быть проблема что вы вбиваете команду в Zsh, а он говорит её нет. И это нормальное поведение, ведь в момент установки у вас был другой шелл, и возможно путь до бинарника указан в его индивидуальных настройках. Чтобы это исправить, достаточно указать путь до папки с бинарником(ами) в PATH переменную системы. Но bash’овский вариант export PATH=/usr/local/bin:$PATH прокатит до перезагрузки.

Вариант первый, это в файле конфига

/.zshrc раскомментировать соответсвующую строку в самом начале и добавить нужные пути, либо добавить их прямо из терминала:

Удаляем Oh My Zsh

Если вам потребуется полностью удалить Oh My Zsh и сам шелл с системы, то это делается достаточно просто:

Содержание статьи

Эта статья не обучит тебя, как пользоваться консолью, как объединять команды в пайпы и перенаправлять ввод-вывод. Она не о том, как писать скрипты или функции. Из нее ты не узнаешь, чем отличается bash от tcsh. Ее задача — показать тебе, как использовать консоль на всю катушку, добавить +50 к скорости ввода команд и +100 к эффективности. Поэтому новичкам стоит начать с базовых руководств или хотя бы изучить linux cheat sheet.

А мы, недолго думая, перейдем к делу.

Мигрируем на ZSH

Первое, что стоит сделать перед началом прокачки скиллов, — это избавиться от bash. Не потому, что он плохой или устаревший, а потому, что существует ZSH. Он неиллюзорно повысит твою продуктивность.

ZSH — очень сложный и комплексный командный интерпретатор. Полное руководство ZSH насчитывает около 800 страниц, а абсолютно все его функции, наверное, не знает никто. Но этого ни от кого и не требуют. На свете уже несколько лет существует проект oh-my-zsh, где пользователи создают набор скриптов, с помощью которых можно твикать и настраивать ZSH быстро и легко.

Чтобы получить стандартный набор твиков и настроек, включая мощный механизм автодополнения, информативное приглашение к вводу команды, настройки, повышающие удобство работы с ZSH, достаточно просто установить oh-my-zsh. Далее его можно обвешать плагинами для большего удобства работы с разными приложениями и поменять тему приглашения на любую из десятков, созданных пользователями.

Итак, для начала устанавливаем ZSH:

А затем скачиваем и устанавливаем oh-my-zsh:

Скрипт установки клонирует git-репозиторий в каталог /home/username/.oh-my-zsh , добавит необходимые правки для вызова нужных скриптов в конфиг /home/username/.zshrc и запустит ZSH.

Устанавливаем oh-my-zsh

Xakep #248. Checkm8

Теперь необходимо сделать ZSH шеллом по умолчанию:

И перелогиниться, чтобы эмулятор терминала использовал ZSH в качестве дефолтового шелла. В качестве опционального шага ты можешь изменить тему. В комплект oh-my-zsh входит огромное количество тем, ознакомиться с которыми можно на wiki-странице. Чтобы выбрать новую тему, исправь значение переменной ZSH_THEME в файле

/.zshrc. Выберем, например, тему agnoster:

Тема agnoster

Перемещаемся по каталогам быстро

Одна из главных проблем консоли состоит в том, что ее неудобно использовать для перемещения по каталогам. Особенно если вложенных каталогов много, они имеют длинные имена, а еще хуже — похожие имена. В этом случае система автодополнения с помощью кнопки Tab помогает плохо и все, что остается, — это печатать имена каталогов руками.

Читайте также:  Be quiet dark power pro 11 650w

ZSH упрощает навигацию. Во-первых, он умеет исправлять регистр букв, поэтому ты можешь начать печатать нечто вроде

Затем нажать Tab и получить это:

Во-вторых, система автодополнения имен каталогов ZSH намного развитее своего аналога из bash. Если ZSH обнаружит, что с введенных тобой символов начинаются имена сразу нескольких каталогов, он не будет пищать, а затем выводить список каталогов, заставляя тебя уточнять запрос, а сразу выведет список и позволит выбрать нужный каталог с помощью Tab или стрелок.

Выбираем каталог

В-третьих, автодополнение работает не только для начала имени каталога/файла, но и для любой его части. Чтобы перейти в каталог

/Downloads, ты можешь набрать load и нажать Tab.

Наконец, в-четвертых, ZSH умеет дополнять имена каталогов по всему пути, а не только в последней его части. Это значит, что ты можешь напечатать нечто вроде этого:

Затем нажать Tab и получить это:

Более того, тебе совсем не обязательно печатать даже первые буквы имен каталогов. ZSH и bash умеют находить нужные каталоги самостоятельно, если они перечислены в переменной CDPATH. Добавь, например, следующую строку в

Теперь, чтобы открыть каталог

/Dropbox/Books, можно использовать такую команду:

ZSH проверит, есть ли каталог Books в /var/www или /home/имя_юзера/Dropbox, и переместит тебя в него, если он существует.

Есть и гораздо более мощное средство для перемещения между каталогами. Это утилита fasd (произносится как fast — быстрый). Она запоминает все каталоги (и просто пути к файлам), которые ты использовал, и позволяет перемещаться между ними, указав лишь часть пути (даже несколько букв).

Работает это так. Допустим, ранее ты переходил в каталог

/src/projects/apps/myCoolApp и теперь, спустя часы или даже дни, хочешь в него вернуться. Все, что тебе необходимо сделать, — это выполнить такую команду:

Требование одно: указанный тобой набор символов должен быть уникальным среди всех путей, которые запомнил fasd. Кроме z, fasd поддерживает и другие шорткаты: a — показывает все сохраненные пути, zz — позволяет перейти в каталог, используя интерактивное меню (если введенный набор символов встречается в нескольких путях), v — открывает файл в редакторе Vim.

Утилита fasd доступна для Debian/Ubuntu, Arch Linux через AUR и для macOS через brew. Установить в Ubuntu можно так:

Далее необходимо активировать плагин fasd в

Peco — еще один инструмент, способный сильно облегчить навигацию, а также поиск. Это небольшая утилита, которая принимает на вход список строк и выводит на экран псевдографическое меню, с помощью которого можно выбрать или найти нужную строку. Далее peco отдает эту строку на выход и завершает свою работу (по сути, это консольный аналог dmenu).

Peco можно использовать для навигации и поиска в любых текстовых строках, включая пути. Например, если ты запустишь следующую команду и выберешь каталог, peco напечатает его имя в терминале:

Не слишком удобно и полезно. Однако, немного усложнив пример, ты получишь интерактивный cd:

Польза появилась, удобство пострадало. Поэтому создадим для этой команды короткий и простой псевдоним. Для этого добавим следующую строку в

Теперь команда cdi будет запускать наш интерактивный cd.

Кстати, о самом cd. Запомни два простых правила:

  • команда cd без аргументов отправит тебя в домашний каталог;
  • команда cd — вернет в предыдущий каталог.

Используем автодополнение на полную катушку

Система автодополнения ZSH интересна не только своими интеллектуальными функциями, но и тем, что она работает не с одними именами каталогов и файлов. ZSH умеет дополнять флаги и опции многих утилит и выводить удобную справку по ним, умеет дополнять названия пакетов apt-get, yum, pacman и других пакетных менеджеров, дополняет имена хостов при подключении по SSH. Если набрать kill и нажать кнопку Tab, ZSH выведет список процессов. После второго нажатия Tab список станет интерактивным, и ты сможешь выбрать процесс, который следует умертвить.

Кроме встроенных правил автодополнения, on-my-zsh имеет множество плагинов с правилами автодополнения для многих утилит и приложений.

Kill Tab Tab

Работаем с историей команд

Любой современный командный интерпретатор, будь то ZSH или bash, сохраняет историю введенных команд. ZSH хранит историю в файле /home/username/.zsh_history . При необходимости его можно погрепать ( grep ls

/.zsh_history ), чтобы найти нужную команду. Но делать это совсем не обязательно, ведь командный интерпретатор уже имеет в своем арсенале набор средств для работы с историей.

Например, следующая команда вставит в строку ввода предыдущую команду:

Ее особенно удобно использовать, если забыл указать sudo перед командой, требующей права root:

Можно взять из истории только аргумент команды. Например:

А так можно вставить в строку ввода последнюю команду, начинающуюся с указанных символов:

Если же нужно найти команду с указанными символами где-то в середине или в конце, можно сделать так:

Ты можешь даже исправлять описки в последней введенной команде:

С помощью комбинации Ctrl + R команды можно искать в интерактивном режиме. Просто начни вбивать символы, присутствующие в команде, и ZSH вставит в строку ввода нужную команду. Это очень удобная функция, но ее можно сделать еще удобнее, если использовать возможности уже знакомого нам peco.

В Сети можно найти сторонний плагин для oh-my-zsh под названием zsh-peco-history. Просто скачай его в каталог сторонних плагинов ZSH:

Теперь комбинация Ctrl + R будет запускать полноэкранное меню peco вместо однострочной поисковой строки.

Копируем, удаляем, переименовываем

Казалось бы, что может быть проще, чем скопировать или переименовать файл? Просто вбиваешь команду cp или mv, а затем старое и новое имена:

Но зачем утруждать себя, нажимая лишние кнопки, если можно сделать так:

Строка, содержащая фигурные скобки с двумя строками, разделенными запятой, будет развернута в две строки, в одной из которых будут символы до запятой, а в другой — символы после.

Можно пойти дальше и использовать не просто замену строк, а регулярные выражения. Для этого нам понадобится команда rename:

Читайте также:  Php cgi что это

Такая команда заменит все подстроки, подпадающие под регулярное выражение, в именах всех файлов с расширением .txt. Недурно, не правда ли?

Также стоит изучить команду basename. При обычном использовании она просто выводит последний элемент пути:

Но также ее можно использовать для отрезания частей строки, например:

Ты можешь спросить, что это дает? А вот что:

Это перекодировщик всех файлов PNG в JPG. Команда крайне проста: мы создаем цикл, который проходится по всем файлам PNG в текущем каталоге, затем запускает команду convert для перекодировки их в JPG. Basename здесь нужен для того, чтобы дать новым файлам корректное имя. Хинт: обратные кавычки запускают заключенную в себя команду в так называемом субшелле. Они нужны для запуска одной команды из другой.

Чтобы понять их мощь, обрати внимание на следующую команду:

Уверен, эта команда не раз спасет тебя, когда ты распакуешь архив tar.gz не в тот каталог. Она удаляет все ранее распакованные файлы.

Ищем правильно

Ты уже должен знать, что в любой UNIX-системе есть команда find, предназначенная для поиска файлов. Использовать ее предельно просто:

Эта команда найдет все файлы с расширением .c в текущем каталоге и во всех его подкаталогах. Но что делать, если в каждом из этих файлов необходимо найти строку open? А вот это:

Ищем open в файлах .c

Можно и несколько по-другому:

Этот пример немного сложнее и, как ни странно, медленнее. Почему? Потому, что xargs распараллелит поиск, запустив отдельный процесс grep на каждую строку.

При желании от find можно вообще избавиться:

По сути, это эквивалент предыдущей команды.

Работаем с буфером обмена

Читая эту статью, ты наверняка то и дело копировал команды и вставлял их в терминал. Если нет — значит, ты набирал их сам, что правильно, память тебя отблагодарит. В любом случае копировать и вставлять команды в терминал жутко неудобно, как, впрочем, неудобна и сама концепция копирования/вставки.

Однако в случае с терминалом у тебя есть один очень мощный инструмент. Он называется xclip и позволяет копировать и вставлять в буфер обмена. Для начала добавь в

/.zshrc следующие строки и перезапусти терминал (или ZSH):

Теперь, чтобы что-то скопировать в буфер обмена, просто перенаправь вывод в xcopy. Например:

В буфере обмена окажется вывод команды uname -a. Вставить можно таким же образом:

Вывод также можно перенаправить. Или заключить xpaste в обратные кавычки, чтобы его содержимое было выполнено шеллом.

Выводы

Командная строка не просто мощный инструмент. Это настолько мощный инструмент, что мне даже трудно придумать, какой тип интерфейса ОС может быть эффективнее. То, о чем я написал, — такая крошечная часть верхушки айсберга, что для описания всех трюков командной строки потребовалась бы серия книг, сродни «Большой советской энциклопедии». Ну а напоследок то, чего все так долго ждали, — dd с показом прогресса:

_AMD_

Основатель trigon.im и gm-donate.ru. Интересуюсь айти, текстами, продажами. Меломан, интроверт, альтруист

_AMD_

Эта инструкция написана для Mac’овского iTerm, но при помощи несложных манипуляций может применяться и в других термианалах в т.ч. на удаленных Linux машинах

  1. Установка HomeBrew
  2. Установка оболочки zsh
  3. Установка оболочки для zsh 🙂 (Oh My Zsh)
  4. В iTerm делаем, чтобы вместо Bash юзался Zsh
  5. Меняем дефолтную цветовую схему в iTerm
  6. Устанавливаем пропатченные шрифты с доп. символами
  7. Устанавливаем тему OMZ (Oh My Zsh)
  8. Устанавливаем плагины OMZ
  9. Прописываем все это в настройках OMZ

Это аналог пакетного менеджера apt в Linux. Через него гораздо проще устанавливать многие вещи, вроде оболочки Zsh и многих плагинов для нее

В терминал прописываем

Оболочка, типа всем известного баша, но с кучей настроек и возможностей для кастомизации

Oh My Zsh это фреймворк, через который и будет настраиваться Zsh. Не стоит их путать. Все необходимые нам настройки будут производиться с единственного файла.

Открываем настройки iTerm > Profiles > Default > Command: /bin/zsh
При перезапуске iTerm у вас уже будет Zsh (пока что ненастроенный)

command > /bin/zsh

  1. Скачиваем репозиторий с кучей-кучей схем
  2. В readme.md по скриншотам ищем схему, которая понравилась (у меня Afterglow. Люблю ее еще с Sublime Text 3)
  3. Находим ее в repo/schemes и испортируем в iTerm через Preferences > Profiles > Default > Colors > Color Presets. > Import

Нужны для корректного отображения символов во многих темах. Без него в темах могут быть закарлючки вместо иконок

Изменяем в iTerm Profiles > Default > Text > Change Font > Meslo LG S Regular For Powerline (Последнее можете выбрать другое, но обязательно кириллический и для Powerline)

Тема и делает всю красоту: добавляет особые фичи, изменяет оформление и тд

Список стандартных тем можно посмотреть здесь
Я использую нестандартную Powerlevel9k. Если хотите ее же:

Если вам приглянулась какая-то из стандартных, например, как мне, Agnoser, то переходим к следующим шагам, игнорируя этот. Установка самой темы будет в конце

Плагины добавляют новые алиасы к коммандам, а в некоторых случаях и изменяют вид терминала, например, при входе в папку .git репозитория

Список стандартных плагинов здесь. Я использую git docker docker-compose osx zsh-syntax-highlighting

Последний добавляет крутую подсветку синтаксиса для всего вводимого текста в терминал, но требует отдельной загрузки, тк не стандартный

Ниже мы активируем его, другие плагины, темы и немного поправим настройки OMZ

Устанавливаем скачанные плагины, темы, добавляем дополнительные настройки

У меня конфиг выглядит так:

KeePass — удобный и безопасный способ хранить сотни разных паролей

Когда-то я рассказывал о своем способе создания сложного и запоминающегося пароля, но он все равно недостаточно надежен для использования повсеместно. В идеале пароль от каждого сайта должен отличаться и совсем

Monero. Linux CPU mining (Ubuntu)

Майнинг монеро основан на алгоритме CryptoNight, который устойчив к майнингу ASIC’ами. Особенностью алгоритма является возможность майнинга, как на CPU так и на GPU. У меня завалялось несколько серверов, поэтому я

Ссылка на основную публикацию
Adblock detector