A mensagem de erro significa que a extremidade de leitura do tubo foi fechada e o openssl não pode mais gravar no pipe. Isso acontecerá, por exemplo, se você enviar para um comando que termina rapidamente sem ler todas as entradas:
$ dd count=400 if=/dev/urandom | openssl enc | true
error writing output file
Normalmente, um simples grep que não encontra nada funcionará:
$ dd count=400 if=/dev/urandom | openssl enc | grep notgoingtomatch
Mas se o grep coincidir, então percebe que o arquivo de entrada é uma pilha de lixo binário, ele irá parar de ler e o pipe será quebrado:
$ dd count=400 if=/dev/urandom | openssl enc | grep a
error writing output file
Binary file (standard input) matches
(Nesse caso, você pode usar grep -a
para evitar o erro).
Além disso, se você enviar a saída do grep para um pager como less , saia menos antes de ver todos os resultados, isso quebrará a saída do pipe do grep e grep irá morrer se tiver mais a escrever, fazendo com que o tubo openssl também quebre.