Desativar quebra de linha para saída no terminal


69

Costumo ler saídas no terminal que são embrulhadas por serem muito longas. Como não há como modificar a saída impressa, preciso permitir que o Terminal permita a rolagem horizontal.

Há uma modificação que posso fazer no OS X Terminal padrão para desativar a quebra de linha e permitir a rolagem horizontal ?

Ou você conhece outra alternativa que eu possa usar?


Pergunta antiga, mas parece-me que ainda não foi resolvida. Preciso da mesma resposta, pois para mim não posso mais editar a saída do GCC, por exemplo: gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html Com o sinalizador -fmessage-length=0definido, ainda recebo várias aviso de linha / saída de erro. e eu não (por enquanto).
Michael Trouw

Respostas:


51

tput fez o truque para mim:

tput rmam

desativa a quebra de linha.

tput smam

permite quebra de linha.


13
+1, mas há alguma maneira de adicionar rolagem horizontal também?
Erik Allik

As teclas de seta funcionam para que eu vá horizontalmente para a próxima tela.
Michid

7
Não vejo como usar as teclas de seta ... elas não funcionam para mim. Esta solução parece apenas truncar as linhas para a largura da janela atual. Quando eu aumento a janela, há apenas espaço vazio à direita das linhas que eu sei que contêm mais caracteres. Ainda assim, esta solução é útil para meus propósitos, pois estou exibindo logs e as informações à direita são inconseqüentes no momento.
Jason

2
bom achado! acrescentou-me um par de aliases zsh memoráveis: alias wrapon='tput rmam'&alias wrapoff='tput smam'
Chris J Allen

2
falar sobre comandos ofuscado
Andy

7

Canalize a saída através de less -S:

   -S or --chop-long-lines
          Causes lines longer than the screen width to be chopped (truncated)
          rather than wrapped.  That is, the portion of a long line that does
          not fit in the screen width is not shown.  The default is  to  wrap
          long lines; that is, display the remainder on the next line.

Tentei explicar o que pode estar acontecendo aqui , embora isso não resulte em uma maneira de rolar horizontalmente com uma barra de rolagem, como você deseja.


6

O iTerm 2 também não parece desabilitar a quebra de linha. Você pode usar menos ou cortar:

less /var/log/system.log
expand /var/log/system.log | cut -c 1-$COLUMNS
less -s <<< "$(osascript -e 'tell app "Terminal" to contents of window 1')"

1

Se você estiver (como outros sugerem como solução, embora eu tenha perguntado sobre saída direta), redirecione a saída para um arquivo somename.log e abra-o em Aplicativos> Utilitários> Visualizador de Log (ou na linha de comando como open somename.log).

Não está no terminal, mas achei o visualizador de registros o mais adequado para lidar com grande quantidade de resultados (pesquisa, rolagem, filtragem).


Eu acho que você está falando sério Console.app, certo? Não existe Log Viewer.appnos Utilitários. No entanto, o console também envolve, a única diferença é que as longas filas são contratadas por padrão. Você precisa clicar neles para ler tudo - portanto, isso não ajudará infelizmente.
gentmatt

0

Dependendo do que você está tentando parar de embalar, você pode usar o vim. Portanto, inicie o vim no arquivo com as linhas longas e digite:

:se nowrap

11
Isso não vai ajudar, já que não estou lendo arquivos. Estou lendo informações de rede via lsof.
gentmatt 27/05

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.