Olhando para a página de manual para isso, parece haver alguma maneira de evitar passar o texto como um argumento - parece não haver nenhuma maneira de canalizar os dados ou ter dialog lido diretamente do arquivo. No entanto, você pode limitar o tamanho do argumento usando head . Na maioria dos sistemas Linux, o tamanho máximo para um único argumento é de 32 KiB, então você poderia fazer:
dialog --max-input 32768 --yesno "$(head -c 32K FILE)" 10 100
O tamanho máximo para um único argumento é definido por MAX_ARG_STRLEN , que você encontrará em /usr/include/linux/binfmts.h se tiver cabeçalhos de kernel instalados. Geralmente, o valor é PAGE_SIZE * 32 , em que PAGE_SIZE é geralmente 1 KiB (consulte /usr/include/linux/a.out.h ).
É claro que esses valores podem ser completamente reconfigurados. Além disso MAX_ARG_STRLEN é específico do Linux e foi introduzido no Linux 2.6.23. Para mais informações sobre quais são os limites, consulte O que define o tamanho máximo para um único argumento de comando? .
Atualizar
Opa, você pode realmente usar o argumento --file para isso. Parece que você pode fazer algo como (sem ter testado):
{
echo -n \"
sed 's/"/\"/' FILE
echo -n \"
} | dialog --yesno --file '&1' 10 100
Não há necessidade de sed se você souber que não há cotações no arquivo. Ou, como alternativa, basta colocar tudo o que você precisa no arquivo (aspas, --yesno e tudo) e simplesmente fazer:
dialog --file FILE