Bel in PuTTYwhen está esperando por entrada?

3

Muitas vezes eu tenho que baixar, atualizar e construir grandes projetos, devido a que há um longo período de espera entre dois comandos. Os projetos são armazenados e usados em uma máquina linux, e eu me conecto remotamente a ele usando o PuTTY .

Procurando uma maneira de ser alertado quando um comando é feito, enquanto eu continuo trabalhando em outra coisa.

Estou não esperando uma abordagem abaixo, já que o comando em si pode esperar pela entrada.

<command> && tput bel

Obrigado.

    
por wolfram77 06.06.2016 / 10:19

2 respostas

1

O PuTTY não sabe quando um comando remoto está aguardando entrada. No que diz respeito ao terminal (ou ao cliente SSH), a entrada pode sempre ser enviada. (Mesmo tentando adivinhar com base no texto mostrado é inútil, uma vez que muitas exibições de progresso são indistinguíveis para um computador a partir de prompts de entrada.)

Dadas as suas necessidades, a única opção que posso imaginar é uma biblioteca LD_PRELOAD que imprime um sino sempre que qualquer programa tenta ler de um dispositivo tty. Algo como:

#define _GNU_SOURCE
#include <dlfcn.h>
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count) {
    static ssize_t (*real_read)(int fd, void *buf, size_t count);

    if (isatty(fd))
        write(fd, "\a", 1);

    if (!real_read)
        real_read = dlsym(RTLD_NEXT, "read");

    return real_read(fd, buf, count);
}

(Bem, não funciona para nenhum binário ligado estaticamente, mas perto o suficiente.)

Então, novamente, se um comando espera por uma entrada, então é por definição que não foi feito , então os requisitos são um pouco contraditórios.

    
por 06.06.2016 / 13:00
0

Como uma solução de 90%, você pode dizer ao seu shell para ecoar um sino quando um comando é concluído. Por exemplo, no bash, simplesmente inclua \a no seu PS1 .

Se você quiser uma campainha quando o comando parar para solicitar informações, uma solução de 99% estará disponível no Unixen não Linux: pressione Ctrl-Y depois de executar seu comando. Na falta de suporte para isso, no entanto, tente procurar configurações específicas do programa. Por exemplo, no Vim, você pode adicionar norm \ ao seu .vimrc para fazer eco de um sino sempre que for lançado.

    
por 16.05.2017 / 00:41

Tags