Por padrão, não há lugar onde todos os comandos sejam gravados e mantidos indefinidamente, embora ~/.bash_history
contenha os últimos comandos (se você usar bash
, que é o shell padrão no Ubuntu).
Se você deseja que todos os comandos digitados sejam bash
gravados para sempre , é necessário configurá-lo. Por exemplo, você pode colocar o seguinte em seu ~/.bashrc
arquivo para registrar todos os comandos digitados em um bash
shell no arquivo ~/.command_log
:
# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
\$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi
O exemplo acima ativa uma interceptação DEBUG
, que é executada imediatamente antes da execução de um comando comum. O caller
built-in é usado para testar se o comando está sendo digitado em um shell interativo ou executado através de algo parecido ~/.bashrc
. O valor ${BASH_COMMAND}
contém o comando que está sendo executado no momento.