, Приёмы, советы и взломы производительности терминала Windows

Приёмы, советы и взломы производительности терминала Windows

Вилл Фукуа

 

Первая публикация на английском языке: Апрель 2021

Ссылка на продукт: 1280421

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

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-80020-756-1

www.packtpub.com

2021-05-02

 Состав исполнителей

Автор
Вилл Фукуа
Управляющий групповой обработкой
Пэйвэн Рамчндейни
Редактор ввода в эксплуатацию
Каустубх Мангалуркар
Главный редактор
Софи Роуджирс
Редактор разработки содержимого
Аамир Ахмед
Технический редактор
Сауруб Кэйдэви
Координатор проекта
Айжеш Дивайвайрам
Литературный редактор
Safis Editing
Корректор
Safis Editing
Составитель указателя
Тиджил Дарували Сони
Технолог
Джаоти Чауан

Моей любезной и любящей жене Кой, проявившей огромное терпение при написании этой книги.

- Вилл

Вступление

Собираете ли вы над некое веб приложение или рабоатет в облаке, командная строка всегда выступает интегрирующим инструментом для разработчиков программного обеспечения, а также администраторов ИТ. На протяжении многих лет возможности командной строки Windows отставали от основанных на Unix систем. Даже простые вещи, такие как выделение и копирование текста, требовали от вас преодолевать полосу препятствий прыжков по шинам.

В 2010-х Microsoft начал улучшать практику работы с командной строкой при помощи Подсистемы Windows для Linux (WSL), усовершенствований PowerShell и интерфейса командной строки. WSL предоставил собственное решение для запуска среды Linux на вашем устройстве Windows. PowerShell продолжал получать дополнительные улучшения для превышения удобства использования CMD. Диспетчер пакетов Windows выпустил интерфейс командной строки в качестве собственного решения установки программного обеспечения в вашей машине. Даже со всеми этими инструментами командной строки Windows не хватало надёжного терминала для их размещения, и Microsoft быстро осознала насколько сложно вносить изменения не разрушая определённого наследуемого поведения.

В 2019 году Microsoft представила Терминал Windows, некую новую унифицированную практику для размещения инструментов командной строки. Чтобы ещё подсластить это, Терминал Windows стал открытым исходным кодом совместно с упакованной с ним консолью. с которой пользователи командной строки Windows уже были знакомы. Он поместил настраиваемость во главу угла с моделью настроек на основе профилей и привязки клавиш. К тому же, быстрый цикл выпусков позволяет собирать отзывы пользователей и реагировать на них.

Эта книга выполнит фантастическое задание науить вас настройке Терминала Windows и превращения его в свой собственный. Вы узнаете как создавать профили и управлять ими чтобы максимально использовать возможности вашего терминала и настраивать свои действия, а также осуществлять привязку клавмш чтобы превратиться в эффективного пользователя. Более того, вы узнаете как начать чаще применять этот терминал в своих повседневных делах. Автор учит вас тому как применять PowerShell и bash и как приспособить их под свои нужды. Эта книга также научит вас тому как применять такие инструменты для сборки своих прикладных приложений, управления удалёнными системами и взаимодействовать с облачными решениями.

Карлос Замора

Инженер программного обеспечения Теринала Windows в Microsoft

 Об авторе

Вилл Фукуа был профессиональным разработчиком программного обеспечения на протяжении 12 лет с применением широкого диапазона технологий. Первоначально он выступал в качестве консультанта по программному обеспечению в Соединённых Штатах, он занимался разработкой промышленных систем для компаний в индустриях здравоохранении и финансов, помимо всего прочего. Затем он переместился за границу м теперь выступает Главой проектирования для интернет агентства путешествий, в котором он возглавляет высокопрофессиональную технологическую команду в Бангкок, Таиланд.Вы можете найти его в интернете.

 Рецензенты

Честер Лю энтузиаст открытого исходного кода, живущий в Китае. Первую свою работу он получил в качестве разработчика iOS в 2016 году, после того как окончил колледж. За свою профессиональную карьеру он работал на различных платформах и в разных областях. Он является давним членом сообщества GitHub и участвует в проекте Windows terminal начиая с 2019 года, после того как Microsoft открыл код этого проекта. Его вклад относится к различным областям, помимо прочего, включая рендеринг, производительность и поддержку VT.

