Хитрости для программистов: пять команд Linux, с которыми ваша жизнь не будет прежней
- воскресенье, 29 декабря 2024 г. в 00:00:07
Интерфейс командной строки — это альфа и омега для большинства технарей, особенно для разработчиков и сисадминов. Чем бы вы ни занимались — скриптами, конфигурацией серверов или автоматизацией задач, — команды Linux сэкономят вам часы рабочего времени. Но если только вы умеете грамотно с ними обращаться.
Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.
В этой статье я расскажу вам о пяти командах, упрощающих жизнь разработчика. Это не просто удобные приёмы, которые не помешало бы знать. Эти команды сэкономят вам время и значительно повысят эффективность взаимодействия с терминалом.
Разработчикам часто приходится организовывать файлы и каталоги, особенно при управлении проектом или настройке структуры со сложными каталогами. Обычно для создания нескольких каталогов нужно набирать много однотипных названий. Но есть мощный приём: с помощью команды mkdir
и скобок {}
можно одним махом создать несколько каталогов.
Скажем, по проекту вам нужно создать структуру папок для разных сред (разработка, тестирование и продакшн) для нескольких сервисов. Вот как это выглядит, когда по привычке вы делаете это вручную:
mkdir dev
mkdir test
mkdir prod
Чем сложнее становится структура, тем утомительнее эта задача. Например, если вам нужны папки для backend
и frontend
сервисов во всех трёх средах, задача становится ещё сложнее.
Вместо того чтобы создавать каталог за каталогом по отдельности, можно объединить всё это в одну команду, применив mkdir
и скобки {}
. Это гораздо эффективнее, потому что создаёт сразу дерево директорий.
Например:
mkdir -p {dev,test,prod}/{backend,frontend}
Давайте разберём этот код:
Флаг -p
приказывает команде mkdir
создать необходимые родительские каталоги (то есть защитит вас от ошибки, на случай если родительские каталоги ещё не существуют).
Фигурные скобки {}
позволяют указать несколько опций, которые автоматически сочетаются друг с другом в команде mkdir
.
Первый сет {dev,test,prod}
создаёт каталоги для разных сред.
Второй сет {backend,frontend}
— каталоги для разных сервисов.
При выполнении этой команды создаётся следующая структура папок:
dev/
backend/
frontend/
test/
backend/
frontend/
prod/
backend/
frontend/
Этот метод значительно экономит время и сокращает вероятность ошибки из-за человеческого фактора, особенно если вам нужно настроить большой проект со сложными структурами папок. Все сочетания можно задать в одной лаконичной команде, а не набирать каждую комбинацию вручную.
Программистам часто приходится работать с глубоко вложенными каталогами. Например, вы переносите код, файлы конфигурации или логи из корневого каталога проекта в подкаталоги. И когда вам нужно вернуться туда, откуда вы начали, приходится вручную постоянно набирать cd ..
. Этот процесс раздражает и может привести к ошибкам.
Представьте, что вы работаете во вложенном каталоге:
/home/user/projects/webapp/src/frontend/components
Чтобы вернуться в корневой каталог проекта, обычно приходится несколько раз вводить cd ..
:
cd ..
cd ..
cd ..
cd ..
Целых четыре команды, чтобы просто вернуться в /home/user/projects/
. Согласитесь, это утомительно, и можно элементарно сбиться со счёта.
Есть простая и быстрая альтернатива — команда cd -
. Она мгновенно возвращает в предыдущий каталог, как бы глубоко вы ни спустились по вложенной структуре.
Команда cd -
не переходит вверх по дереву каталога, как команда cd ..
. По ней вы возвращаетесь в последний каталог, в котором были. Это почти как кнопка «Назад» в браузере.
Допустим, вы начали с корневого каталога проекта /home/user/projects/webapp/
и перешли во вложенный каталог /home/user/projects/webapp/src/frontend/components
. А потом несколько раз набрали cd ..
. Но можно вернуться назад, просто напечатав:
cd -
И вы тут же попадаете в /home/user/projects/webapp/
.
Команда cd -
запоминает предыдущий каталог, так что она быстро перекидывает вас из актуального каталога в предыдущий. Очень удобно перемещаться между двумя каталогами, особенно когда перепрыгиваешь между рабочим и глубоко вложенным каталогом.
Этот приём особенно полезен, когда вы занимаетесь отладкой или переходите из одной части проекта в другую и обратно. Если вам нужно часто переключаться между корневым каталогом и глубоко вложенным подкаталогом, cd -
избавляет от необходимости печатать длинный путь к файлу или пробираться в нужный каталог шаг за шагом.
Разработчикам часто приходится создавать несколько файлов, например, когда они генерируют тестовые файлы, плейсхолдеры или логи. Создать один файл недолго, а вот создавать файл за файлом довольно нудно. К счастью, в Linux можно создавать несколько файлов с помощью одной команды touch
и диапазона чисел в скобках {}
.
Допустим, вам нужно создать 100 нумерованных файлов для серии тестовых сценариев: test1.txt
, test2.txt
, и так до test100.txt
. Если делать это вручную с помощью отдельных команд touch
, весь процесс будет выглядеть примерно так:
touch test1.txt
touch test2.txt
touch test3.txt
...
touch test100.txt
Конечно, это долго и утомительно. Но есть способ быстрее.
Чтобы одним махом создать много файлов, применяйте команду touch
с диапазоном чисел в скобках {}
. Вот как это работает:
touch test{1..100}.txt
Для создания новых файлов используется команда touch
. Обычно мы применяем её следующим образом: touch filename.txt
.
Добавляя в скобки числовой диапазон {1..100}
, вы даёте командному интерпретатору Shell задачу, что нужно создать файлы с номером от 1 до 100.
В результате с помощью одной команды создаются файлы test1.txt
, test2.txt
, test3.txt
вплоть до test100.txt
.
Давайте разберёмся. Выполняем команду:
touch test{1..10}.txt
В каталоге создаются следующие файлы:
test1.txt
test2.txt
test3.txt
...
test10.txt
Этот метод позволяет мгновенно генерировать несколько файлов, а не создавать их вручную один за другим. Больше всего это подходит для сценариев, когда для тестирования или ведения логов нужны файлы-плейсхолдеры, или выполняется автоматизация процессов, для которых на входе нужно много файлов.
С помощью этого приёма можно быстро генерировать файлы лога для тестирования приложения, которое обрабатывает много файлов. Создавайте их одной командой, а не вручную файл за файлом. Таким образом вы высвободите время для написания и тестирования кода.
Программисты часто имеют дело с логами, особенно если они специализируются на бэкенд-системах. Опираясь на данные из логов, разработчики ищут ошибки, анализируют поведение системы или занимаются отладкой. В этом случае неэффективно снова и снова перебирать логи вручную. К счастью, команда tail
в реальном времени автоматически следит за обновлениями, показывая только что произошедшие изменения.
Допустим, вы работаете над приложением, и вам нужно отслеживать новые ошибки, которые заносятся в лог error_file.log
. Обычно для чтения последних нескольких строк файла используется команда tail
:
tail error_file.log
Хотя таким образом вы получите представление об актуальном состоянии файла, эта команда не выполняет обновление в реальном времени. Чтобы увидеть новые строки с изменениями, команду нужно повторить. Это неудобно, особенно если вы устраняете неисправности в работающей системе или мониторите логи событий в реальном времени.
С командой tail -f
вы будете сразу же узнавать об изменениях в логе. Вам не придётся повторять команду, чтобы увидеть, появились ли в файле новые строки.
tail -f error_file.log
Команда tail
показывает последние 10 строк файла.
Параметр -f
означает follow — в этом случае терминал остаётся открытым и непрерывно показывает новые строки файла по мере их появления.
Это особенно полезно при мониторинге лога во время выполнения приложения, поскольку сообщения об ошибках или результаты работы можно видеть в реальном времени.
Скажем, вы следите за входящими запросами и ошибками в логе веб-сервера:
tail -f /var/log/nginx/access.log
По мере поступления новых запросов вы сразу же увидите их в терминале. Не нужно обновлять или повторять команду — она непрерывно отслеживает обновления в файле.
Команду tail -f
очень удобно применять во время отладки. Представьте, что вы пытаетесь найти причину периодически возникающей проблемы в приложении. Отслеживая в реальном времени лог с ошибками, можно сразу же заметить сообщения об ошибках и безотлагательно принять меры.
Например, можно выполнить команду:
tail -f /var/log/app/error.log
В случае сбоя в приложении вы сразу же увидите всплывающее сообщение об ошибке и сможете быстро всё починить.
Если вы хотите следить за логом в реальном времени, но вас интересуют только отдельные записи, можно объединить tail -f
с grep
. Например:
tail -f error_file.log | grep "ERROR"
Эта команда показывает только строки со словом ERROR: таким образом вы отфильтруете в результатах лога нужную информацию.
Разработчикам часто приходится повторять определённые команды, например, во время компиляции кода, работы с файлами или перезапуска сервисов. Не так-то просто держать в памяти синтаксис уже выполненной команды или совершённые действия, особенно если вы работаете в терминале уже несколько часов.
На радость нам Linux отслеживает каждую команду в течение сессии. Команда history
показывает список выполненных команд, и с её помощью можно сэкономить силы и время.
Допустим, вы уже не первый час работаете и выполняли сложную команду grep
или find
. И знаете, что вам нужно будет использовать её несколько раз. Трудно запомнить точный синтаксис, так что приходится тратить время, вручную выискивая его в терминале.
Команда history
показывает список команд, выполненных ранее в текущей сессии Shell. По умолчанию она показывает историю всех команд, но число отображаемых команд можно ограничить.
Например:
history 5
Эта команда покажет пять последних выполненных вами команд, если вам понадобится их быстро найти и повторить.
history
сама по себе выводит всю историю команд за сессию.
Если добавить число (например, history 5
), вы ограничите список пятью командами и сможете сосредоточиться на последних задачах, с которыми работаете.
Например, если пять последних команд — это:
123 ls
124 cd src/
125 mkdir newdir
126 touch newfile.txt
127 history 5
После выполнения команды history 5
вы увидите:
123 ls
124 cd src/
125 mkdir newdir
126 touch newfile.txt
127 history 5
history
избавляет вас от необходимости начинать поиски с нуля, если вы забыли, какую команду выполняли. Она также пригодится для запоминания сложных команд с длинными флагами или параметрами, которые не хочется вводить по памяти.
Скажем, вы занимаетесь отладкой программы и выполняете несколько разных команд для компиляции, проверки логов и перезапуска сервиса. Теперь вам не нужно запоминать каждую команду или скроллить обратно в терминале до нужного места. Можно просто выполнить команду:
history 5
Вы увидите список последних пяти команд и можете повторить любую из них, приложив минимальные усилия.
Можно быстро повторить любую команду из истории с помощью восклицательного знака (!
), после которого стоит номер команды. Например, чтобы выполнить команду mkdir newdir
выше (под номером 125), надо просто напечатать:
!125
Не нужно вводить команду целиком. Этот приём действительно экономит время, особенно если вам приходится работать с длинными командами.
mkdir
со скобками одним махом создаёт несколько папок.
cd -
быстро возвращается в предыдущий каталог.
touch
с диапазоном чисел создаёт несколько файлов одновременно.
tail -f
позволяет в реальном времени отслеживать изменения в логах.
history 5
вызывает последние команды для повторного выполнения.
Чтобы расти, нужно выйти из привычной зоны и сделать шаг к переменам. Можно изучить новое, начав с бесплатных занятий:
Frontend-разработка: основы HTML, CSS и JavaScript;
Продакт-менеджер: практическое погружение в профессию;
Soft Skills: как мягко добиваться карьерных целей.
Или открыть перспективы и получить повышение с профессиональным обучением: