history
является встроенной командой оболочки bash и sudo
не работает со встроенными командами оболочки.
Что такое встроенная команда, а что нет?
Я использовал команду, which
которая «возвращает пути к файлам (или ссылкам), которые будут выполняться в среде», чтобы подтвердить, что history
это не была внешняя (для bash) команда.
Например, бег
$ which history $
ничего не возвращает и код выхода равен 1 (одна или несколько указанных команд не существует или не исполняются) [FYI смотри код выхода с echo $?
] во время выполнения
$ which ls /bin/ls $
и код выхода 0 (все указанные команды найдены и выполнимы).
Кроме того, в bash вы можете найти справку для встроенных команд с помощью help
(или поиска на man bash
странице). Например, набрав
$ help history history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] Display or manipulate the history list. ...
показывает справочную информацию Bash. Запуск help non-bash-command
возвращает что-то похожее на это:
$ help ls bash: help: no help topics match `ls'. Try `help help' or `man -k ls' or `info ls'.
и код выхода 1
Так что же делал sudo?
Вы можете искать свою собственную историю sudo
команд вашего пользователя запускать (и не пропущен сохранением истории) с grep '^sudo' .bash_history
или history|less
или аналогичным.
Или в Ubuntu файл /var/log/auth.log
хранит записи о том sudo
, что делали для всех пользователей, ищет там «sudo» (другие дистрибутивы могут использовать файл /var/log/secure
) или может использовать
sudo grep sudo /var/log/auth.log
или запустить, sudo journalctl _COMM=sudo
если у вас есть systemd.
См. Вопрос «Подробно о командах sudo, выполняемых всеми пользователями» в Unix и Linux для более подробной информации.