Командная строка

Операторы командной строки

Операторы командной строки — это специальные символы, которые помогают управлять выполнением команд и их взаимодействием друг с другом. Их можно представить как «клей», который соединяет разные команды или направляет поток информации. Эти операторы решают типичные задачи в терминале: сохранение вывода команды в файл, последовательный запуск нескольких команд или использование результата работы одной команды в качестве входных данных для другой.

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

Операторы перенаправления (>, >>)

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

Вот простое мнемоническое правило, чтобы запомнить разницу:

  • >: 1 стрелочка = сохранить 1 вещь = сохранить моё
  • >>: 2 стрелочки = сохранить 2 вещи = сохранить твоё и моё

Запись куска текста в файл:

echo "Hello, World!" > hello.txt

Добавление последних 5 коммитов в файл со списком изменений (changelog):

git log -5 --oneline >> CHANGELOG.md

Оператор конвейера или пайп (|)

Оператор пайпа (или конвейера) берёт вывод одной команды и использует его как входные данные для другой. Создаётся своего рода «трубопровод», по которому данные перетекают от одной команды к другой, как вода по соединённым трубам.

Поиск коммитов, в сообщении которых есть слово fix:

Linux/macOS:

git log --oneline | grep "fix" | sort

PowerShell:

git log --oneline | Select-String "fix" | Sort-Object

Логические операторы (&&, ||)

Логические операторы, как и в языках программирования, управляют ходом выполнения команд на основе успеха или неудачи предыдущих действий.

  • &&: запускает следующую команду, только если предыдущая завершилась успешно (код выхода 0).
  • ||: запускает следующую команду, только если предыдущая завершилась с ошибкой (ненулевой код выхода).

Добавление файлов в область подготовки и создание коммита, только если добавление прошло успешно:

git add . && git commit -m "Update documentation"

Попытка выполнить pull; если не выйдет, тогда просто fetch:

git pull origin main || git fetch origin