Como eu posso registrar cada novo comando que eu uso, e possivelmente marcar o timestamp?

5

Estou no Linux há mais de 6 meses, mas nunca entrei muito na CLI (interface de linha de comando ou terminal ou shell)

Agora, enquanto faço perguntas aqui, recebo respostas ou ajudo de outros sites, aprendo novos comandos ...

Como posso armazenar cada novo comando em um arquivo de texto? Somente comandos novos / exclusivos , não repetições do mesmo comando.

Veja um exemplo:

  1. No terminal, eu insiro os comandos como este -
$  command1
$  command2
$  command3
$  command4
$  command1
  1. Agora, esses comandos devem ser salvos em um arquivo de texto, digamos commandrec como este
command1
command2
command3
command4

NOTA: O último comando no terminal que foi novamente command1 não é gravado / salvo novamente no arquivo de texto.

E na próxima vez que eu abrir o terminal, e entrar com um novo comando command 5 , ele deve ser adicionado à lista em commandrec

(mas se o comando foi usado anteriormente em outra data, ele ainda deve ser ignorado. Por exemplo, command 1 inserido novamente com command 5 na um novo dia / hora, mas command1 não registrado como já usado)

  1. O arquivo commandrec será parecido com este
31/05/12 12:00:00
command1
command2
command3
command4
01/06/12 13:00:00
command 5

(o horário e a data seriam ótimos, se possível, mas tudo bem, mesmo que não esteja lá)

Dessa forma, posso ter um registro de todos os comandos usados por mim até o momento.

Como isso pode ser feito?

    
por Nirmik 01.06.2012 / 09:10

6 respostas

5

Como experimentar com sucesso a alteração dessas configurações em .bashrc

  • Antes de experimentar : salve seu .bash_history atual em outro arquivo com cp .
  • Enquanto experimenta com o que funciona: rm ~/.bash_history depois de alterar .bashrc com parâmetros de controle de histórico, caso contrário, a combinação de entradas antigas e novas pode gerar resultados estranhos.
    • , por exemplo, todas as entradas antes de os carimbos de hora serem ativados mostrarão a mesma data / hora atual!
  • Quando você encontrar algo que funcione , NÃO rm mais !!

  • Observe também que quaisquer alterações em .bashrc são refletidas somente quando você sai e instancia um novo terminal / shell.

Aumentando o tamanho do histórico e eliminando duplicatas

  • Adicione estas linhas ao seu ~/.bashrc :

    export HISTCONTROL=erasedups
    export HISTSIZE=10000
  • O tamanho do histórico é definido como 10000, as duplicatas são eliminadas automaticamente, por isso há muito espaço:)

Registro de data e hora

  • O tempo pode ser definido facilmente adicionando outra linha do formulário export HISTTIMEFORMAT="%F %T" , isso exibirá a hora / data antes de cada linha ao usar history
    • Exemplo:
      izx@preciseunity:~$ history
      1  2012-06-01 07:16:22 rm ~/.bash_history
      2  2012-06-01 07:16:23 exit
      3  2012-06-01 07:16:27 ls
      4  2012-06-01 07:16:31 test
      5  2012-06-01 07:16:34 ls /etc
      6  2012-06-01 07:16:36 down
      7  2012-06-01 07:16:37 up
      8  2012-06-01 07:16:40 hustory
      9  2012-06-01 07:16:48 history
      
    • Note que, como os duplicados são eliminados, a hora mostrada para um comando é a última última (mais recente) vez em que ele foi executado pela última vez.
    • Você pode personalizar o HISTTIMEFORMAT para sua escolha / localidade com base em strftime
por ish 01.06.2012 / 16:21
3

Seu objetivo é aprender novos comandos? Recomendo usar o CLI Companion :

O CLI Companion é uma ferramenta para armazenar e executar comandos do Terminal a partir de uma GUI. Pessoas não familiarizadas com o Terminal acharão o CLI Companion uma maneira útil de se familiarizar com o Terminal e liberar seu potencial. Usuários experientes podem usar o CLI Companion para armazenar sua extensa lista de comandos em uma lista pesquisável.

Você obtém executando:

sudo add-apt-repository ppa:clicompanion-devs/clicompanion-nightlies
sudo apt-get update
sudo apt-get install clicompanion

Se você não quiser adicionar o PPA, tente este arquivo para 12.04 (versão mais recente 1.1-6, lançado em 2012-04-14 - verifique esta página para versões mais recentes.) - ou remova o PPA após instalar com sudo add-apt-repository -r ppa:clicompanion-devs/clicompanion-nightlies .

PS: Eu encontrei esta pergunta que pode ser útil também.

    
por Jakob 01.06.2012 / 10:38
1

Indo na sugestão de Dirk de passar por .bash_history e a sugestão de chris de usar o comando sort , o que você provavelmente quer fazer é:

cat ~/.bash_history | sed 's/sudo //g' | sort -u +0 -0 | cut -d\  -f1 > commandrec.txt

O segundo comando no pipeline irá deletar ocorrências de 'sudo', então quando você ordenar você irá ordenar os comandos que você pode digitar somente após invocar sudo .

O histórico do Bash não rastreia a hora / data em que o comando foi usado, mas logo acima da minha cabeça, você pode escrever um script que será invocado quando você sair do terminal. O script chamaria o comando acima (mas salve em commandrec- $ DATE.txt, em que você tem algo como DATE = 'date "+% Y-% m-% dT% H:% M:% S"'). Então você poderia diferenciar com .bash-history e manter apenas os novos comandos em commandrec- $ DATE.txt. Então você teria uma coleção de arquivos datados de commandrec. Na verdade, como .bash_history é limitado (acho que o padrão em meu sistema era 500), provavelmente você deve diferenciar com o arquivo obtido por cat -em todos os seus arquivos commandrec * .txt e .bash_history .

Então, sempre que você quiser ver todos os seus comandos até o momento, você poderá colocar todos os seus arquivos em um arquivo.

    
por Chan-Ho Suh 01.06.2012 / 13:51
1

O registro de data e hora é fácil. Para fazer isso, basta adicionar a seguinte linha a "~ / .profile" ou semelhante:

HISTTIMEFORMAT='%x %r '

Para registrar todos os novos comandos é complicado. Primeiro você precisa adicionar "~ / .profile" ou similar:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -a'

Então você precisa adicionar a "~ / .bash_logout":

history -a
history -w
    
por Steven Penny 03.02.2018 / 23:48
0

em seu diretório pessoal, verifique o arquivo .bash_history , ele salva todos os comandos que você digita

    
por Dirk Hartzer Waldeck 01.06.2012 / 09:17
0

Que tal um simples:

  1. Pegue as informações de .bash_history (Todos os comandos usados no terminal)
  2. Organize-os alfabeticamente
  3. Mostrar apenas Uniques
  4. Envie-os para um arquivo

cat .bash_history|sort|uniq > commands.txt

Se você quer apenas o comando (sem levar em consideração os parâmetros), um simples corte serve:

cat .bash_history|cut -d ' ' -f1|sort|uniq > commands.txt

Se você quiser saber quantas vezes um comando foi executado, você pode:

cat .bash_history|cut -d ' ' -f1|sort|uniq -c > commands.txt

    
por Luis Alvarado 01.06.2012 / 16:39