habrahabr

Хитрости для программистов: пять команд Linux, с которыми ваша жизнь не будет прежней

  • воскресенье, 29 декабря 2024 г. в 00:00:07
https://habr.com/ru/companies/netologyru/articles/870148/

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

Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.

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

Создаём несколько папок с помощью mkdir и скобок {}

Разработчикам часто приходится организовывать файлы и каталоги, особенно при управлении проектом или настройке структуры со сложными каталогами. Обычно для создания нескольких каталогов нужно набирать много однотипных названий. Но есть мощный приём: с помощью команды mkdir и скобок {} можно одним махом создать несколько каталогов.

В чём проблема

Скажем, по проекту вам нужно создать структуру папок для разных сред (разработка, тестирование и продакшн) для нескольких сервисов. Вот как это выглядит, когда по привычке вы делаете это вручную:

mkdir dev
mkdir test
mkdir prod

Чем сложнее становится структура, тем утомительнее эта задача. Например, если вам нужны папки для backend и frontend сервисов во всех трёх средах, задача становится ещё сложнее.

Решение: mkdir со скобками {}

Вместо того чтобы создавать каталог за каталогом по отдельности, можно объединить всё это в одну команду, применив 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 -, а не повторяем команду cd ..

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

В чём проблема

Представьте, что вы работаете во вложенном каталоге:

/home/user/projects/webapp/src/frontend/components

Чтобы вернуться в корневой каталог проекта, обычно приходится несколько раз вводить cd ..:

cd ..
cd ..
cd ..
cd ..

Целых четыре команды, чтобы просто вернуться в /home/user/projects/. Согласитесь, это утомительно, и можно элементарно сбиться со счёта.

Решение: cd -

Есть простая и быстрая альтернатива — команда cd -. Она мгновенно возвращает в предыдущий каталог, как бы глубоко вы ни спустились по вложенной структуре.

Как это работает

Команда cd - не переходит вверх по дереву каталога, как команда cd ... По ней вы возвращаетесь в последний каталог, в котором были. Это почти как кнопка «Назад» в браузере.

Допустим, вы начали с корневого каталога проекта /home/user/projects/webapp/ и перешли во вложенный каталог /home/user/projects/webapp/src/frontend/components. А потом несколько раз набрали cd ... Но можно вернуться назад, просто напечатав:

cd -

И вы тут же попадаете в /home/user/projects/webapp/.

Что под капотом

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

Как это применять на практике

Этот приём особенно полезен, когда вы занимаетесь отладкой или переходите из одной части проекта в другую и обратно. Если вам нужно часто переключаться между корневым каталогом и глубоко вложенным подкаталогом, cd - избавляет от необходимости печатать длинный путь к файлу или пробираться в нужный каталог шаг за шагом.

Быстро создаём несколько файлов с помощью touch и диапазона чисел

Разработчикам часто приходится создавать несколько файлов, например, когда они генерируют тестовые файлы, плейсхолдеры или логи. Создать один файл недолго, а вот создавать файл за файлом довольно нудно. К счастью, в Linux можно создавать несколько файлов с помощью одной команды touch и диапазона чисел в скобках {}.

В чём проблема

Допустим, вам нужно создать 100 нумерованных файлов для серии тестовых сценариев: test1.txt, test2.txt, и так до test100.txt. Если делать это вручную с помощью отдельных команд touch, весь процесс будет выглядеть примерно так:

touch test1.txt
touch test2.txt
touch test3.txt
...
touch test100.txt

Конечно, это долго и утомительно. Но есть способ быстрее.

Решение: touch с диапазоном чисел и скобками {}

Чтобы одним махом создать много файлов, применяйте команду 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 -f

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

В чём проблема

Допустим, вы работаете над приложением, и вам нужно отслеживать новые ошибки, которые заносятся в лог error_file.log. Обычно для чтения последних нескольких строк файла используется команда tail:

tail error_file.log

Хотя таким образом вы получите представление об актуальном состоянии файла, эта команда не выполняет обновление в реальном времени. Чтобы увидеть новые строки с изменениями, команду нужно повторить. Это неудобно, особенно если вы устраняете неисправности в работающей системе или мониторите логи событий в реальном времени.

Решение: tail -f отслеживает обновления в реальном времени

С командой 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 с grep. Например:

tail -f error_file.log | grep "ERROR"

Эта команда показывает только строки со словом ERROR: таким образом вы отфильтруете в результатах лога нужную информацию.

Просматриваем недавние команды с помощью history 5

Разработчикам часто приходится повторять определённые команды, например, во время компиляции кода, работы с файлами или перезапуска сервисов. Не так-то просто держать в памяти синтаксис уже выполненной команды или совершённые действия, особенно если вы работаете в терминале уже несколько часов.

На радость нам Linux отслеживает каждую команду в течение сессии. Команда history показывает список выполненных команд, и с её помощью можно сэкономить силы и время.

В чём проблема

Допустим, вы уже не первый час работаете и выполняли сложную команду grep или find. И знаете, что вам нужно будет использовать её несколько раз. Трудно запомнить точный синтаксис, так что приходится тратить время, вручную выискивая его в терминале.

Решение: history 5, запоминающая последние команды

Команда 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

Не нужно вводить команду целиком. Этот приём действительно экономит время, особенно если вам приходится работать с длинными командами.

Выжимка: пять команд Linux для оптимизации рабочего процесса

  • mkdir со скобками одним махом создаёт несколько папок.

  • cd - быстро возвращается в предыдущий каталог.

  • touch с диапазоном чисел создаёт несколько файлов одновременно.

  • tail -f позволяет в реальном времени отслеживать изменения в логах.

  • history 5 вызывает последние команды для повторного выполнения.

Чтобы расти, нужно выйти из привычной зоны и сделать шаг к переменам. Можно изучить новое, начав с бесплатных занятий:

Или открыть перспективы и получить повышение с профессиональным обучением: