Как объясняется в комментариях к вашему вопросу, переменная RELEASE_COMMAND_OUTPUT
получит только STDOUT
(стандартный вывод) вашей команды, но не STDERR
(стандартная ошибка), как это кажется вашим кейс.
Если вы сомневаетесь в выводе вашей команды, вы можете использовать подстановку процесса на , пометить STDERR
красным цветом , как в следующем примере:
command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
Это перенаправление (часть 2>
) STDERR
команды команды
в качестве входных данных для блока while
который напечатает его красным цветом в терминале.
Вы также можете сделать обратное, пометив STDOUT
красным цветом:
command | grep .
Поскольку grep действует только в STDOUT
ПРИМЕЧАНИЕ: в некоторых системах вам может понадобиться включите цвет в grep, используя флаг --color=auto
. В Macos и Linux обычно он включен по умолчанию.
две группы
-exec
дать истину или ложь, поэтому
find.. -exec grep foo {} \; -exec grep bar {} \;
не будет искать bar
в файле, если foo
не найден.
\;
это старая школа (вам нужно сбежать ;
), +
это новая школа.
Вы можете сделать так, как показано, чтобы получить результаты:
find loanwolf/. -type f -name '*.html' -exec grep -lHZ loanwolf_tags {} + |
xargs -r -0 grep -lH new_word
Здесь мы просматриваем обычные файлы с расширением html, скармливаем кучу из них grep и ищем в них строку тегов Loanwolf _. Опция -l
будет отображать имена файлов, в которых такая строка найдена и передана вперед в xargs
после добавления к именам файлов нуля \0
.
xargs
получит эти имена файлов и разделит их на нулевой символ, тем самым восстановив все типы имен файлов. Затем xargs будет собирать эти имена файлов и передавать их в grep
, искать новое слово _и отображать совпадающие имена файлов -.