У меня есть команда инкрементальной сборки для моего проекта, которая выведет что-то, если я сделаю чистую сборку, и что-то другое (меньшее), если я сделаю инкрементальную сборку.
Как мне сохранить это, если я уже запустил чистую сборку mycommand.sh
и вывод выводится в окне терминала (без использования копирования и вставки)?
Я забыл сделать
mycommand.sh > myfile.txt
или
mycommand.sh >> myfile.txt
для сохранения вывода в файл.
решение1
Хотя $(!!)
повторный запуск предыдущей команды может показаться (а иногда и быть) решением, у него также есть свои недостатки, с которыми вам придется столкнуться.в полной мерепонимать, как его использовать.
Пример: Если команда внесла некоторые изменения, например
rm -rv /tmp/*
будет сделано, то повторный запуск этой команды любым способом можетнетвыводит тот же вывод, что и раньше, за исключением того, что если /tmp/ был пуст до первого запуска и остается пустым во второй раз, вывод должен быть таким же.
Итог: нетбезопасныйспособ повторно использовать или сохранить (без копирования и вставки) вывод последней команды, если вы не сохранили его во время выполнения команды.
решение2
Это невозможно, поскольку bash не выделяет никаких выходных данных ни одному параметру или блоку в своей памяти.
Однако вы можете $(!!)
использоватьпересчитать(не использовать повторно) вывод последней команды.
Сам !!
по себе выполняет последнюю команду.
$ echo pierre
pierre
$ echo my name is $(!!)
echo my name is $(echo pierre)
my name is pierre
Источник:Повторное использование вывода последней команды в Bash