it-swarm-ko.tech

터미널에서 줄 바꿈을 비활성화하는 방법은 무엇입니까?

Bash 셸을 사용하여 큰 로그 파일을 볼 필요가 있습니다. 파일을 열기 위해 less를 사용하고 있었지만 줄이 너무 길기 때문에 일종의 줄/워드 줄 바꿈이 있습니다.

파일은 Log4J 로그이고 각 줄의 시작 부분에 패턴이 있으므로 줄 바꿈이 있으면 출력을 분석하기가 어렵 기 때문에 긴 줄을 잘라내는 less -S를 사용하기 시작했습니다.

그러나 이제 tail -f를 사용해야하며 출력도 줄 바꿈됩니다. 모든 명령에 대해 bash 쉘에서 줄 바꿈을 비활성화 할 수 있습니까?

참고 : 이스케이프 시퀀스 echo -ne '\e[?7l'를 언급하는 다른 질문에 대한 답변이 있지만 bash에서는 작동하지 않는 것 같습니다.

59
nunaxe

실제로 tail -f가 필요합니까, 아니면 less +F와 같은 것입니까? 대화 형 호출기를 원하는 것처럼 들리므로 나 자신을 다시 구현하는 것보다 less를 사용하는 것이 훨씬 쉬운 것 같습니다.

마지막 메모 : tail -f file | less를 고려하셨습니까?

9
jw013

시험:

less -S +F filename

  • 프레스 Ctrlc 꼬리를 멈추려면 지금 커서 키를 사용하여 좌우로 움직일 수 있습니다.
  • 프레스 Shiftf 광미 재개
  • 프레스 Ctrlcq 종료합니다
55
Boris Marcos

gnome-terminal와 다른 터미널에서도 사용할 수있는 수퍼 유저의 답변 을 찾았습니다.

setterm -linewrap off

enter image description here

20
Yuri Ghensev

COLUMNS 변수가 정의되어 있다고 가정하면 다음을 실행할 수 있습니다.

tail -f your-app.log | cut -c -$COLUMNS

그렇지 않으면 $COLUMNS는 다음과 같이 stty -a.

17
enzotib

다음을 사용하여 Linux Sun에서 less, tail 및 기타 모든 명령에 대해 줄 바꿈을 비활성화 할 수 있습니다.

tput rmam

줄 바꿈을 복원하려면 다음을 사용하십시오.

tput smam
6
WinEunuuchs2Unix

여기에 두 가지 좋은 답변/예

http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated

tail -f logfile.log | cut -b 1-80

tail -f logfile.log | cut -b -$(tput cols)

하나의 경고 : 적어도 Mac 컷의 내장 터미널에서 탭 문자를 잘 처리하지 못하는 것 같습니다. 예를 들어 8 개의 공백으로 표시되지만 너비가 4 공백 또는 이와 비슷한 것으로 계산됩니다. 즉, 터미널의 너비가 80 자이고 출력에 한 줄에 여러 개의 탭이 포함되어 있으면 너비를 60 또는 이와 유사한 것으로 설정해야합니다. YMMV.

4
d-b

터미네이터 (http://software.jessies.org/terminator/) 터미널 에뮬레이터를 사용하면 긴 줄을 줄 바꿈 할 수 없으며 가로 스크롤이 가능합니다 (하지만 Java로 작성 됨).

3
gentledevil

이 페이지에는 -f ...를 사용하여 파이핑 테일의 몇 가지 예가 있습니다. 내 테스트에서 실제로 파이핑이 필요한 경우 (예 : grep와 같은 더 많은 것을 파이핑 해야하는 경우) 다음과 같은 것을 사용할 수 있습니다 :

watch -n 1 'tail -n $(($LINES-3)) file.log | cut -c -$COLUMNS'

성능에 가장 적합하지는 않지만 작동합니다 ... 다른 추가 배관이 필요하지 않은 경우 다음과 같은 다른 것을 사용할 수 있습니다.

less -S +F file.log
2
nars

less와 함께 아래 옵션을 사용하십시오. 지정된 경우, 줄 바꿈을 비활성화하고 텍스트 색상을 유지합니다.

less -SR +F filename

2
Kamal Nayan

질문에서 벗어난 많은 의견이 있습니다. OP의 질문

그러나 이제 tail -f를 사용해야하며 출력도 줄 바꿈됩니다. 모든 명령에 대해 bash 쉘에서 줄 바꿈을 비활성화 할 수 있습니까?

모든 랩핑 기능이있는 것은 아니라고 자동 랩 기능에 대해 언급했습니다. 혹시. 그러나 (- terminator , 개발자가 terminal description 를 문서화하지 않음)를 제외하고 주어진 모든 예제는 xterm, rxvt 및 일부 유사하거나 자손입니다. 그것들은 모두 관련이 있습니다.

xterm+aw 옵션은 autoWrap 리소스에 해당합니다. 매뉴얼을 참고하면

   autoWrap (class AutoWrap)
           Specifies  whether  or  not  auto-wraparound should be enabled.
           This is the same as the VT102 DECAWM.  The default is "true".

그리고 XTerm 제어 시퀀스

CSI ? Pm h
          ...
          DEC Private Mode Set (DECSET).
            Ps = 7  -> Wraparound Mode (DECAWM).

vT100과 호환되는 터미널은이 기능을 지원하기 때문에 "터미널 선택에 따라 달라지지 않습니다". 예를 들어 xterm과 rxvt가이를 수행합니다. 다른 사람들도 마찬가지입니다.

기능이 유용한 될지 여부는 논쟁의 여지가 있습니다. 줄 바꿈 억제는 문제의 한 측면 일뿐입니다.

  • 쉘은 터미널의 너비를 알고 있지만 COLUMNS를 "large"값으로 설정하여 무시할 수 있습니다.
  • 물론 이는 응용 프로그램이 올바른 마진을 작성하는 데 많은 시간을 소비한다는 것을 의미합니다 (그리고 일부는 잘못되어 새로운 줄을 시작할 것입니다).
  • OP는 아마도 응용 프로그램이 왼쪽/오른쪽으로 스크롤하여 넓은 터미널을 사용할 수 있다고 가정했습니다. (터미네이터는이 작업을 부분적으로 수행하지만 화면에 로그 파일을 cat '하기 위해 터미널을 사용하는 사용자를 제외하고 다른 단점으로 인해이를 취소합니다).
  • oP가 실제로 찾고있는 것은 특히 로그 파일을 볼 때 줄 바꿈을 비활성화하도록 지시 할 수있는 도구 세트입니다. 터미널이 일반적인 용도로 충분히 작동하는 경우 터미널 내에서 사용하는 도구의 선택과 관련이 없습니다.

필요한 기능을 수행 할 수있는 호출기가 있습니다 (예 : multitail 기능에 나열).

줄 바꿈 기능을 끄면 커서 키를 사용하여 왼쪽/오른쪽으로 스크롤 할 수 있습니다

Ncurses 기반이기 때문에 인용 된 모든 터미널에서 작동해야합니다.

2
Thomas Dickey

vi

내부 vi 타입

:set nowrap

나는 또한 당신에게 꼬리를 행동처럼주는 vi 용 플러그인이 있다고 생각합니다.

1
Jacques