Como ver os carimbos de hora na história do bash?


259

Existe alguma maneira de ver em que horário os comandos foram executados a partir do histórico do bash? Podemos ver a ordem, mas há alguma maneira de obter tempo também?

Bottom Line: Tempo de execução no histórico do Bash


7
Estou surpreso com o quão pouco documentado isso é, tanto no Linux quanto no BSD nas páginas de manual.
Sridhar Sarnobat


4
se você estiver usando zsh:history -E
Vahid

4
Não sei por que duas respostas abaixo sentem a necessidade de dizer-lhe como abrir um terminal ..
mwfearnley

2
De acordo com o blog referenciado por @ dog0, o timestampse aparentemente não é salvo, a menos que a HISTTIMEFORMATvariável tenha sido definida quando os comandos foram emitidos. Em outras palavras, se você não o tiver definido, a configuração agora não ajudará a recuperar os carimbos de data e hora dos comandos emitidos anteriormente.
Tomislav Nakic-Alfirevic 17/01

Respostas:


317

Pressione Ctrl+ Alt+ Tpara abrir o Terminal e execute o comando abaixo:

HISTTIMEFORMAT="%d/%m/%y %T "

Ou, para tornar a alteração permanente para o usuário atual:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

Então

history

Para obter mais informações, consulte man bash ou Um índice AZ da linha de comando do Bash para Linux .

Para comandos que foram executados antes da HISTTIMEFORMAT definição, o horário atual será salvo como o carimbo de data / hora. Os comandos executados após a HISTTIMEFORMATdefinição terão o carimbo de data / hora adequado salvo.


7
Por que declarar com exportin .bash_profile? É uma variável lida apenas por bash, não por comandos iniciados a partir dela, portanto, não deve ser exportada.
Alvaro Gutierrez Perez

71
Observe que isso registrará apenas registros de data e hora para novos itens do histórico , depois de HISTTIMEFORMATdefinido para sessões, ou seja, você não pode usá-lo retrospectivamente. Algumas respostas aqui dão a impressão de que o comando history mostra imediatamente entradas com registro de data e hora
Louis Maddox

10
@ Louis - Na verdade, isso funcionou para mim retroativamente para mim?!?!
stephenmm

19
@ Jamil: para as pessoas que seguem os padrões ISO, é "% y-% m-% d" para a parte da data;)
Gauthier

13
@Gauthier - na verdade, basta usar% F para a data ISO ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns

73

Abra o terminal Ctrl+ Alt+ Te execute,

HISTTIMEFORMAT="%d/%m/%y %T "

então,

history

Para tornar as alterações permanentes, siga as etapas abaixo,

gedit ~/.bashrc

você precisa adicionar a linha abaixo ao arquivo .bashrc e salvá-lo,

export HISTTIMEFORMAT="%d/%m/%y %T "

execute o comando abaixo para originar o arquivo .bashrc,

source ~/.bashrc

Depois disso, execute o historycomando.

insira a descrição da imagem aqui

fonte : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/


Obrigado por responder, \ será uma mudança permanente?
rɑːdʒɑ

1
Ei, eu estou fazendo isso no OS X e Windows (através do MINGW) e adicionando-o ao .bash_profile, qual é a diferença entre profile e rc?
LasagnaAndroid

18

Sim, você pode: se você definir $HISTTIMEFORMAT, o .bash-historytimestamp será corretamente. Isso não ajuda no .bash-historyconteúdo existente , mas ajudará no futuro.


1
você pode expandi-lo para obter mais clareza?
rɑːdʒɑ

5
Correção na postagem anterior: A configuração de HISTTIMEFORMAT permite a exibição dos carimbos de hora ... mesmo existentes. O meu favorito é: HISTTIMEFORMAT = '% F% T', pois não importa de que país você mora ... todos sabem imediatamente que horas são. :)

4
Eu configurei $ HISTTIMEFORMAT e recebi os horários de hoje mesmo antes dos comandos deste conjunto.
Yasin Okumuş

@ user491029 "... mesmo existente". Isso é verdade, mas enganoso. No ubuntu 14.04, pelo menos, ele começou a mostrar registros de data e hora para todas as entradas do histórico depois de definir HISTTIMEFORMAT, mas parece que os registros de data e hora para qualquer comando executado antes da sessão atual eram o registro de data e hora de login da sessão atual.
jbobbins 27/06

1

Você verá alterações no próximo login.

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc

0

Para habilitar os registros de data e hora do histórico para todos os usuários, crie um script em /etc/profile.d:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh

1
Provavelmente, isso não funcionará para usuários que efetuam login através da GUI, pois o terminal padrão não executará shells de login. /etc/bash.bashrcseria um lugar melhor.
muru

0

Eu sei, estou respondendo muito tarde, mas para fazer isso para todos os usuários, você pode criar qualquer .sharquivo /etc/profile.de adicionar a seguinte linha:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

Se você não efetuou login como rootsuperusuário, precisará usar o teecomando para fazer isso:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

Se você deseja anexar a qualquer arquivo existente, passe o -asinalizador para o teecomando:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

insira a descrição da imagem aqui


Olá Shashank, Obrigado por adicionar a resposta, mas como essa resposta é diferente das outras? Se sua resposta for completamente diferente, ficaremos felizes em tê-la, mas, se não, você poderá melhorar as respostas existentes.
rɑːdʒɑ 22/07

Olá, obrigado por comentar. Isso é diferente dos outros da seguinte maneira: 1. Alguns deles mencionaram a criação para todos os usuários, mas ninguém mencionou a criação / explicação de qualquer nome de arquivo /etc/profile.d. timestamp.shparece muito próximo do técnico (cria confusão), então usei o nome existing-foo-file.sh(conceito foo-bar). 2. Ninguém mencionou o uso com usuários não-root. Então, eu dei um exemplo de uso sudo. 3. O terceiro exemplo aprimora o segundo exemplo de anexação a um arquivo existente. Como os iniciantes em linux / unix podem enfrentar esse problema, eu expliquei.
Shashank Agrawal 22/07
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.