Отключить перенос строки для вывода в Терминале

69

Я часто читаю результаты в терминале, которые обертываются, поскольку они слишком длинные. Поскольку я не могу изменить печатный вывод, мне нужно разрешить Терминалу горизонтальную прокрутку.

Могу ли я внести изменения в терминал OS X по умолчанию, чтобы отключить перенос строк и обеспечить горизонтальную прокрутку ?

Или вы знаете другую альтернативу, которую я могу использовать?

gentmatt
источник
Старый вопрос, но мне кажется, что он до сих пор не решен. Мне нужен тот же ответ, так как для меня я не могу больше редактировать вывод, например, GCC: gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html С установленным флагом -fmessage-length=0я все еще получаю несколько предупреждение о линии / ошибка вывода. а я нет (пока).
Майкл Трув

Ответы:

51

tput сделал трюк для меня:

tput rmam

отключает перенос строки

tput smam

позволяет перенос строки.

michid
источник
13
+1 но есть ли способ добавить горизонтальную прокрутку?
Эрик Аллик
Клавиши со стрелками работают для меня, чтобы горизонтально перейти к следующему экрану.
Мичид
7
Я не понимаю, как использовать клавиши со стрелками ... они не работают для меня. Это решение, кажется, просто усекает линии до ширины текущего окна. Когда я увеличиваю окно, справа от строк, которые, как я знаю, содержится больше символов, остается только свободное место. Тем не менее, это решение полезно для моих целей, так как я показываю логи, а крайне правая информация на данный момент несущественна.
Джейсон
2
хорошая находка! добавил себе пару запоминающихся псевдонимов zsh: alias wrapon='tput rmam'&alias wrapoff='tput smam'
Крис Дж Аллен
2
поговорим о запутанных командах
Энди
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.

Я пытался объяснить , что может быть происходит здесь , хотя это не приведет способ прокрутки по горизонтали с полосой прокрутки, как вы , кажется, хотят.

mtklr
источник
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')"
LRI
источник
1

Если вы (как другие предлагают в качестве решения, хотя я думаю, что вы спрашивали о прямом выводе), то перенаправьте вывод в файл somename.log и откройте его с помощью Applications> Utilities> Log-Viewer (или из командной строки as open somename.log).

Это не в терминале, но я нашел средство просмотра журнала, которое лучше всего подходит для обработки большого количества вывода (поиск, прокрутка, фильтрация).

Nicholaz
источник
Я думаю, что вы имеете в виду Console.app, верно? Там нет Log Viewer.appв ЖКХ. Однако консоль также переносится, единственное отличие состоит в том, что по умолчанию длинные строки сокращаются. Вы должны нажать на них, чтобы прочитать все - так что, к сожалению, это не поможет.
Джентмат
0

В зависимости от того, что вы пытаетесь остановить, вы можете использовать vim. Поэтому запустите vim для файла с длинными строками, а затем введите:

:se nowrap
Филип Кернс
источник
1
Это не поможет, так как я не читаю файлы. Я читаю информацию о сети через lsof.
Джентмат
0

использование cut

myscript | cut -c -100
Алексей Петрушин
источник