Как стать автором
Обновить
45.7

Оболочки *

Шелл и компания

Сначала показывать
Порог рейтинга
Уровень сложности

Дюжина приемов в Linux, которые действительно сэкономят уйму времени

Время на прочтение9 мин
Количество просмотров136K


Эта статья также есть на английском.

Однажды вечером, перечитывая Джеффри Фридла, я осознал, что даже несмотря на всем доступную документацию, существует множество приемов заточенных под себя. Все люди слишком разные. И приемы, которые очевидны для одних, могут быть неочевидны для других и выглядеть какой-то магией для третьих. Кстати, несколько подобных моментов я уже описывал здесь.

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

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →
Всего голосов 128: ↑122 и ↓6+116
Комментарии166

Немного предпятничных задачек на Bash

Время на прочтение7 мин
Количество просмотров23K
image

Привет Хабр!



В bash частенько можно столкнуться с ситуацией, когда вроде как уже разобрался, и тут внезапно какая-то магия. Ковырнешь ее, а там еще целый пласт вещей, о которых раньше и не подозревал…
Под катом — несколько забавных задачек на bash, которые (надеюсь) могут оказаться интересными даже для середнячков. Удивить гуру я не надеюсь.., но все же перед тем как залезть под кат, сперва пообещайте ответить на задачки хотя бы для себя вслух — без man/info/google.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии25

VHD Native Boot снаружи и внутри

Время на прочтение9 мин
Количество просмотров43K
Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией Windows, которая называется VHD Native Boot, то есть способности загружаться с виртуального жесткого диска формата VHD/VHDx.

Начиная с 7-й версии, в Windows появилась возможность создавать виртуальные диски VHD/VHDx (далее просто VHD), а также подсоединять и отсоединять их через графический интерфейс «Управление дисками» и утилиту командной строки diskpart. Кроме этого, Windows научилась с таких дисков загружаться, и все бы ничего, но этот самый Native Boot был доступен только обладателям старших версий, то есть от Pro и выше. Очевидно, что это было лишь маркетинговое ограничение, потому что с появлением Windows 10, а я проверял Anniversary Update (1607) и Creators Update (1703), никаких ограничений больше нет. Это работает и в Windows 10 Home, причем она может выступать как в роли хоста, так и в роли гостя. О том, как это выглядит и как это можно использовать, вы узнаете ниже.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии10

Переход с bash на zsh

Время на прочтение12 мин
Количество просмотров192K

Чтобы перейти с bash на zsh необходимо знать базовые отличия между ними — без этого будет сложно провести первоначальную настройку zsh в ~/.zshrc.


Я не нашёл краткого описания этих отличий когда переходил сам, и мне пришлось потратить немало времени на вычитывание документации zsh. Надеюсь, эта статья упростит вам переход на zsh.


Зачем переходить


Для начала — а стоит ли вообще тратить своё время и внимание на переход? Учить ещё один диалект sh, менее распространённый чем POSIX sh или bash, заново заниматься настройкой рабочего окружения…


На мой взгляд, если вы проводите много времени в консоли, вам нравятся Vim или Emacs и вы уже потратили немало времени на их настройку "под себя" — однозначно стоит! Zsh по духу очень на них похожа: это очень сложная и гибкая программа, чьи возможности полностью мало кто знает, но потратив некоторое время на настройку можно получить очень удобную лично вам рабочую среду.

Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии118

Истории

Windows 10 Creators Update: что нового в Bash/WSL и Windows Console

Время на прочтение8 мин
Количество просмотров44K
Когда вышел Windows 10 Anniversary Update (AU), подсистема Windows Subsystem for Linux (WSL) была ещё далека от завершения и страдала от многих несовместимостей, особенно с популярными средствами разработки вроде node.js, Java и др.

Однако было важно передать эту восхитительную новую функцию в руки реальных пользователей, чтобы мы могли узнать у них — у ВАС — что именно необходимо WSL, что работает, что не работает и т.д.

И сообщество ответило!

Таким образом, этот новый релиз подсистемы Windows для Linux и консоли Bash создан вами и для вас!
Читать дальше →
Всего голосов 55: ↑54 и ↓1+53
Комментарии97