Я бы хотел поблагодарить центральную команду Подсистемы консоли в Microsoft, с которой я был рад познакомиться благодаря нашему сотрудничеству в проекте Windows Terminal. Они постарались убедить своё руководство открыь исходный код глубокого компоенента ОС Windows, просто чтобы предоставить сообществу захватывающий опыт работы с консолью. В конце концов, члены команды - это те, кто погрузился в унаследованный исходный код консоли и на протяжении последних нескольких лет пытался улучшить работу консоли Windows. Дастин Л. Хауетт, технический руководитель команды консоли, один из самых крутых технических руководителей, встречавшихся мне, и для меня большая честь быть членом его "внешней" команды.

Даниэль Энгберг является главным консультантм и партнёром Agdiwo, базирующейся в Гётеборге, Швеция, компании ИТ услуг. Даниэль специализируется на управлении корпоративными клиентами Microsoft, включая Microsof Endpoint Confguration Manager (ранее System Center Confguration Manager), Windows 10 и PowerShell.

Даниэль ведёт свой блог начиная с 2010 года и активен в Твиттере

 www.PacktPub.com

 Предисловие

Терминал Windows это современная программа с открытым исходным кодом для Windows 10, со встроенными возможностями Приглашения командной строки (Command Prompt), PowerShell, WSL2 (Windows Subsystem for Linux 2, 2й версией подсистемы Windows для Linux) и много чем ещё. Он быстрый и гибкий, однако для его действенного применения нам требуется разбираться как в Терминале Windows, так и в тех оболочках, которые работают внутри него. Мы подробно исследуем эти технологии на протяжении трёх раделов этой книги..

Мы начнём с описания преимуществ Терминала Windows, включая его рендеринг с ускорением GPU и настраиваемость на основе JSON. Мы изучим как применять и персонализировать встроенные закладки, панели и ключевые компоновеи чтобы продвигать свои прекрасные и действенные терминальные рабочие потоки.

Затем мы покажем как использовать внутри Терминала Windows PowerShell Core и Подсистему Windows для Linux. Мы достигнем своей максимальной производительности с использованием мощных инструментов, таких как PSReadLine в PowerShell и ZSH в Linux, и подцепим некоторые сберегающие время трюки для распространённых интсрументов разработки, таких как Git и SSH.

Наконец, мы увидим как Терминал Windows может применяться в общей разработке и задачах DevOps, таких как разработка интерфейса приложений JavaScript и серверного REST API, а также управления Amazon Web Services, Azure и Google Cloud.

К концу этой книги мы станем не только экспертами в Терминале Windows, но мы также узнаем как пользоваться такими оболочками как PowerShell Core и ZSH чтобы стать профессионалом командной строки.

 Для кого эта книга

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

 Что охватывает эта книга

Эта книга рассматривает Терминал Windows вплоть до версии 1.7 и составлена из следующих глав.

Раздел 1 - Введение в новый Терминал Windows

Глава 1. Начинаем работать с новым Терминалом Windows, обсуждает как работает Терминал Windows с существующими оболочками, такими как PowerShell, cmd.exe и подсистемой Windows для Linux. Она обсуждает скорость, настраиваемость и разработку с открытым исходным кодом для Терминала Windows, а также как устанавливать, обновлять и запускать его.

Глава 2. Изучаем интерфейс пользователя Терминала Windows, рассматривает как пользоваться закладками Терминала Windows, управлять панелями терминала и открывать различные оболочки, включая PowerShell и cmd.exe. Там, где это применимо и полезно, упоминаются соответствующие Быстрые клавиши. Данная глава охватывает все основные части интерфейса пользователя Терминала Windows.

Глава 3. Настраиваем профиль Linux Ubuntu, представляет некий обзор преимуществ WSL2 (Windows Subsystem For Linux 2, подсистемы Windows для Linux версии 2), руководства по настройке системы Ubuntu WSL2 и показывает как запускать её в виде профиля Терминала Windows. Она также обсуждает доступ к Windows через Linux и наоборот.

Раздел 2 - Настройка вашего Терминала Windows и его оболочек

Глава 4. Персонализируем настройки вашего Терминала Windows, рассматривает файл settings.json и имеющиеся настройки интерфейса пользователя. Она предоставляет вам руководство по его общей структуре и изменению данного файла, а также рассатривает целый ряд полезных настроек для их включения в Терминала Windows.

Глава 5. Изменяем появление вашего Терминала Windows, показывает как регулировать появление Терминала Windows чтобы сдедать его как привлекательным, так и более функциональным. В целом она обладает двумя частями: персонализация самого Терминала Windows и затем персонализация его оболочек для общего соответствия.

