Instale expect, que vem com unbuffer (1), e execute:
# unbuffer yum repolist
Quando executo o SSH em uma máquina com ssh machine
e execuo yum list
, ele exibe tudo o que está instalado como esperado e, o mais importante, cada item está em uma linha da seguinte forma:
xz-devel.i386 4.999.9-0.3.beta.20091007git.el5 base
xz-devel.x86_64 4.999.9-0.3.beta.20091007git.el5 base
xz-libs.i386 4.999.9-0.3.beta.20091007git.el5 base
xz-lzma-compat.x86_64 4.999.9-0.3.beta.20091007git.el5 base
Mas, ao fazer isso remotamente com ssh machine 'yum list'
ou até mesmo canalizando para o grep enquanto no servidor com yum list | grep xz -C 3
, as linhas da saída são "truncadas" e muito mais curtas, assim:
xz-devel.i386 4.999.9-0.3.beta.20091007git.el5
base
xz-devel.x86_64 4.999.9-0.3.beta.20091007git.el5
base
xz-libs.i386 4.999.9-0.3.beta.20091007git.el5
base
xz-lzma-compat.x86_64 4.999.9-0.3.beta.20091007git.el5
base
Como posso fazer com que o tamanho da linha não diminua assim? Meu desejo final é canalizar isso para tee
e então fazer algum processamento no arquivo enviado para todos os meus hosts via ansible.
Parece que isso está ocorrendo devido a algum tipo de "terminal virtual" como parte do SSH / tubulação porque eu posso obter o mesmo comportamento se eu reduzir o tamanho do meu terminal onde as linhas quebram ao executar yum list
. Assim, eu suponho que a adição do pipe de alguma forma diz a yum list
que a largura do terminal é apenas X colunas
Instale expect, que vem com unbuffer (1), e execute:
# unbuffer yum repolist
Por esta resposta fornecida nos comentários por @thrig I foi capaz de obtê-lo a saída corretamente, fazendo
yum list installed | xargs -n3 | column -t