Настоящий Unix — не есть приемлемый Unix

Время на прочтение5 мин
Количество просмотров28K
Командная строка Unix полна сюрпризов. Например, вы знали, что инструмент ls, который чаще всего используется для получения списка файлов в текущем каталоге, в версии OS X распознаёт не менее 38 разных флагов?

Я не знал, так что затвитил этот факт. И получил парочку ответов, один из которых заставил меня задуматься: действительно ли саму Unix нужно винить в этом?

Насколько я знаю, ни Linux, ни OS X не были спроектированы в строгом соответствии с философией Unix. Будет лицемерием основывать критику “Unix” только на этих производных от Unix, которые есть у нас сегодня.

Но я всё-таки попробую показать, как много проблем с интерфейсами командной строки в современных наследниках Unix восходят к корням самой Unix. В частности, я попытаюсь объяснить свой скепсис относительно идеи, что окружение командной строки Unix могло когда-либо поддерживать экосистему программ, каждая из которых хорошо выполняет одну функцию.

Но я немного опережаю события. Прежде чем я начну говорить об этом, давайте более пристально посмотрим на команду ls и попробуем выяснить, что конкретно она делает не так.
Читать дальше →
Всего голосов 44: ↑32 и ↓12+20
Комментарии116

findNclean: найти и вычистить

Время на прочтение14 мин
Количество просмотров5.9K


Нет-нет, этот пост совсем не про боль и страдание! Даже немножко наоборот. Просто картинка напоминает о значимости первой строчки будущего кода.
Вначале, просто хотел описать свежую утилиту, с пылу с жару из под клавиатуры. Сама по себе она вполне ничего (хоть и до блеска бляхи новоиспечённого дембеля её ещё полировать и полировать), но описывать только её оказалось как-то скучновато. Потом решил, что на её примере можно поделиться башизмами, которыми сам раньше не пользовался. Далее подумал, что можно убить двух зайцев и описывать её совместно с жизненными примерами. Но в конце понял, что негоже мучить и без того изрядно потрёпанных зверушек, и решил просто их немножко причесать. Третий заяц (который и не заяц вовсе, а удав) мудро предпочёл воздержаться от участия в этом бардаке.

Так что если вдруг, тебе регулярно приходится искать файлы и может даже затем перемещать их куда-то; или тебе всё равно какой слой пыли лежит на файловой системе твоего сервера с аптаймом в несколько сотен лет и тебе просто интересен bash; или если ты просто мимо проходил{,а,о}, то не проходи мимо!
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии2

Загрузка доверенной среды или лёгкий путь к паранойе в IT

Время на прочтение8 мин
Количество просмотров13K


Несмотря на несколько академичное название, тема носит вполне себе практичный характер.
Когда мы видим заголовки новостей об очередном успешном взломе чатов Telegram или WhatsApp (ЦРУ, Иранскими спецслужбами, Zimperium – нужное подчеркнуть), людям достаточно часто приходится объяснять, что компрометация операционной системы или аккаунта пользователя не является синонимом слабости защиты самого приложения, и это не является поводом отказаться от пользования своим любимым мессенджером, т.к. на его месте может оказаться без принципиальной разницы любой другой.


А если вы, например, загрузившись с флэшки «перезабиваете» пароли администратора любой своей Windows-машины, это отнюдь не говорит о чудовищных дырах в «мастдае», а о вас – как о супер-хакере, взломавшем детище Microsoft.


Хотелось бы немного прояснить вопросы среды, компонентов доверия и угроз, чтобы создать целостную картинку и разобраться в том, чего мы ждём в плане безопасности от операционной системы, BIOS и любимого чат-приложения, дабы не перекладывать ответственность с больной головы на здоровую.


Итак, начнём с практики, есть следующий кейс:

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии13

Ansible: настраиваем zsh терминал с antigen, autosuggestions, fzf и красивым prompt одной командой

Время на прочтение6 мин
Количество просмотров46K