Глава 6. Настраиваем Быстрые клавиши, рассматривает основы системы привязки команд/ клавиш Терминала Windows, а также рекомендует установку привязки некоторых дополнительных клавиш.

Глава 7. Скрытые действия Терминала Windows, детализирует большое число скрытых по умолчанию команд - то есть выведенных за скобки и не доступных пока они поставлены в имеющихся настройках в соответствие Быстрые клавиши. Данная глава рассматривает некоторые из наиболее практичных скрытых ключевых привязок, таких как "режим фокуса" и "прикрепить сверху".

Глава 8. Советы для применения PowerShell в качестве профессионала, сосредотачивается на использовании PowerShell в качестве интерактивной оболочки в Терминале Windows. Она показывает некоторые сберегающие время советы и уловки для быстрого и без усилий выполнения задач.

Глава 9. Советы для использования Ubuntu в качестве эксперта, рассматривает как применять Ubuntu WSL2 в Windows. Дополнительно эта глава разделяет выбор полезных советов по настройке Ubuntu WSL2 в Терминале Windows для предоставления более богатой и производительной среды.

Раздел 3 - Применяем ваш Терминал Windows для разработки

Глава 10. Применение Git и GitHub в Терминале Windows, содержит советы и уловки по быстрому и действенному применению Git и GitHub. Она рассматривает начальную настройку и установку этих систем, а также инструменты оптимизации рабочего потока, такие как gh.

Глава 11. Сборка веб приложений при помощи React, рассматривает как собирать инфраструктуру приложения React внутри WSL2 при помощи Терминала Windows и кода VS. Она сосредоточена на действенных рабочих потоках при использовании Терминала Windows для разработки интерфейса.

Глава 12. Сборка REST API при помощи C# и Терминала Windows, показывает как собирать простой веб API при помощи .NET. Она детализирует различные схемы панелей Терминала Windows для запуска такого приложения, непрерывного тестирования и проведения экспериментов с C#.

Глава 13. Подключение к удалённым системам, пердставляет как WinRM, так и SSH. Она применяет SSH для удалённого подключения к системам Windows и Linux, а также предоставляет полезные советы относительно того как создавать некую хорошо налаженную настройку для соединения с часто применяемыми удалёнными машинами.

Глава 14. Управление системами в облаке, рассматривает настройку в Терминале Windows Облачных оболочек Azure и Google, а также дополнительно рассматривает командную строку Amazon Web Services для администрирования облачными системами.

 Как получить от этой книги больше пользы

Для максимального получения пользы от данной книги вам потребуется относительно современная версия Windows 10. Минимально рекомендуемой версией является Windows 10 версии 1903 (сборка 18362), которая была выпущена в мае 2019. Некоторые из наиболее современных функциональных возможностей из этой книги потребуют более современной версии. Все галвы, которые требуют более соверменной версии сделают это ясным в самом начале самой главы.

Если вы применяете цифровую версию данной книги, мы предлагаем вам набирать любой код этой книги или параметры настройки самостоятельно или получать доступ к такому коду через репозиторий GitHub (ссылка на него доступна в нашем следующем разделе). Следование этому поможет вам избежать любых потенциальных ошибок, связанных с копированием и вставкой для читающих PDF или электронную книгу {Прим. пер.: в своём переводе мы постарались проверять и это.}

 Выгрузка файлов образца кода

Вы можете выгрузить примеры кода для данной книги с GitHub по ссылке: https://github.com/PacktPublishing/Windows-Terminal-Tips-Tricks-and-Productivity-Hacks. В случае наличия обновлений этого кода они будут обновлять этот имеющийся репозиторий GitHub.

Мы также обладаем прочими пакетами кода из своего богатого каталога книг и видео, доступного в: https://github.com/PacktPublishing/ Сверяйтесь с ними!

 Загрузка цветных изображений этой книги

Мы дополнительно снабжаем вас файлом PDF, который содержит цветные изображения экранных снимков/ схем, использованных в данной книге. Вы можете загрузить этот файл по адресу: https://static.packt-cdn.com/downloads/9781800207561_ColorImages.pdf.

 Соглашения

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

CodeInText обозначает одовые слова в тексте, файлы настроек, имена папок, названия файлов, расширения файлов и названия программ. Вот некие примеры: "Чтобы выполнить ping к серверу в своём терминале запустите ping example.com .".

Блок кода записываются следующим образом:


{
  "command": "togglePaneZoom",
  "keys": "alt+shift+z"
}
 	   

Когда мы желаем привлечь ваше внимание к определённой части блока кода, соответствующие строки или элементы устанавливаются жирным текстом:


