Aqui estão algumas respostas práticas para sua pergunta "teórica".
tail
pode fazer isso por você
Exemplo:
ping -c 10 8.8.8.8 | tail --lines=3 > output.file
A opção -c 10 no comando ping limita os pings a 10 em vez de continuar indefinidamente, o que é o padrão. o comando lines = 3 no comando tail limita a saída para as últimas 3 linhas, que é o que realmente nos interessa normalmente.
Isso resultará apenas no resumo (últimas 3 linhas), conforme mostrado abaixo:
--- 8.8.8.8 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 22.810/25.120/31.137/2.936 ms
Se por alguma estranha razão você realmente quiser a saída de um único ping, apenas modifique o acima para ping -c 1 8.8.8.8 | head --lines=2 | tail --lines=1 > output.file
Como resultado:
64 bytes from 8.8.8.8: icmp_seq=1 ttl=45 time=24.0 ms
Editar: ping único contínuo Conforme solicitado no comentário:
while :; do ping -c 1 8.8.8.8>output.file; sleep 1; done
Dado que while: sempre é avaliado como true, ele será executado indefinidamente, executando ping e redirecionando a saída para output.file, sobrescrevendo-a sempre que o loop for executado. Ele pausa por um segundo a cada iteração para permitir que você leia a saída.
Você pode experimentar com valores de sono abaixo de um segundo, como 0,5 ou 0,01, mas em algum momento você terá um atraso muito curto entre as gravações e estará de volta onde começou.
Fontes:
man ping
man tail
Experiência