Не для кого не секрет что по умолчанию терминал в Windows — тот ещё костыль. На смену стандартному терминалу пришёл терминал с Powershell в 2006 году. Тогда это хоть и был прорыв, однако терминал всё ещё не был таким удобным, как это было на Linux с его Bash. Майкрософты придумали довольно дурной синтаксис команд действие-объект
, которое легло в основу синтаксиса всего Powershell и не давало быстро работать с терминалом. Не сразу, но спустя несколько релизов были добавлены алиасы, сначала они имитировали команды из cmd, а потом переняли команды bash по типу cp, mv, rm, ps и так далее (на самом деле всё это не команды, а просто сокращения, которые ссылаются на стандартные команды Powershell).
В данной мини-статье я постараюсь решить проблемы неудобного эмулятора терминала в Windows, а также отсутствия некоторого функционала в нём.
Сам я сижу уже 5-й год на линукс и перепробовал кучу шеллов (Zsh, Bash, Fish..) и хоть что-то в них, да понимаю. Пользователю терминала нужна прежде всего удобность консольного интерфейса. Стандартный терминал Powershell не даёт этого удобства да и глаза он выедает. Майкрософты недавно выпустили новый терминал полностью с открытым кодом. Новый терминал поддерживает темы, у него свой моноширинный шрифт, который довольно неплох на мой субъективный взгляд. Однако, смены одного лишь терминала хватать точно не будет, мы будем делать сам шелл более юзабельным.
А зачем это вообще нужно, когда можно просто юзать терминал в Linux?
Я ценю Linux. Погружаться в его работу всегда интересно, его можно вечно кастомизировать, однако лично мне он для работы не подходит, как и многим людям. Веб-разработчиком можно быть везде, наверное, даже легче на Linux, однако некоторого софта вам всё-таки всегда не будет хватать, да и не сосредоточиться на нём, вы вечно будете что-то латать, вечно искать ошибки, которые возникли в самой системе, вам вечно будет хотеться что-то изменить или попробовать что-то новое. Вы будете сосредоточены на самой системе, а не на своей работе.
Windows тоже не идеален, далеко не идеален, однако, софта на нём больше, он более стабилен, а также под него (как бы не было грустно) точится почти всё, что касается юзеров ПК.
Терминал в Windows — просто ужасный. Мы будем это исправлять и делать его больше Linux-like.
Windows Terminal
Сначала для нормального экспириенса нам нужен Windows Terminal. Он настраивается с помощью файла формата .json
. Первое что мне захотелось изменить — стандартную тему. В самом терминале уже встроены темы, которые мне нравятся, поэтому мы просто открываем настройки терминала (Ctrl + Alt + ,
), а там ищем профиль, который нам интересен
Тут мы пишем атрибут объекта под названием colorScheme
, а затем вписываем любую тему, которая нам понравится. Также можно скачать кастомную тему с данного сайта.
Особо больше изменять в терминале та и нечего, я уже говорил, что настроек в нём не так много как в терминалах на Linux, однако гораздо больше, нежели в стандартных терминалах.
Темы Powershell
От восприятия шелла может многое поменяться. По умолчанию шелл приветствует нас довольно грубо, он просто показывает наше расположение, относительно текущего диска. Нас это не особо и устраивает. Есть 2 типа людей: те которые любят, чтобы шелл показывал время, расположение, ветку Git'а, их имя, имя хоста и другую информацию, а есть те, которые просто хотят знать когда в шелл что-то можно вводить, а когда нельзя (обычная стрелка как в fish) — минималисты в общем.
Я скорее себя отношу ко вторым, однако изменять шелл по умолчанию достаточно сложно, благо люди придумали oh-my-posh. Его установка убийственно легкая:
Install-Module oh-my-posh -Scope CurrentUser # Устанавливаем сам oh-my-posh
Install-Module posh-git -Scope CurrentUser # Устанавливаем дополнение к нему, для мониторинга статуса git'а
После того, как мы всё установим мы можем запросить список тем с помощью команды Get-Theme
, а затем установить определённую тему с помощью Set-Theme
:
PS C:\Users\Daniil_Shilo> Get-Theme
Name Type Location
---- ---- --------
Agnoster Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\A...
AgnosterPlus Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\A...
Avit Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\A...
cypher Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\c...
Darkblood Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\D...
Emodipt Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\E...
Fish Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\F...
Honukai Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\H...
Lambda Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\L...
Material Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\M...
Operator Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\O...
Paradox Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
Pararussel Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
Powerlevel10k-Classic Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
Powerlevel10k-Lean Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
Powerlevel9k Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
PowerLine Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
PowerlinePlus Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
Punk Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\P...
pure Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\p...
qwerty Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\q...
robbyrussell Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\r...
Sorin Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\S...
Star Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\S...
tehrob Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\t...
ys Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\y...
Zash Defaults C:\Users\Daniil_Shilo\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.496\Themes\Z...
Set-Theme ys
Стало уже намного лучше. Шелл стал цветным, а также у нас нет надписи на пол экрана нашего местоположения.
Пакетный менеджер
Если вас не устраивает стандартный магазин приложений, то вам нужен Chocolatey. Данная утилита позволяет скачивать пакеты, так, как это сделанно в Linux-дистрибутивах (через пакетный менеджер).
Установка:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Далее вы можете установить любую другую программу с помощью Chocolatey, будь-то Google Chrome, Firefox, Docker, VSCode, и так далее. Обычно я устанавливаю данную утилиту, как только поставлю чистую Windows, так как с помощью неё можно быстро установить нужные программы не кликая на галочки и не скачивая ничего лишнего
Важно подметить, что все пакеты собираются комьюнити Chocolatey, то есть разработчики не могут отвечать за работоспособность и безопасность того или иного пакета. Естественно каждый пакет модерируется и проверяется на вирусы. Все пакеты, которые были проверены помечены как Approved.
Поиск пакетов
Chocolatey не следует синтаксису Powershell, из которого мы можем его запустить, это означает что он может использоваться как другие утилиты на том же Linux. Поиск пакетов выполняется с помощью ключевого слова search.
% choco search Google Chrome
Chocolatey v0.10.15
GoogleChrome 88.0.4324.146 [Approved]
google-hangouts-chrome 2017.110.418.20 [Approved]
google-translate-chrome 2.0.7 [Approved]
...
Установка и удаление пакетов
Для того чтобы установить пакеты нам нужно лишь название этого пакета (что логично).
% choco install <имя_пакета>
Для того чтобы посмотреть какие пакеты установлены нам нужно ввести следующую команду:
% choco list --local-only
Для того чтобы удалить какой-нибудь пакет нам нужно ввести:
% choco uninstall <имя_пакета>
Заключение
Хоть терминал в Windows всё ещё не такой функциональный, я верю что рано или поздно это изменится, хотя бы из-за интеграции Linux в Windows (WSL). Думаю, пользоваться терминалом уже можно спокойно, ибо люди не перестают придумывать что-то новое, чтобы вдохнуть в терминальный эмулятор Windows новую жизнь.
Если вам было интересно то можете почитать мой блог в телеге, там много всего интересного о мире линукс, а также о веб-разработке.