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

Оболочки *

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

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

Собственный DHCP-сервер силами bash

Время на прочтение6 мин
Количество просмотров26K
Я люблю автоматизировать процесс и писать собственные велосипеды для изучения того или иного материала. Моей новой целью стал DHCP-сервер, который будет выдавать адрес в маленьких сетях, чтобы можно было производить первоначальную настройку оборудования.

В данной статье я расскажу немного про протокол DHCP и некоторые тонкости из bash'а.
Поднять паруса!

За 2018 год разработчики проекта KDE получили больше $ 0,5 млн. пожертвованиями. И не только они…

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

Жизнь многих коллективов разработчиков свободного программного обеспечения преисполнена аскетизма, преодоления сложностей и препятствий, и часто сообщества выживают исключительно за счет альтруистических убеждений и самоотверженности своих участников. Не всем популярным свободным продуктам удается найти стабильный и надежный источник финансирования. Однако, иногда судьба дарит заслуженные подарки. Так в этом году произошло с проектом KDE. Дважды.

KDE — организация и международное сообщество вокруг нее, разрабатывающее свободное программное обеспечение: среду рабочего стола Plasma и набор приложений KDE Applications. Основным источником средств для проекта служит сбор пожертвований и целевые кампании по фандрайзингу.

image


15 октября 2018 некоммерческая организация KDE e.V., курирующая развитие проекта KDE, сообщила о получении пожертвования в $300 000 на 22-летие проекта от другого сообщества энтузиастов — Handshake.org. Причем 100 тысяч долларов, из полученных 300 тысяч, пойдут на развитие свободного офисного пакета Calligra.
Читать дальше →

Работаем в консоли быстро и эффективно

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

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

Читать дальше →

Встречайте псевдоконсоль Windows (ConPTY)

Время на прочтение17 мин
Количество просмотров21K
Статья опубликована 2 августа 2018 года

Это вторая статья про командную строку Windows, где мы обсудим новую инфраструктуру и программные интерфейсы псевдоконсоли Windows, то есть Windows Pseudo Console (ConPTY): зачем мы её разработали, для чего она нужна, как работает, как её использовать и многое другое.

В прошлой статье «Тяжкое наследие прошлого. Проблемы командной строки Windows» мы рассказали о предпосылках появления терминала и эволюции командной строки в Windows, а также начали изучать внутреннее устройство Windows Console и инфраструктуры Windows Command-Line. Мы также обсудили многие преимущества и главные недостатки консоли Windows.

Один из недостатков заключается в том, что Windows пытается быть «полезной», но мешает разработчикам альтернативных и сторонних консолей, разработчикам служб и т.д. При создании консоли или службы разработчикам нужно иметь доступ к каналам связи, по которым их терминал/служба обменивается данными с приложениями командной строки, или предоставлять доступ к ним. В мире *NIX это не проблема, потому что *NIX предоставляет инфраструктуру «псевдотерминала» (PTY), которая позволяет легко создавать коммуникационные каналы для консоли или службы. Но в Windows такого не было…

… до настоящего времени!
Читать дальше →

Тяжкое наследие прошлого. Проблемы командной строки Windows

Время на прочтение28 мин
Количество просмотров79K
Предисловие от автора, Рича Тёрнера из Microsoft. Это статья о командной строке: от её появления и эволюции до планов капитального ремонта Windows Console и командной строки в будущих версиях Windows. Будь вы опытным профессионалом или новичком в IT, надеемся, что вы найдёте статью интересной.

Давным-давно в далёкой-далёкой серверной...


С первых дней развития информатики людям нужен был эффективный способ передавать компьютеру команды и данные и видеть результат выполнения этих команд/вычислений.

Одним из первых по-настоящему эффективных человеко-машинных интерфейсов стал Tele-Typewriter или «телетайп». Это электромеханическая машина с клавиатурой для ввода данных и каким-нибудь устройством вывода — сначала использовался принтер, позже экран.
Читать дальше →

Насколько хорошо ты знаешь bash?

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

Пользуешься командным интерпретатором каждый день? Готов решить несколько логических задачек и узнать что-то новое? Добро пожаловать под кат.
Читать дальше →

Google's Shell Style Guide (на русском)

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

Предисловие


Какой Shell использовать


Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


Когда использовать Shell


Shell следует использовать только для небольших утилит или простых скрптов-оберток.


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

Читать дальше →

Как безопасно программировать в bash

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

Почему bash?


В bash есть массивы и безопасный режим. При правильном использовании bash почти соответствует практикам безопасного кодирования.

В fish сложнее допустить ошибку, но там нет безопасного режима. Поэтому хорошей идеей станет прототипирование в fish, а затем трансляция с fish на bash, если вы умеете правильно это делать.

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →

Производительность консолей и оболочек

Время на прочтение11 мин
Количество просмотров13K
Есть хорошее демо MSR от 2012 года, которое показывает эффект времени отклика при работе на планшете. Если не хотите смотреть три минуты видео, они по сути создали устройство, которое симулирует произвольные задержки вплоть до доли миллисекунды. Задержка 100 мс (0,1 секунды), типичная для современных планшетов, выглядит ужасно. На 10 мс (0,01 секунды) задержка заметна, но уже можно нормально работать, а при задержке менее 1 мс всё просто идеально — как будто вы пишете карандашом по бумаге. Если хотите проверить это самостоятельно, возьмите любой Android-планшет со стилусом и сравните с нынешним поколением iPad Pro со стилусом Apple. У устройства Apple время отклика намного больше 10 мс, но разница всё равно кардинальная — она такая, что я реально использую новые iPad Pro для записи заметок и рисования диаграмм, в то время как Android-планшеты считаю совершенно неприемлемыми в качестве замены карандашу и бумаге.

Что-то похожее вы увидите в шлемах VR с разными задержками. 20 мс выглядит нормально, 50 мс лагает, а 150 мс уже непереносимо.

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

Удалённый рабочий стол + распределённые команды =?

Время на прочтение7 мин
Количество просмотров28K
В предыдущей статье я мимолётом упоминал про использование технологии удалённого рабочего стола для организации взаимодействия распределённых команд. Сейчас мне бы хотелось более подробно остановиться на этой теме, понять границы применения этой технологии и провести сравнение наиболее популярных реализаций.


Читать дальше →

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

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


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

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

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

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →

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

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

Привет Хабр!



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

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

Время на прочтение9 мин
Количество просмотров46K
Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией 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, причем она может выступать как в роли хоста, так и в роли гостя. О том, как это выглядит и как это можно использовать, вы узнаете ниже.
Читать дальше →

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

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

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

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


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


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


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


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

Читать дальше →

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 создан вами и для вас!
Читать дальше →

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

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

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

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

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

Но я немного опережаю события. Прежде чем я начну говорить об этом, давайте более пристально посмотрим на команду ls и попробуем выяснить, что конкретно она делает не так.
Читать дальше →

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

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


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

Так что если вдруг, тебе регулярно приходится искать файлы и может даже затем перемещать их куда-то; или тебе всё равно какой слой пыли лежит на файловой системе твоего сервера с аптаймом в несколько сотен лет и тебе просто интересен bash; или если ты просто мимо проходил{,а,о}, то не проходи мимо!
Читать дальше →

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

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


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


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


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


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

Читать дальше →

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

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

Я провожу в терминале много времени, поэтому хочется, чтобы все было красиво, быстро и удобно. Из этого рождается постоянное желание его настраивать, пробовать разные плагины. Шеллом я выбрал для себя 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 минуту:


Читать дальше →

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/
    
Читать дальше →