Вы можете использовать расширение истории . Если команда rm
следует непосредственно за командой echo
, вы можете использовать !$
:
echo > '*'
rm !$
!$
- сокращение от !!:$
: повтор последнего слова ($
) последней команды (!!
).
Если есть команды между echo
и rm
, вы можете найти номер истории, используя fc -l
:
$ echo > '*'
$ cmd1
$ cmd2
$ cmd3
$ fc -l
[...]
27628 echo > '*'
27629 cmd1
27630 cmd2
27631 cmd3
$ rm !27628:$
!27628
расширяется до команды с таким номером в истории, и $
снова является последним словом этой команды.
Если вам нужно запустить это в скрипте, вы не сможете найти номер команды и вставить ее, но вы можете посчитать количество команд между echo
и rm
и использовать относительное событие. обозначение:
echo > '*'
cmd1
rm !-2:$
где !-2
относится к команде на две строки назад. Обратите внимание, что расширение истории по умолчанию отключено в неинтерактивных оболочках; использовать
shopt -o history
чтобы включить его.