Adicionando contagem de mensagens não lidas ao prompt de comando do terminal

3

Eu quero ver o número de mensagens não lidas na minha conta de mensagens de correio Unix no prompt de comando. Como posso fazer isso?

Update: Aqui está a saída de mail e mailx quando eu me enviei duas mensagens:

"/var/mail/alex": 2 messages 2 new 
 N   1 Alex Thu Sep 25 16:53  13/420   subject for askubuntu 1 
 N   2 Alex Thu Sep 25 16:53  13/420   subject for askubuntu 2 
    
por alexoakley1 25.09.2014 / 15:34

1 resposta

2

Abra o arquivo gedit ~/.bashrc e adicione este script no final (não se esqueça de adicionar esse script no END do arquivo):

NewMail(){
    NEWMAIL=$(mailx &)
    UNREAD=$(echo $NEWMAIL |grep -o 'messages.*new' | cut -f2 -d" ")
}
NewMail # call NewMail function

if [ -n "$UNREAD" ]; then
    PS1="[Hi, alex. you have $UNREAD new mail(s)] $PS1"
fi

Escrevemos uma função cujo nome é NewMail .

Explicação da função:

O resultado da primeira linha ( NEWMAIL=$(mailx) ) de acordo com as informações no corpo da pergunta é:

"/var/mail/alex": 2 messages 2 new [...]    # if you have a new unread mail

OR

No mail for alex                            # if you don't have a new mail

Que eu armazenei o resultado acima em uma variável NEWMAIL lá.

Eu passei o resultado para o próximo comando na segunda linha com este comando echo $NEWMAIL .

Então, com este comando grep -o 'messages.*new' , obtenho o resultado entre a palavra "message" e a palavra "new", que é: messages 2 new .

  • -o - Imprime apenas as partes correspondentes (não vazias) de uma linha correspondente, com cada uma dessas partes em uma linha de saída separada.

Agora temos esse resultado messages 2 new . Então eu passo esse resultado para o próximo comando cut -f2 -d" " , para obter apenas o número de mensagens:

  • -f sinalizador usado para campos e -f2 seleciona apenas o segundo campo de " messages 2 new "
  • -d" " com um espaço aqui é usado para o delimitador de campo.

Em seguida, depois de executar a segunda linha, temos o número de novas mensagens não lidas, ou seja: 2 aqui.

Nesta linha NewMail # call NewMail function , chamamos a função NewMail .

Com essa condição if , eu verifico se você tem novos e-mails. Em seguida, o prompt de comando será alterado e mostrará: "[Hi, alex. you have # new mail(s)]" antes do prompt. Se você não tiver novos e-mails, o prompt de comando não será alterado.

if [ -n "$UNREAD" ]; then 
    PS1="[Hi, alex. you have $UNREAD new mail(s)] $PS1"
fi

-n flag com [ -n "$UNREAD" ] verifica se o comprimento de UNREAD não é zero.

PS1 define seu prompt de comando que é configurado no arquivo .bashrc em seu diretório inicial. Isto é o que nós abrimos / editamos este arquivo. Então edito isso para incluir a contagem de mensagens não lidas antes do seu prompt de comando. Veja:

PS1="[Hi, alex. you have $UNREAD new mail(s)] $PS1"

Aqui está a captura de tela, se eu tiver novos e-mails:

E se eu não tiver nenhum email novo:

É isso. Basta copiar e colar o script no final do seu arquivo ~/.bashrc .

    
por αғsнιη 25.09.2014 / 20:08