Как использовать команду "history" для запуска команды последнего запуска?
3 ответа
Вы бы не. Вы бы использовали !! ,
Как сказал Игнасио, используйте !! , но если вы настаиваете:
$(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)
Объяснение:
$()выполняет вывод команды внутриsed '$d'удаляет последнюю команду, то есть2001 $(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)sed -n '$p'печатает только последнюю строку, т.е.2000 yourpreviouscommandcut -d ' ' -f 3-удаляет первые три поля, разделенные пробелами, то есть<space>2000<space>
Я думаю, что это можно сделать более кратким и надежным, но пока это работает.
Изменить: Если вы хотите использовать history вместо !! потому что у используемой вами оболочки нет !! , не повезло тебе; history - это встроенная оболочка, а не программа. А у простых оболочек вряд ли будет, если их нет !! , Например, черта не:
imgx64@home:~$ dash
$ history
dash: history: not found
$
В Bash команда fc может делать то, что вы ищете.
От man bash:
...
Во второй форме команда повторяется после замены каждого экземпляра pat на rep. Полезный псевдоним для использования с этим -r="fc -s", так что при набореr ccзапускается последняя команда, начинающаяся сccа при набореrповторно выполняется последняя команда.
...
