Eu não sei qual é o cat , mas aqui está uma solução que quase funciona
- Em uma execução de terminal
mkfifo myfifo; tail -c +1 -f myfifo | tar xfJ - - Insira o primeiro DVD na unidade de DVD-ROM (ex. dev / sr0).
- Em uma segunda execução de terminal
dd if=/dev/sr0 of=myfifo - Quando
ddfor concluído, remova o DVD. - Se você tiver outro DVD, insira-o na unidade de DVD-ROM e vá para a etapa 3, caso contrário, vá para a etapa 6.
- No primeiro terminal, pressione CTRL-C para eliminar
tailetar.
Como funciona
O truque é usar tail para ler continuamente de um pipe nomeado. A saída de tail é então canalizada para o comando que você deseja executar. Inicialmente o tubo é fechado, então nada acontece. Mas quando você começa a bombear dados para o pipe com dd , tail o pega e encaminha para o seu comando.
A mágica acontece quando o fluxo de dados para o pipe é interrompido: tail mantém seu descritor de arquivo aberto, o que faz com que seu comando pause. Enquanto isso, tail simplesmente espera por mais informações.
O problema
O motivo pelo qual eu disse que está quase funcionando é porque parece haver um problema de buffering que faz com que tail não grave o último bit de dados inserido nele. Minha esperança é que alguém possa fornecer o insight para resolver isso.