Как использовать команду "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 yourpreviouscommand
cut -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
повторно выполняется последняя команда.
...