Comando History mostrando o diretório e a data

6

Existe uma maneira de ter no arquivo .bash_history, listado: o diretório onde o comando foi digitado, a data e o comando?

    
por Apahidean Iancu 13.11.2013 / 11:33

3 respostas

3

Comando History mostrando o diretório: NO! : (

Comando Histórico mostrando a data: SIM! :)

Isso é porque (de man history ):

The history list is an array of history entries.  A  history  entry is
declared as follows:

   typedef void * histdata_t;

   typedef struct _hist_entry {
     char *line;
     char *timestamp;
     histdata_t data;
   } HIST_ENTRY;

Então, nada sobre o diretório onde o comando foi digitado.

Para saber a hora exata em que determinado comando foi executado, consulte help history :

If the $HISTTIMEFORMAT variable is set and not null, its value is used
as a format string for strftime(3) to print the time stamp associated
with each displayed history entry.  No time stamps are printed otherwise.

Portanto, tudo o que você precisa fazer é definir $HISTTIMEFORMAT algo assim no shell do cliente:

export HISTTIMEFORMAT="%F %T "

Para defini-lo permanentemente, execute o seguinte comando:

echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc

O comando acima irá adicionar uma nova linha ( export HISTTIMEFORMAT="%F %T " ) no final do seu arquivo ~/.bashrc .

Agora, a saída de history será algo assim:

 ...
 1613  2013-11-13 13:00:15 cat .bash_history
 1614  2013-11-13 13:01:04 man history
 1615  2013-11-13 13:11:58 help history
 1616  2013-11-13 13:19:07 ls
 1617  2013-11-13 13:19:09 cd
 1618  2013-11-13 13:19:15 history
    
por Radu Rădeanu 13.11.2013 / 12:19
8

Você também pode escrever o diretório de trabalho atual em um arquivo histórico, mas precisa criar um arquivo histórico próprio:

Escreva o seu .bashrc da seguinte forma:

export CUSTOM_HISTFILE="/tmp/bash_history" #path of the new history file
export PROMPT_COMMAND="history -a; history -c; history -r; date | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; pwd | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; tail -n 1 $HISTFILE >>$CUSTOM_HISTFILE; $PROMPT_COMMAND"

É um pouco circunstancial, mas funciona. Uma entrada poderia ter esta aparência:

Mit Nov 13 13:44:39 CET 2013 - /home/test - ls -la
    
por chaos 13.11.2013 / 13:48
-1

Você pode, por favor, esclarecer sua pergunta um pouco. Existe um comando chamado fc (comando fixo) no Ubuntu que permite exibir o arquivo histórico, editar e reexecutar o comando anterior. Basicamente é o alias configurado para o comando history.

Por padrão,

fc  -l lists the 16 most recent commands.

Você também pode usar

history command itself to see the command history.
    
por Narwen 13.11.2013 / 12:13

Tags