출력을 터미널 폭으로 트리밍하는 데 사용됩니까?


12

내가 할 때

ps aux

긴 프로세스 설명에 두 줄 이상이 걸리지 않도록 출력이 터미널 너비에 맞게 잘립니다. 그러나 다른 것으로 파이프하면 긴 줄이 돌아옵니다.

ps가 더 이상 tty로 출력되지 않고 전체 출력이 처리에 중요하기 때문에 이것이 올바른 동작이라는 것을 알고 있습니다. 내가 원하는 것은 내가 끝나면 출력을 다시 자르는 또 다른 유틸리티입니다.

다음과 같이 할 수 있기를 원합니다.

ps aux | grep -v 'www-data' | nowrap  

nowrap내가 찾고있는 상상의 도구입니다. 긴 줄이 잘리고 넘치지 않도록합니다.

이와 같은 것이 있습니까?

답변:


15

cut명령을 사용 하여 출력을 슬라이스 할 수 있습니다 . 예를 들면 다음과 같습니다.

ps aux | grep -v 'www-data' | cut -c-80

각 줄의 처음 80 자만 유지합니다. 물론 원하는 너비로 설정할 수 있습니다.

bash 명령 줄을 사용하는 경우 다음을 수행 할 수 있습니다.

ps aux | grep -v 'www-data' | cut -c-$COLUMNS

출력에 탭이 있으면 너비가 올바르게 계산되지 않을 수 있습니다. expand탭을 공백으로 바꿀 수 있습니다.

ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS

1
... 그리고 출력을 grep으로 채색하고 싶다면 (내가하는 것처럼) cut먼저하십시오 grep.
DerMike

그리고 ~ / .bash_aliases 파일에 alias cutt = 'cut -c-$ COLUMNS'라는 별칭을 추가했습니다. 이제 파이프로 컷팅 할 수 있습니다.
Samuel Lampa

1
출력에 탭이 있으면 잘못 작동합니다. 어떤 제안? 한 가지 옵션은 먼저 탭을 공백으로 변환하는 것이지만 나중에 파이프 라인에서 탭을 유지하려는 경우이를 피하는 것이 좋습니다.
Aaron McDaid

2
나는 expand그것을 포함하기 위해 답을 찾아 편집했다. 탭 수정
Aaron McDaid

3

을 사용하여 출력을자를 수 있습니다 cut. 예 :

PS AUX | grep -v 'www-data'| 컷 -c1-$ {COLUMNS}

여기서 ${COLUMNS}터미널의 현재 너비를 제공합니다. 이 resize명령을 사용하여 현재 너비를 다시 생성 할 수 있습니다.

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

이것을 자동화하고 싶다면 이것을 스크립트로 마무리하십시오 nowrap:

#!/bin/bash

eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -

2

그리고 nagul이 말한 것 외에도 bash에서 사용할 수 있습니다.

입력 열

너비를 얻으려면 :

COLUMNS = $ (열)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.