Я провожу в терминале много времени, поэтому хочется, чтобы все было красиво, быстро и удобно. Из этого рождается постоянное желание его настраивать, пробовать разные плагины. Шеллом я выбрал для себя zsh лет 5 назад, пару лет назад нашел oh-my-zsh для его удобной настройки.


Со временем к этому конфигу добавились некоторые сбоку торчащие части в виде powerline и percol.


Недавно я решил пересобрать все так, чтобы избавиться от ненужных плагинов, добавить нужные, сделать легкую установку и обновление. В итоге появилась роль ansible-role-zsh, которая полностью настраивает терминалы на локалке и на моих серверах.


Особенности:


  • устанавливается одной командой (кроме шрифта и темы вашего терминального клиента)
  • быстро загружается, быстро работает
  • полностью настраивается через ansible, ~/.zshrc
  • полностью локальная (в систему ничего не ставится, все хранится в ~/.oh-my-zsh)
  • оставляет возможность юзеру вносить свои настройки через ~/.zshrc.local
  • одинаково работает на macOS, старом Debian, Ubuntu, CentOS
  • нормально выглядит на разных цветовых схемах (но лучше всего на Solarized Dark)
  • встроенная подсветка синтаксиса (помогает реже ошибаться и лучше читать длинные команды)
  • автодополнение по истории команд (помогает реже нажимать Ctrl+R)
  • отображение времени для долго выполняемых команд (помогает реже использовать time)

Демонстрация фич за 1 минуту:


Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии20

Automount afuse

Время на прочтение3 мин
Количество просмотров14K
Я хотел рассказать про своё открытие afuse — автомонтирование файловых систем по требованию, автоматически. Разве не здорово просто сделать:

ls /mnt/remote/web.example.com/var/lib/www/

И сразу увидеть файлы web-сервера, никак не устанавливая с ним соединение специально? Я этим пользуюсь уже давно, а главное:

  • Это работает из любого источника: Не важно, делаете вы указанный вывод в консоли, сохранили ссылку в MC или переходите из favorites вашего любимого менеджера такого как nautilus или dolphin
  • Вы можете переходить на любой хост, куда у вас есть доступ по ключам (настроить запрос пароля тоже можно, но это не интересно)
  • Вы можете запросто указать под каким пользователем входить на сервер, используя @:

    cd /mnt/remote/apache@web.example.com/var/lib/www/
    
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии28

Дайджест важных Linux событий 2016 — юбилеи

Время на прочтение6 мин
Количество просмотров9.5K

Прежде, чем погрузиться с пучину событий 2017 г. стоит оглянуться назад и отметить важные события и тренды минувшего года. Попытка охватить все важные события мире Linux и открытого ПО одним постом была самонадеянной, так как год выдался богатый юбилеями, а некоторые из них прошли незамеченными на Хабре. Из-за этого задуманный дайджест пришлось разбить на части, этот посвящен значительным юбилеям 2016 г: Linux, Vim, KDE и Git.


Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии20

“Nano-Framework” для автоматизации добавления скриптов в .{bash/zsh}rc

Время на прочтение2 мин
Количество просмотров6.6K
Как часто приходилось видеть репозиторий с кастомным скриптом по установке своих скриптов .bashrc или .zshrc файлы? Я точно писал такой велосипед и не один раз, для репозиториев, где храню свои личные конфиги. Давайте эту проблему решать.


Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии15

Grep все, что можно

Время на прочтение6 мин
Количество просмотров56K

Про grep знают если не все, то многие читатели Хабра, однако его многочисленных родственников знают немногие.




Давайте узнаем, как можно грепать все, что таит в себе хоть крупицу текста.

Читать дальше →
Всего голосов 93: ↑91 и ↓2+89
Комментарии48

Ближайшие события

Методы удаленного доступа к Linux GUI

Время на прочтение11 мин
Количество просмотров340K
В службу технической поддержки RUVDS регулярно обращаются по поводу GUI и удаленного доступа к нему на виртуальных серверах с Linux, несмотря на то что в интернете достаточно много материалов освещающих эту проблему. Поэтому, для наших пользователей мы решили собрать всё по этой теме в одну статью.


Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии42

Автор сurl просит Microsoft удалить алиасы curl и wget из PowerShell

