在终端中禁用换行以输出


69

我经常在终端中读取输出,因为它们太长而被包装。由于无法修改打印输出,因此需要让终端机进行水平滚动。

我可以对默认的OS X Terminal进行修改以禁用换行并允许水平滚动吗?

还是您知道我可以使用的另一种选择?


旧的问题,但在我看来,它仍然没有解决。我需要相同的答案,因为对于我来说,我无法进一步编辑例如GCC的输出:gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html-fmessage-length=0设置了标记后,我仍然会获得线路警告/错误输出。我不知道(暂时)。
Michael Trouw,2015年

Answers:


51

tput的做了把戏对我来说:

tput rmam

禁用换行。

tput smam

启用换行。


13
+1,但是也可以添加水平滚动吗?
Erik Allik

箭头键可帮助我水平进入下一个屏幕。
michid

7
我看不到如何使用箭头键...它们对我不起作用。该解决方案似乎只是将行截断为当前窗口的宽度。当我增大窗口的大小时,在我知道包含更多字符的行的右边只有一个空白。不过,此解决方案对于我的目的还是有用的,因为我正在显示日志,并且最右边的信息目前不重要。
杰森

2
很高兴找到!为自己添加了一些令人难忘的zsh别名: alias wrapon='tput rmam'alias wrapoff='tput smam'
Chris J Allen

2
谈论模糊的命令
Andy

7

通过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.

我试图解释这里可能发生的情况,尽管这并不能像您所希望的那样用滚动条水平滚动。


6

iTerm 2似乎也不支持禁用换行。您可能会减少使用或减少使用:

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

如果您是(尽管有人建议作为解决方案,尽管我认为您询问了直接输出),然后将输出重定向到somename.log文件,然后使用Applications> Utilities> Log-Viewer(或从命令行作为open somename.log)打开它 。

它不在终端中,但是我找到了最适合处理大量输出(搜索,滚动,过滤)的日志查看器。


我想你是说对Console.app吧?Log Viewer.app实用程序中没有。但是,控制台也会自动换行,唯一的区别是默认情况下会压缩长行。您必须单击它们才能阅读所有内容-不幸的是,这无济于事。
gentmatt

0

根据您要停止包装的内容,可以使用vim。因此,用长行在文件上启动vim,然后键入:

:se nowrap

1
因为我不读取文件,所以这无济于事。我正在通过lsof阅读网络信息。
gentmatt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.