요약: w | tail
78열 뒤의 행을 잘라냅니다.
"w" 명령을 실행하면 예상대로 작동합니다. 그러나 출력을 "tail"로 파이프하면 출력이 잘립니다.78열 너비(오른쪽 여백 뒤의 내용은 잘림)
나는 set
and env
78(또는 79 또는 80) 의 값 TERM
과 (xterm|ansi|vt100) 및 stty -a
설정 tail
및 w
(좋아 보입니다)을 확인했습니다. $COLUMNS
209로 설정합니다(하지만 상관없습니다. 100으로 설정했는데 결과는 같습니다).
저는 CentOS 5(커널 - 2.6.18)를 실행하고 있습니다. tail
그리고 바이너리는 w
나에게 괜찮아 보인다.
/usr/bin/w: ELF 64비트 LSB 실행 파일, AMD x86-64, 버전 1(SYSV), GNU/Linux 2.6.9용, 동적으로 링크(공유 라이브러리 사용), 제거됨
CentOS$ cat 80.txt
1 2 3 4 5 6 7 8
012345678901234567890123456789012345678901234567890123456789012345678901234567890
----------+---------+---------+---------+---------+---------+---------+---------+
CentOS$ export COLUMNS=100
CentOS$ w | tail -5 | sed 's/./\./g'
.....................................................................
...............................................................................
...............................................................................
...............................................................................
...............................................................................
답변1
When 의 출력이 w
터미널로 들어갑니다. w
열 수에 대해 터미널 드라이버를 쿼리하고 이에 따라 너비를 조정하십시오.
출력이 터미널로 전송되지 않으면(예: 파이프로 전송하는 경우) 고정 너비 80열로 되돌아갑니다. 버전procps
3.3.2부터 시작$COLUMNS
환경 변수를 사용하여 기본값을 재정의 할 수 있습니다 .
일부 쉘은 변수를 좋아 zsh
하거나 bash
설정 $COLUMNS
하지만 내보내지는 않습니다. 그들에게 당신은 할 수 있습니다
COLUMNS=$COLUMNS w | tail
터미널 너비에 관계없이 줄이 잘리지 않도록 하려면 다음을 수행할 수 있습니다.
COLUMNS=512 w | tail
오래된 터미널을 가지고 있다면 w
와이드 터미널을 에뮬레이트하는 것 외에는 선택의 여지가 없을 수도 있습니다. 그리고 zsh
:
zmodload zsh/zpty
zpty W 'stty cols 512 -opost && w'
{zpty -r W} | tail
zpty -d W
터미널을 에뮬레이트할 수 있는 다른 것:
ssh localhost -t 'stty cols 512 -opost && w' | tail
expect -c 'set stty_init {cols 512 -opost}; spawn -noecho w; expect eof' | tail