{
  "command": "togglePaneZoom",
  "keys": "alt+shift+z"
}
 	   

Всякий ввод и вывод в командной строке записывается следующим образом:


mkdir my-project
cd my-project
 	   

Жирный шрифт указывает некий новый термин, важное слово или слова, которые вы наблюдаете на экране. Например, слова в меню или блоках диалога в тексте, подобном приводимому здесь. Например: "Выберите System info из панели Administration.

[Замечание]Замечание

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

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Разделы

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

 Обратная связь с читателями

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

Для отправки обычного отклика просто пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения.

Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу www.packtpub.com/authors.

 Поддержка пользователей

Теперь, когда вы являетесь гордым владельцем книги Packt, у нас есть целый ряд моментов для помощи вам в получении максимальной выгоды от вашей покупки.

 Опечатки

Хотя мы и предприняли все меры чтобы обеспечить точность нашего содержимого, ошибки всё- таки возможны. Если вы обнаружили ошибку в нашей книге - возможно, ошибку в тексте или в коде - мы будем признательны если вы сообщите об этом нам. Сделав это, вы можете предостеречь остальных читателей от разочарования и помочь нам улучшить последующие версии данной книги. Если вы обнаружили ошибку, пожалуйста, сообщите о ней посетив www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки. Когда ваша ошибка будет проверена, вы получите уведомление и ошибка будет выложена на наш веб- сайт или добавлена в какой- нибудь перечень существующих ошибок с заголовком раздела Errata.

Для просмотра ранее выявленных ошибок посетите www.packtpub.com/books/content/support и введите название нужной книги в поле поиска. Необходимая информация появится в разделе Errata.

 Незаконное тиражирование

Пиратство, защищённых авторским правом материалов в Интернете является постоянной проблемой во всех средствах массовой информации. В Packt мы подходим к защите наших авторских прав и лицензий очень серьёзно. Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}

Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав.

Мы выражаем вам признательность в защите наших авторов и нашей возможности доносить до вас имеющего ценность содержимого.

 Вопросы

Если у вас есть проблемы по любым сторонам данной книги, вы можете контактировать с нами по адресу questions@packtpub.com и мы предпримем все меры в отношении ваших проблем.

 Содержание

