Когда начинаешь свой путь разработчика, всегда страшно оказаться перед командной строкой. У нас есть возможность жить в мире, где вы можете сделать практически все, что угодно, с помощью удобного графического интерфейса, так зачем же работать со старым добрым терминалом?
Читайте оригинальную статью на DivingLinux.com
Позвольте мне сказать вам, что изучение командной строки далеко не устарело, и она остается одним из самых мощных инструментов для повышения вашей производительности. Лично я решил сосредоточиться на Linux, но разработчики, работающие на macOS или Windows (с WSL2), могут извлечь из этого не меньшую пользу, а благодаря соответствию POSIX, применять эти знания на большинстве операционных систем.
Я говорю вам это на собственном опыте.
Я full-stack разработчик, работающий с Linux последние 7 лет, и постепенно освоил командную строку, используя ее каждый день для выполнения простых и сложных задач.
Когда мне впервые представили терминал, все, что я увидел, это неэффективный и сложный способ делать вещи, которые я уже умел делать с помощью встроенных приложений, доступных в моей операционной системе, так зачем беспокоиться?
Даже если он мне не нравился, это был единственный известный мне способ возиться с серверами, в основном для настройки Apache для размещения моего начинающего PHP-кода в Интернете. С этих простых операций я привык делать больше вещей, начал развивать уверенность в своих навыках до такой степени, что не могу представить себя без командной строки, не только для работы с серверами, но и на своем рабочем столе.
Трудно проиллюстрировать, как обучение работе с командной строкой может быть хорошей идеей, поэтому мы вместе рассмотрим несколько преимуществ командной строки с реальными примерами использования, и я призываю вас выполнить каждый из них на своем компьютере для сравнения.
Быстрая попытка, неудача и итерация
Небольшой взлом методом проб и ошибок — одна из тех вещей, которые я больше всего люблю делать в командной строке.
Недавний пример: я нашел правительственный сайт, на котором перечислены все врачи общей практики в моем городе, а также их статус приема новых пациентов. Немного покопавшись, я обнаружил, что список доступен в формате JSON на общедоступном URL.
Могу ли я создать автоматизированную задачу, которая будет уведомлять меня, когда врач общей практики становится доступным, и все это из командной строки Linux? Конечно, я могу это сделать!
Сначала мне нужно получить файл JSON, это можно сделать с помощью curl
, сделать данные JSON читаемыми для изучения и, наконец, отфильтровать их, обе задачи можно выполнить с помощью jq
:
student@waddle:~/$ curl https://health.gov/available-gp.json
| jq '.[] | select(.available == true)'
{
"name": "Dr. John Doe",
"available": true
}
Конечно, поиск правильной комбинации команд требует опыта и времени, и вы могли бы сделать то же самое с помощью нескольких строк Python или JavaScript. Но для таких простых задач, как эта, я нахожу терминал более эффективным. Нет необходимости настраивать среду разработки, создавать проект, устанавливать пакеты или запускать редактор кода, все, что мне нужно — это терминал.
Как только вы научитесь правильно пользоваться терминалом, вы можете попробовать поработать с grep
, sed
, awk
в сочетании с конвейеризацией и перенаправлением. Это откроет вам целый мир новых возможностей.
Автоматизация общих задач
Теперь я хотел бы автоматизировать поиск свободных врачей и получать какое-то уведомление при обнаружении новых свободных мест. Для этого мне нужно проверить, есть ли в моем списке результаты, и если да, то получить уведомление на рабочий стол.
student@waddle:~/$ curl https://health.gov/available-gp.json
| jq '.[] | select(.available == true).name'
| xargs -I{} notify-send "Found available general practioner" "{}"
Для начинающего пользователя здесь есть некоторая темная магия. Команда jq
вернет все доступные имена врачей общей практики, а благодаря трубе к xargs
для каждой возвращенной строки будет выполнена команда notify-send
, что означает отсутствие уведомления при отсутствии результатов.
Теперь я могу выполнять эту команду каждый час с помощью задачи Cron, чтобы полностью автоматизировать процесс, и все это заняло около 10 минут.
Изучение Cron и systemd — отличный способ начать играть с автоматизацией. Например, вы можете создать свою собственную систему резервного копирования с помощью одной команды rsync
в задаче Cron.
Освойте инструменты разработчика
Неважно, являетесь ли вы в настоящее время frontend или backend разработчиком, умение пользоваться командной строкой даст вам наибольшую гибкость в плане инструментов разработчика.
Оба нуждаются в непрерывной интеграции и непрерывной доставке, которые, скорее всего, работают на сервере Linux. Оба нуждаются в инструментах контроля версий, управления пакетами и тестирования, которые работают в командной строке.
Вы можете использовать графический интерфейс для 90% случаев использования, и это совершенно нормально. Но когда вы столкнетесь с необычной ошибкой или захотите выполнить очень специфическую задачу, вам придется вернуться к терминалу, просто потому, что большинство графических интерфейсов воспроизводят лишь часть возможностей инструментов командной строки.
Простой способ сделать себя более удобным при использовании инструментов разработчика в терминале — повторить в командной строке то, что вы обычно делаете в графическом интерфейсе.
Например, мне нравится видеть свои ветки и историю коммитов в GitKraken, поскольку это делает управление Git-репозиторием более наглядным и понятным.
Быстрый поиск в Google покажет мне, что на самом деле можно получить подобное визуальное представление прямо в терминале с помощью следующей команды:
student@waddle:~/$ git log
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
--graph
--abbrev-commit
* 1e274a9 - (origin/main, origin/HEAD) WIP server provisioning (1 day ago) <Nicolas>
|
| * b62d50d - Base server driver abstraction (2 days ago) <Nicolas>
|/
* e1fdf32 - Initial commit (2 weeks ago) <Nicolas>
Эту команду неудобно набирать или даже запоминать, что делает ее идеальным кандидатом для создания псевдонима Git.
student@waddle:~/$ git config --global alias.pretty "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Теперь мне достаточно набрать git pretty
, чтобы получить ожидаемый результат за несколько миллисекунд, и я могу комбинировать её с другими инструментами, такими как grep
, для быстрого поиска коммита.
Научитесь делать что-то один раз, чтобы применять везде
Как было сказано во введении, большинство базовых команд, которые вы будете использовать в терминале, совместимы с POSIX, что означает, что вы можете использовать их на macOs, Windows с WSL2, Linux desktop и server.
Вырабатывая привычку работать в командной строке, вы также привыкнете работать в среде удаленного сервера, что сделает переход между настольным компьютером и сервером менее напряженным. Научиться выполнять задачи системного администрирования и DevOps, когда вам удобно работать с терминалом и несколькими базовыми командами, гораздо проще.
Конечно, задачи, выполняемые на сервере и на рабочем столе, не одинаковы, но инструменты для них общие, и в большинстве случаев запуск sed
на сервере macOS, Ubuntu или Debian даст довольно похожий результат.
Расширьте свой стек
Умение работать в командной строке, особенно в операционной системе Linux, — это идеальный способ расширить свои знания.
Лично я начинал свою карьеру как frontend-разработчик, по ходу дела изучал backend, а затем системное администрирование и DevOps для безопасного размещения и развертывания своего кода в облаке. Это не делает меня экспертом по каждой теме, но знание того, как работает каждый компонент, определенно делает меня лучшим разработчиком.
Наличие хотя бы базовых знаний о том, как работает Linux-сервер, сделает вас лучшим backend-разработчиком, а понимание сетевых технологий / кэширования / DevOps сделает вас лучшим front-end разработчиком.
А поскольку большинство действий на сервере Linux выполняется из командной строки, это идеальная отправная точка.
Поначалу это не все веселье и игры.
Для новичка выполнение задач из командной строки будет болезненным и медленным. Дайте себе достаточно времени и практики, чтобы создать нейронные пути, которые позволят вам «думать» в терминах командной строки. Через несколько недель выполнения небольших задач это станет таким же привычным, как дыхание, вам просто нужно будет немного заставить себя, чтобы добиться этого, и это будет того стоить.
Если вы хотите узнать больше на эту тему, попробуйте DivingLinux.