Por que o '' head '' está pendurado e não termina?

2

Eu tenho um script de shell que tem que encontrar o mais novo arquivo em um host remoto. Eu tenho esse pouco:

ssh -q $HOSTNAME -t ls -t -1 /path/to/somewhere/ | head -n 1

Imprime a primeira linha, depois aguarda e não termina.

No entanto, se eu remover o | head -n 1 , ele imprimirá todos os arquivos em ordem e, em seguida, terminará regularmente e retornará o fluxo de controle para o meu terminal. Então a parte do comando SSH está terminando bem, mas não a parte da cabeça. O que está acontecendo? Como faço a cabeça funcionar?

    
por Rory 02.03.2012 / 13:36

3 respostas

3

Ele trava porque não recebe nenhuma entrada. Tente fazer apenas a cabeça -n 1.

Isto irá garantir que a tubulação para a cabeça irá ocorrer no pseudo-tty

ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/ | head -n 1"

Eu tenho que admitir que no Debian Squeeze e no Ubuntu server 10.4 eu não consegui reproduzir isso.

Cuidado para dar mais informações como sem o "-q", distro, etc.

    
por 02.03.2012 / 14:51
2

Que tal

ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/" | head -n 1
    
por 02.03.2012 / 13:41
1

Por que não tentar desta forma:

ssh -q $HOSTNAME -t ls -tr -1 /some/path | tail -n 1

Isso permitirá que você saiba se o comando head está com defeito. Seu comando anterior parece funcionar bem na minha máquina. Coisas estranhas.

    
por 02.03.2012 / 14:44