Время на прочтение2 мин
Количество просмотров57K


Позавчера компания Microsoft опубликовала исходный код PowerShell. Таким образом, это средство автоматизации и конфигурирования на базе .NET Framework стало доступным под Linux.

Некоторые скептически относятся к стратегии «Microsoft любит Linux», которую декларирует редмондский гигант. Кое-кто считает, что консоль от Microsoft не нужна в операционной системе, в которой есть bash. Обычно это просто эмоциональные высказывания, но есть и вполне рациональные аргументированные возражения по существу. Например, разработчик программы curl Дэниель Стэнберг (Daniel Stenberg) вполне логично говорит, что наличие внутри PowerShell одноимённого алиаса curl, а также wget совершенно неуместно, потому что мешает запустить нормальные привычные программы.
Читать дальше →
Всего голосов 54: ↑46 и ↓8+38
Комментарии242

0day уязвимости в lshell

Время на прочтение3 мин
Количество просмотров7.6K
lshell — это оболочка, которая ограничивает команды и пути файловой системы, доступные пользователю. Её прочат как альтернативу сложной настройки chroot:

и так далее, имеется множество источников, предлагающих её к использованию.

Приложение доступно в репозиториях Ubuntu, Debian и EPEL.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии10

Сопроцессы: -что, -как, -зачем?

Время на прочтение5 мин
Количество просмотров20K
Многие пользователи Bash знают о существании со-процессов, появившихся в 4-й версии Bash'a. Несколько меньшее количество знает о том, что сопроцессы в Bash не какая-то новая фича, а древний функционал KornShell'a появившийся ещё в реализации ksh88 в 1988 году. Ещё меньшее количество пользователей shell'ов умеющих сопроцессить знают синтаксис и помнят как это делать. Вероятно, я отношусь к четвёртой группе — знающих о сопроцессах, периодически умеющих ими пользоваться но так и не понимающих «зачем?». Я говорю «периодически», так как иногда я освежаю в голове их синтаксис, но к тому моменту, когда мне кажется что «вот тот случай когда можно применить co-proc» я уже напрочь забываю о том как это делать.

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

В заголовке статьи у нас 3 вопроса. Пойдём по порядку.

Что?


Что же такое co-process? Со-процессинг — это одновременное выполнение двух процедур, одна из которых считывает вывод другой. Для его реализации необходимо предварительно запустить фоновый процесс выполняющий функционал канала. При запуске фонового процесса его stdin и stdout присваиваются каналам связанными с пользовательскими процессами. Соответственно, один канал для записи, второй для чтения. Пояснять это проще на примерах, поэтому сразу перейдём ко второму вопросу.
Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии36

Улучшаем работу в консоли или как я написал команду sshcdvim

Время на прочтение3 мин
Количество просмотров13K
Наверняка многие делали так, как на картинке, но вот только у них при этом выдалась ошибка типа «файл не найден». Давайте исправим эту проблему, чтобы при таких очевидных опечатках происходило именно то, что вы хотели. То есть, когда вы пишете «ssh <dirname>», происходил заход в директорию <dirname> и наоборот, когда вы делаете «cd <hostname>» происходит заход по ssh. Ну и заодно сделаем то же самое для vim, чтобы 2 раза не вставать.

Читать дальше →
Всего голосов 20: ↑10 и ↓100
Комментарии17

Трюки, облегчающие жизнь в zsh

Время на прочтение11 мин
Количество просмотров25K
Zsh — одна из лучших командных оболочек, обладающая впечатляющим набором возможностей. Однако, из‐за большого количества возможностей нет ничего удивительного в том, что некоторые из них проходят мимо внимания или возможность их применения для решения повседневных задач неочевидна. В этой статье будут рассмотрены как несколько «встроенных» возможностей zsh, так и примеры непростого кода, облегчающие жизнь.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии8

Разноцветные терминалы

Время на прочтение4 мин
Количество просмотров84K


В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле ~/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).

Для начала рассмотрим простой вариант, мой любимый формат командной строки.
Читать дальше →
Всего голосов 48: ↑40 и ↓8+32
Комментарии46