На главную
DevOps и серверы
Разбор shell-команды
Разбирает длинную команду на части и объясняет по-русски каждый флаг, перенаправление и оператор. Полезно, когда команду скопировали из статьи и хочется понять, что она сделает, до того как нажать Enter.
grep -rn --include=*.js TODO src/
grepкомандаИщет строки по образцу.
-rnфлаг-r — рекурсивно по каталогу; -n — печатать номер строки
--include=*.jsфлагискать только в файлах по маске → «*.js»
TODOаргументобразец, затем файлы (в кавычках — оболочка не разбивает по пробелам и не раскрывает маски)
src/аргументобразец, затем файлы
|Конвейер: то, что первая команда вывела в stdout, приходит второй на stdin.
head -20
headкомандаПечатает начало файла.
-20флагсокращённая запись количества: то же, что -n 20
Операторы и перенаправления
Между командами
| | | Конвейер: то, что первая команда вывела в stdout, приходит второй на stdin. |
| |& | Конвейер вместе с ошибками: stdout и stderr уходят следующей команде (bash). |
| && | Следующая команда выполнится, только если предыдущая завершилась успешно (код 0). |
| || | Следующая команда выполнится, только если предыдущая завершилась с ошибкой. |
| ; | Просто разделитель: следующая команда выполнится в любом случае. |
| & | Запуск в фоне: оболочка не ждёт завершения и сразу возвращает приглашение. |
Потоки
| > | Перезаписывает файл выводом команды (stdout). Прежнее содержимое теряется. |
| >> | Дописывает вывод (stdout) в конец файла. |
| < | Берёт содержимое файла на вход команде (stdin). |
| << | Heredoc: на вход идёт текст до строки-ограничителя. |
| <<< | Here-string: на вход идёт одна строка. |
| 2> | Перенаправляет поток ошибок (stderr) в файл. |
| 2>> | Дописывает поток ошибок (stderr) в конец файла. |
| &> | Перенаправляет и вывод, и ошибки в один файл. |
| &>> | Дописывает вывод и ошибки в конец файла. |
| 2>&1 | Поток ошибок направляется туда же, куда уже направлен stdout. Порядок важен: после «> файл», а не до. |
| 1>&2 | Обычный вывод направляется в поток ошибок. |
| >&2 | Обычный вывод направляется в поток ошибок. |