Вы можете создать псевдоним xo
(назовите его как угодно), который повторно запускает последнюю команду без вывода какого-либо ее вывода, а затем запускает последнюю строку этого вывода в качестве команды.
alias xo='$($(fc -ln -1) |& tail -1)'
Затем, после того как вы попытаетесь запустить myapp
и получите команду, которую вы можете использовать для установки mypackage
которая предоставляет myapp
, вы можете просто набрать xo
и нажать Enter, и команда для установки mypackage
будет запущена.
Как это работает
$(fc -ln -1)
ведет себя как расширение истории !!
, !!
не работает в определении псевдонима или функции, но fc
(и подстановка команд с $(
)
) работает.
$(fc -ln -1) |& tail -1
перезапускает последнюю команду, передавая ее стандартный вывод и стандартную ошибку в tail -1
, который отбрасывает все, кроме последней строки.
Включение этого во внешнюю команду подстановки приводит к тому, что последняя строка запускается как команда. На нем выполняется разбиение по словам (поскольку все это не заключено в "
кавычки»), что вам и нужно.
Источники цитируются