Atualize o prompt do Zsh com informações de tempo limite do sudo

6

Gostaria que meu prompt do Zsh exiba se minhas credenciais sudo estão armazenadas em cache. O que eu tenho até agora deve ajudar a explicar o que eu quero alcançar.

function sudo-warning {
    if sudo -nl &>/dev/null; then
        echo -n " %{${fg[red]}%}                    
por timothymctim 22.12.2017 / 23:33

1 resposta

3

Isso parece funcionar para eu saber se o tempo limite foi atingido:

sudo-expired() [[ $(
  trap "" XFSZ
  limit filesize 0
  LC_ALL=C sudo -n true 2>&1) = *"password is required" ]]

Ou seja, defina o limite do tamanho do arquivo como 0 para que a atualização do arquivo de timestamp falhe, mas, desde que não deixe esse limite matar sudo , ainda poderemos saber se uma senha foi necessária ou não.

Usado como o seu (com algumas simplificações):

sudo-warning()
  if sudo-expired; then
    echo '%F{blue}                                    
por 25.12.2017 / 20:53

Tags