Лучшие практики для работы с командной строкой
Руководство по навигации, управлению процессами и работе с текстовыми файлами в командной строке. Узнайте, как использовать терминал для автоматизации повседневных задач благодаря bash-скриптам, планировщику задач и многооконному менеджеру.
1К открытий3К показов
Командная строка — интерфейс для управления компьютером, где вместо кнопок и меню используются текстовые команды. Вместо того, чтобы кликать мышкой по папкам, нужно ввести команду: «покажи содержимое этой папки» или «создай новый файл». Это мощный инструмент: изучение возможностей командной оболочки окупится вашей высокой продуктивностью.
Начнем с основ — навигации и принципов работы в терминале, которые должен знать каждый начинающий пользователь. Далее рассмотрим набор лучших инструментов, автоматизирующих рутинные задачи и ускоряющие работу в командной строке.
Настройка рабочего окружения
Самые популярные командные оболочки — Bash, Zsh и Fish.
Bash
На новых серверах с Unix-подобной системой установлен ненастроенный Bash: файлы и папки отображаются без цветовой схемы, командная строка не выводит текущее местонахождение в системе. Добавить эти функции можно в конфигурационном файле .bashrc.
Кроме цветовых схем и отображения директорий, в .bashrc можно создавать алиасы — псевдонимы, заменяющие вызовы громоздких команд простыми переменными.
Например:
Написанные для Bash скрипты будут работать практически везде. В отличие от оболочек вроде Zsh и Fish, Bash не требует сложной настройки — его функционала достаточно для большинства задач системного администрирования.
Zsh
Устанавливается из репозитория дистрибутива:
Zsh не отличается особой функциональностью по умолчанию, однако есть скрипт Oh My Zsh, расширяющий возможности командной оболочки. Это набор конфигурационных файлов и плагинов, созданных сообществом. Такие же готовые настройки есть для Bash и Fish.
Oh My Zsh добавляет новые функции:
- подсветку файлов и папок;
- отображение времени команд;
- автодополнение команд, исходя из истории ввода;
- отображение подсказок и др.
По аналогии с Bash, командную оболочку Zsh можно вручную настраивать в конфигурационном файле .zshrc.
Fish
Устанавливается из репозитория дистрибутива:
После установки Fish выведет ссылку на localhost, которая отправит на страницу настройки командной оболочки.
Сравнение Zsh, Fish и Bash
- Если начать вводить команду ls -a, то Bash при нажатии «Tab» ничего не сделает. Zsh и Fish на то же действие ответят интерактивной подсказкой: выведут все флаги для команды с кратким описанием и возможностью применения ключа.
- Zsh и Fish отличаются улучшенной навигацией по директориям. При вводе директории в Bash отображается лишь перечень возможных вариантов перемещения. Аналогичная команда в Zsh и Fish вызывает интерактивный список, в котором сразу можно выбрать директорию для перехода.
- Если ввести неправильную команду, Bash и Zsh выдадут ошибку только после попытки выполнения. Оболочка Fish предупредит о некорректном вводе до выполнения, окрасив строку в красный цвет.
- В Fish для математических вычислений есть команда math. В дефолтном Bash или Zsh те же операции выполнять сложнее.
- Fish поддерживает vim. Можно набрать команду и переключиться в визуальный режим. При этом в командной оболочке работает навигация из vim, сочетания клавиш для удаления, копирования и вставки строк.
- Синтаксис Fish и Bash отличается. Поэтому Fish обычно используют для интерактивной работы (из-за удобного автодополнения, подсветки синтаксиса и т. д.), но пишут скрипты на Bash для лучшей совместимости.
Несмотря на преимущества Fish, стоит учитывать, что она сложнее в настройке, особенно когда ресурсы сервера ограничены. Можно настроить Bash аналогично Fish, но это займет немало времени.
Эффективная навигация по файловой системе
Для перемещения по файловой системе в Bash есть 4 основные команды: pwd, cd, ls, find.
Текущая директория
В первую очередь нужно знать свое местонахождение в системе. Определить его можно командой pwd, которая выводит полный путь текущей директории.
С помощью флагов можно получить путь логический (-L, по умолчанию) или реальный (-P):
В большинстве случаев достаточно pwd без опций.
Быстрое перемещение между директориями
cd — команда для перемещения в системе:
Из любого места можно быстро вернуться в домашний каталог /home/пользователь/ или сразу перейти в подкаталог (например, /home/пользователь/Documents):
Bash поддерживает функцию автодополнения: можно написать первые буквы из названия папки и автоматически дописать путь нажатием «Tab».
Если папок с одинаковым началом несколько, нужно дважды нажать «Tab» — командная строка выведет все варианты написания. Bash будет ожидать, что пользователь продолжит ввод, пока не останется один возможный вариант.
Автодополнение в командной строке Bash адаптируется под контекст команды. Например, для cd дополняются названия каталогов, для cat — названия файлов, для ssh — имена хостов, а для chown — имена пользователей.
Просмотр содержимого директорий
ls — команда для просмотра списка файлов и каталогов. Без параметров она показывает файлы и папки в текущей директории:
У команды ls множество опций. Основные из них:
Поиск файлов
Find находит файлы по критериям: названию, дате изменения, размеру и др.
Команда состоит из трех частей:
Find поддерживает опции -delete, -ls и др. С помощью -exec можно выполнять преобразования самописными функциями. Полный разбор возможностей Find — тема для отдельной статьи.
Работа с историями команд в Bash
С нуля вводить предыдущую команду, чтобы изменить один флаг, — непродуктивно. Командная строка Bash запоминает историю ввода. Листать команды можно стрелками вверх и вниз, и посмотреть все предыдущие команды одним списком:
Рекомендуется установить следующие параметры хранения последних команд в ~/.bashrc:
По умолчанию каждая сессия Bash перезаписывает историю. Если вводить команды в два терминала, а потом закрыть их, то сохранятся только команды из последнего закрытого терминала — это неудобно.
Чтобы такого не происходило, нужно добавлять команды в конец файла истории. Для этого в ~/.bashrc нужно добавить следующее:
Стандартное использование клавиш-стрелок для навигации по истории команд не всегда доступно. В таких случаях можно использовать альтернативные сочетания:
- Ctrl + p — переход к предыдущей команде;
- Ctrl + n — переход к следующей команде;
- Alt + < — переход к первой команде в истории;
- Alt + > — переход к последней команде в истории.
Чтобы не листать все предыдущие команды, можно ввести только ее фрагмент и выполнить поиск по совпадениям сочетанием Ctrl+R.
Управление процессами и ресурсами
Умение отслеживать запущенные процессы и при необходимости завершать зависшие программы помогает поддерживать стабильность системы. Для этого можно использовать один из трех инструментов: top, htop или ps.
top — как диспетчер задач в Windows. После ввода команды в терминале отображается список всех запущенных процессов и обновляется в реальном времени.
htop — более удобная версия top. Инструмент показывает ту же информацию, но в цвете, с возможностью прокрутки, с поддержкой мыши и графиками загрузки процессора.
htop нет в дефолтном Bash. Установка выполняется командой:
Еще список процессов можно отобразить командой ps. Она выводит список запущенных программ в моменте и не обновляет данные, как top и htop.
Фоновые процессы
Иногда нужно запустить программу в фоне или перевести ее туда. Сделать это можно, добавив символ «&» в конец командной строки.
Для перевода работающей программы в фон нужно нажать Ctrl+Z, чтобы приостановить. Затем необходимо ввести bg для запуска процесса в фоновом режиме и fg, чтобы вернуть из фона.
Список всех фоновых задач можно увидеть, если ввести команду jobs.
Если программа зависла или ее нужно остановить, поможет команда kill. Для завершения необходимо знать PID процесса (отображается в таблице top, htop и ps):
Работа с текстовыми данными
Рассмотрим основные инструменты и приемы для работы с текстовыми данными в командной строке.
Базовые команды для работы с текстом: cat, grep, awk, sed
cat
Команда cat используется для просмотра содержимого файлов и объединения.
Просмотр содержимого:
Объединение нескольких файлов:
grep
Команда grep ищет текст по шаблону:
Найти строки «error» в файле:
Показать номера строк с совпадениями:
awk
Команда awk запускает инструмент для обработки текста по столбцам:
Вывод первого столбца из файла:
Сумма чисел в первом столбце:
sed
Команда sed используется для замены текста:
Замена первого вхождения «old» на «new»:
Удаление пустых строк:
Конвейеры
Передавать вывод одной команды на вход другой можно при помощи конвейеров.
Поиск строк с «error» и подсчет их количества:
Вывод первых 15 строк с «error»:
Когда данные передаются через конвейер, они обрабатываются последовательно. Система не ждет завершения работы первой команды, чтобы начать выполнение второй.
Перенаправление ввода и вывода
В Bash можно изменять стандартные потоки команд, направляя их в файлы или от файлов, а также связывая между собой.
Операторы перенаправления
«>» — перенаправляет стандартный вывод команды в файл, создавая его, если он не существует, или перезаписывая, если файл уже существует.
«>>» — перенаправляет стандартный вывод команды в конец файла, не перезаписывая его.
«<» — перенаправляет содержимое файла на стандартный ввод команды.
«2>» — перенаправляет стандартный поток ошибок в файл.
«&>» — перенаправляет стандартный вывод и стандартный поток ошибок в один файл.
Перенаправление в командной строке используется вместе с конвейерами для более гибкой обработки данных.
Автоматизация и скрипты
В командной строке можно написать скрипт для автоматизации рутинных задач.
Bash-скрипты — файлы с последовательностью команд, которые выполняются одна за другой. Они имеют расширение .sh и начинаются с #!/bin/bash.
Пример простого bash-скрипта для резервного копирования:
В Bash-скриптах также применимы циклы (for, while) и условия (if, case) для управления потоком выполнения.
Например, можно написать скрипт, который проверяет наличие файла и выполняет определенные действия, если файл существует или не существует.
Если еще немного усложнить задачу, то можно сделать так, чтобы скрипт без участия пользователя запускался в указанное время.
Планировщики задач
Планировщик Cron откладывает автоматический запуск скрипта с заданным интервалом. У каждого пользователя есть свой файл crontab, в котором можно указать команды и время их выполнения. Формат записи в crontab: минуты, часы, день месяца, месяц, день недели, команда.
Например, «0 1 * * * backup.sh» будет запускать скрипт backup.sh каждый день в 1:00.
At — упрощенный аналог Cron. Утилита используется для однократного выполнения задач в указанное время.
Безопасность в командной строке
При работе в командной строке важно следить за правами доступа к файлам и директориям. Две ключевые команды для этого — chmod и chown.
chmod изменяет права доступа к файлам и папкам. С ее помощью можно указать, кто может читать, записывать и выполнять файл или директорию. Например:
Команда дает владельцу файла права на чтение и запись (6), а остальным пользователям — только на чтение (4).
chown используется для смены владельца файла или директории. Например:
Команда назначает пользователя «vadim» владельцем файла «document.txt», а группу «admin» — группой-владельцем.
Еще один аспект безопасности в командной строке — использование sudo. Команда дает временные права суперпользователя (root) и разрешает программе вносить изменения в систему. Следует использовать sudo с осторожностью:
- проверять команды перед выполнением с sudo;
- использовать sudo только когда это действительно необходимо.
Работая в командной строке, рекомендуется придерживаться принципа минимальных привилегий — давать пользователям и процессам только те права, которые им необходимы для работы.
Инструменты для повышения продуктивности
Напоследок перечислим лучшие инструменты, которые упрощают работу с командной строкой.
Менеджеры пакетов
Упрощают установку, обновление и удаление программ в Linux.
Три популярных менеджера пакетов:
- apt — используется в Debian, Ubuntu и других дистрибутивах на базе Debian;
- yum — используется в Red Hat, CentOS и Fedora;
- brew — популярный менеджер пакетов для macOS.
Многооконные менеджеры
Делят терминал на несколько панелей, чтобы работать с ними одновременно.
Два популярных инструмента: tmux и screen.
С их помощью можно открывать терминальные сессии (для разных проектов) и переключаться между ними. Еще интереснее то, что с помощью плагина tmux-tpm менеджер сохранит эти сессии при перезагрузке компьютера.
Расширенные текстовые редакторы
Текстовые редакторы упрощают работу с кодом:
- vim — популярный редактор с режимами вставки и команд. В одном режиме можно вводить текст, в другом — выполнять команды для редактирования. Еще vim поддерживает горячие клавиши и команды.
- nano — простой редактор. Он подходит для быстрого редактирования файлов без необходимости изучать множество команд, как в vim.
Vim превосходит традиционные IDE. Он быстрее работает на слабых машинах, универсально поддерживает практически все языки программирования и форматы файлов через единый интерфейс, может работать полностью в консольном режиме. Vim масштабируется, и его конфигурация легко переносится между разными системами.
Используйте эту статью как чек-лист для оценки эффективности вашей работы в терминале. Посмотрите, какие из инструментов могли бы упростить повседневные задачи:
- возможно, вам стоит попробовать новую командную оболочку: Fish или Zsh;
- или освоить продвинутую навигацию по файловой системе;
- или начать использовать многооконные менеджеры;
- или автоматизировать рутинные операции с помощью скриптов.
Начните с небольших улучшений рабочего процесса, они повысят ваши навыки работы с командной строкой и продуктивность в долгосрочной перспективе.
А если хотите овладеть командной строкой как настоящий профи — Собрали полезные инструменты и команды тут
1К открытий3К показов