Предисловие
Что охватывает эта книга
Что вам нужно для этой книги
Для кого эта книга
Соглашения
Обратная связь с читателями
Поддержка пользователей
Выгрузка файлов образца кода
Опечатки
Незаконное тиражирование
Вопросы
Раздел 1. Введение в новый Терминал Windows
Глава 1. Начинаем работать с новым Терминалом Windows
Технические требования
Зачем нужен новый терминал?
Современные основы Терминала Windows
Современный интерфейс пользователя
Гибкая персонализация на основе JSON
Разработка с открытым исходным кодом
Установка Терминала Windows
Запуск Терминала Windows
Выводы
Дальнейшее чтение
Глава 2. Изучаем интерфейс пользователя Терминала Windows
Технические требования
Применение закладок терминала
Изменение заголовка появления закладки
Применение панелей терминала
Управление выводом терминала
Применение палитры команд
Обзор Быстрых клавиш клавиатуры
Выводы
Дальнейшее чтение
Глава 3. Настраиваем профиль Linux Ubuntu
Технические требования
Зачем применять Посдсистему Linux для Windows?
Установка Ubuntu Linux
Шаг 1: Устанавливаем WSL2
Шаг 2: Устанавливаем Ubuntu
Запускаем Linux
Установка приложений Linux: nginx
Запускаем nginx
Двунаправленный доступ в Windows и Linux
Выводы
Раздел 2. Настройка вашего Терминала Windows и его оболочек
Глава 4. Персонализируем настройки вашего Терминала Windows
Технические требования
Введение в файл settings.json
Восстановление после плохих настроек
Структура файла настроек
Полезные глобальные настройки
Полезные настройки профиля
Персональные профили командной строки
Оболочка Git Bash
Оболочка SSH
Интерактивная оболочка C#
Интерактивная оболочка Node.js
Терминальная оболочка Vim
Выводы
Глава 5. Изменяем появление вашего Терминала Windows
Технические требования
Цветовые схемы терминала
Встроенные цветовые схемы
Продвигаемые сообществом цветовые схемы
Написание вашей собственной темы
Фоновые изображения и полупрозрачность
Персонализация PowerShell с помощью posh-git, oh-my-posh и PSReadLine
Oh-my-posh версии 2
Oh-my-posh версии 3
Изменение приглашения на ввод без oh-my-posh
oh-my-posh цветов команд с помощью PSReadline
Персонализация WSL2 с помощью oh-my-zsh
Персонализация приглашения на ввод команд
Выводы
Глава 6. Настраиваем Быстрые клавиши
Технические требования
Обзор системы Быстрых клавиш
Сборка собственных комманд при помощи `sendInput`
Настройка персональной схемы терминала при помощи `wt`
Дополнительные применения `wt`
Выводы
Глава 7. Скрытые действия Терминала Windows
Технические требования
Обнаружение несвязанных действий
Применение действий для управления фокусом
togglePaneZoom
toggleAlwaysOnTop
toggleFocusMode
Применение действий для визуальных эффектов
setColorScheme
toggleShaderffects
Применение действий для манипуляций с закладками
Закрытие множества закладок за раз
Изменение цветов закладок
Выводы
Глава 8. Советы для применения PowerShell в качестве профессионала
Технические требования
Установка PowerShell Core
Применение встроенных комманд и псевдонимов
Автоматические переменные $^ и $$
cd - и cd +
Команда ii
Навигация по истории при помощи h и r
Конвейеры и $_
Персональные профиль псевдонимов и функций
Настройка PSReadLine в PowerShell Core
EditMode
Поиск по истории
Улучшение автоматического заполнения
Предсказания команд
Программируемые закладки
Добавление GNU coreutils в ваш путь
Установка утилиты z
Дополнение - полный файл $profle PowerShell
Выводы
Глава 9. Советы для использования Ubuntu в качестве эксперта
Технические требования
Применение Ubuntu в Windows
Доступ к каталогам Linux из Windows
Доступ к каталогам Windows из Linux
Запуск программ Linux изнутри Windows
Запуск программ Windows изнутри Linux
Установка и настройка программного обеспечения
Выбор вашей оболочки
Применение ZSH
Повторное исполнение более ранних команд
Применение подстановок ZSH
Настройка псевдонимов и функций
Быстрая навигация по каталогам
Установка и применение подключаемых модулей oh-my-zsh
Включение подключаемого модуля z
Включение режима vi-
Установка автоматических предложений zsh
Выделение синтаксиса zsh
Выводы
Раздел 3. Применяем ваш Терминал Windows для разработки
Глава 10. Применение Git и GitHub в Терминале Windows
Технические требования
Создание современной установки Git
Установка Git
Установка OpenSSH
Запуск нашего агента OpenSSH
Настройка пары ключей частный/ общедоступный
Тестирование нашей SSH аутентификации
Аутентификации при помощи Git в Linux
Советы по действенному использованиб Git
Переключение веток Switching Git при помощи git checkout -
Исправление опечаток при помощи автокоррекции Git
Активная доставка в HEAD
Псевдонимы Git и певдонимы команд
Tig
Просомтр файлов в различных ветках
git reflog
Использование GitHub из Терминала Windows
Создание репозиториев
Просмотр запросов на вытаскивание
Проверка запросов на вытаскивание
Потоки - каковы политика и приоритет планирования
Выводы
Глава 11. Сборка веб приложений при помощи React
Технические требования
Установка Node.js в WSL2
Добавление профиля Node.js в Терминал Windows
Создание прикладного приложения React
Разработка в WSL2
Разработка при помощи современного рабочего потока
Выводы
Глава 12. Сборка REST API при помощи C# и Терминала Windows
Технические требования
Установка NET и C#
Применение дотнет сценария из Терминала Windows
Генерация нашего REST API
Тестирование нашего REST API
Внесение изменений в наш REST API
Выполнение тестов блока при помощи Терминала Windows
Выводы
Глава 13. Подключение к удалённым системам
Технические требования
Подключение к компьютерам Windows при помощи WinRM и SSH
Подключение при помощи WinRM
Подключение к компьютерам Windows при помощи SSH
Копирование файлов при помощи SCP
Подключение к машинам Linux
Сохранение регулярно используемых хостов и команд
Запуск удалённых подключений в Терминале Windows
Выводы
Глава 14. Управление системами в облаке
Технические требования
Интерактивное применение Оболочки облака Microsoft Azure и az
Интерактивное применение az
Интерактивное применение Оболочки облака Google и gcloud
Интерактивное применение gcloud beta
Применение AWS из Терминала Windows
Применение aws-shell
Применение инструментов AWS для PowerShell
Выводы
Дополнение A. Действия Терминала Windows
Указатель