Почему я изучил командную строку Linux как разработчик, и вам тоже стоит это сделать

Когда начинаешь свой путь разработчика, всегда страшно оказаться перед командной строкой. У нас есть возможность жить в мире, где вы можете сделать практически все, что угодно, с помощью удобного графического интерфейса, так зачем же работать со старым добрым терминалом?

Читайте оригинальную статью на 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.

Оцените статью
devanswers.ru
Добавить комментарий