Gostaria de saber se era possível adicionar carimbos de data / hora aos prompts do terminal e, se sim, como conseguir isso?
Gostaria de saber se era possível adicionar carimbos de data / hora aos prompts do terminal e, se sim, como conseguir isso?
Respostas:
Adicione esta linha ao ~/.bashrc
arquivo:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Portanto, a saída será algo como:
[07:00:31] user@name:~$
date
comando, você pode substituir +%H:%M:%S
por +%T
.
Minha solução foi usar http://bashrcgenerator.com/ para gerar esta linha PS1 para inserir .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Qual será a aparência
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
Usar PROMPT_COMMAND atrapalha o histórico para mim. Quando uma linha mais longa aparece ao percorrer o histórico, ela interrompe o final do prompt com o mesmo número de caracteres que o carimbo de data / hora adicionado à frente. por exemplo
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
E essa linha não pode ser editada porque não exibe os caracteres no lugar certo, pois você não está digitando onde parece que está digitando.
Acho que isso poderia ser feito com PROMPT_COMMAND, talvez usando essa parte [$ (tput sgr0)], mas o PS1 funciona.
Em vez de adicionar a data ao prompt em si, você pode adicionar a data imediatamente antes do prompt, colocando a seguinte linha na parte superior do seu .bashrc
. Para isso, você também precisará instalar cowsay
. É uma maneira divertida de exibir a data, mantendo um breve aviso:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
Em sua forma atual, ele funcionará no sistema de qualquer pessoa sem emenda, pois lê $USER
a date
variável e do ambiente atual.
Como não tenho pontos de reputação suficientes para adicionar um comentário à resposta para melhorá-lo. Parece que a única maneira de adicionar informações é criar uma segunda resposta. Então, vou repetir o que foi dito como resposta e desenvolver isso.
Edite o arquivo .bashrc do usuário para o qual você deseja modificar o carimbo de data.
Se você vir "user @ host: ~ $", estará no diretório inicial do usuário atual. O arquivo .bashrc é um arquivo oculto, pois é prefixado com o ponto ".". Para vê-lo em uma lista, você precisará usar uma lista longa.
Você pode usar "ls -a" e deverá ver o arquivo ".bashrc".
Edite o arquivo com um editor de texto. Por exemplo, "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" ou qualquer outro editor que você deseja usar.
Se você deseja criar um script e planejar adicioná-lo a muitos shells para muitos usuários, pode ser benéfico usar o comando "echo" em conjunto com o operador ">>" acrescentado. Por exemplo,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Se você usar esse método, verifique se está no diretório de trabalho atual do usuário para o qual deseja modificá-lo. Para verificar isso, você pode usar o comando "pwd" ou imprimir o diretório de trabalho.
Se você não gostar do espaço extra entre o colchete "]" e o nome de usuário, use este regex muito modificado:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Use isso se você estiver editando diretamente o arquivo.
Abra sua .bashrc
via
vim ~/.bashrc
e adicione o seguinte a .bashrc
:
#PS1="[\A \u@\h \W\a]$"
onde \A
é o tempo ( \W
somente para o final do caminho, remova se desejar o caminho inteiro do diretório de trabalho atual). Então digite
source ~/.bashrc
Você verá algo assim:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
não mostrará nenhum caminho. \w
dará o caminho completo.
Apenas para adicionar à resposta de @ devav2:
Um comando de eco mais fácil de ler para iniciantes seria:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Ao invés de
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Como o comando echo não deve ser avaliado no momento da exportação, faz mais sentido usar aspas simples para aspas literais em vez de aspas duplas. Usando aspas simples para citar o comando inteiro, em seguida, permite que você use aspas para citar o argumento para o comando echo, eliminando a necessidade de escapar caracteres especiais como ,
[
e$
Penso que a maneira correta de proceder é localizar nos $HOME/.bashrc
códigos que os definem PS1
, comentá-los e adicionar os pessoais. Este é o meu bloco, por exemplo:
PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"
if [ "$color_prompt" = yes ]; then
PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Resultado:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
A sintaxe mais fácil para mostrar um carimbo de data / hora em um prompt de comando provavelmente seria:
PS1='\D{%F} \t $...'
Onde
\D{format}
é formatado em data (consulte a man bash
seção PROMPTING) como
%F
data completa; igual a% Y-% m-% d (consulte a man date
seção FORMATO) e
\t
é a hora atual no formato HH: MM: SS de 24 horas (consulte a man bash
seção PROMPTING)
nano ~/.bashrc
faça alterações nas variáveis PS1, como mostrado acima
source ~/.bashrc
Meu tempo é semelhante à cowsay
resposta acima. Você precisa colocar o now
seu, ~/.bashrc
mas também pode chamá-lo no terminal digitando now
.
Aqui está uma captura de tela:
O código bash está publicado nesta resposta muito detalhada:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
pelo menos parece útil para mim.