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

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

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

    • Перевод
    Статья опубликована 2 августа 2018 года

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

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

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

    … до настоящего времени!
    Читать дальше →
  • Тяжкое наследие прошлого. Проблемы командной строки Windows

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

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


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

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


      Пользуешься командным интерпретатором каждый день? Готов решить несколько логических задачек и узнать что-то новое? Добро пожаловать под кат.
      Читать дальше →
    • Google's Shell Style Guide (на русском)

      • Перевод
      • Tutorial

      Предисловие


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


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


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


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


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


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


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


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

      Читать дальше →
      • +29
      • 10,4k
      • 9
    • Как безопасно программировать в bash

      • Перевод

      Почему bash?


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

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

      Предисловие


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

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

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


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

      В этой статье речь пойдёт о том, как использовать WPF Data Triggers в схеме разбиения монитора Stack для того, чтобы полностью автоматически отдавать приложению всё пространство рабочего стола, когда другие приложения не запущены. Stack — это тайловый менеджер окон для Windows, использующий WPF XAML в качестве языка разметки экрана.

      Поставляющаяся из коробки схема разбиения экрана для больших мониторов (см. под катом) разбивает рабочий стол на 2 главные зоны — центральную (я обычно использую её для браузеров и IDE) и боковую (туда попадают RSS Reader, мессенжеры и окна терминалов). Эта схема фиксирована. Т.е. если у вас открыт только браузер, Stack оставит пустое место слева от него. В этой статье я покажу как использовать WPF Data Triggers и Data Binding, чтобы схопывать эту область автоматически, когда она пустая.
      Читать дальше
    • Производительность консолей и оболочек

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

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

      Странно, но редко приходится слышать жалобы на задержку ввода с клавиатуры или мыши. Казалось бы, причиной может быть то, что ввод с клавиатуры и мыши очень быстрый — и происходит практически мгновенно. Часто мне говорят, что так оно и есть, но я думаю, что ситуация совершенно обратная. Идея того, что компьютеры быстро реагируют на ввод данных — настолько быстро, что человек не замечает разницы — самое распространённое заблуждение, которое мне приходилось слышать от профессиональных программистов.
      Читать дальше →
      • +13
      • 11,1k
      • 3
    • Удалённый рабочий стол + распределённые команды =?

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


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

          image

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

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

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

            image

            Привет Хабр!



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

              Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией 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

              • Tutorial

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


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


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


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


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

              Читать дальше →
            • Windows 10 Creators Update: что нового в Bash/WSL и Windows Console

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

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

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

              Таким образом, этот новый релиз подсистемы Windows для Linux и консоли Bash создан вами и для вас!
              Читать дальше →
            • Настоящий Unix — не есть приемлемый Unix

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

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

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

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

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

              • Tutorial


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

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


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


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


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


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

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

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

                    Я хотел рассказать про своё открытие 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/
                      
                    Читать дальше →
                  • Дайджест важных Linux событий 2016 — юбилеи

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


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

                    Самое читаемое