우리는 Unix 서버를 사용하여 읽지 않은 이메일 목록을 얻으려고 합니다 mailx -L
. 단, 이메일 제목이 25자를 초과하면 잘립니다.
이 문제를 어떻게 해결하나요?
답변1
mailx
표준 출력의 열 수에 맞게 출력을 자릅니다. 열 수를 얻으려면 ioctl(1, TIOCGWINSZ, ...)
먼저 터미널 창 크기를 시도하고 실패하면 COLUMNS
환경 변수를 사용합니다. 그러니 이것을 시도해 보세요:
COLUMNS=999 mailx -L | cat
거기에 표준 출력이 터미널이 아니므로 ioctl이 실패하게 됩니다 |cat
.mailx
답변2
메일은 일반적으로 텍스트 파일(사서함또는메일 디렉토리형식)이므로 grep
, sed
, awk
또는 모든 스크립트 언어를 사용하여 처리할 수 있습니다. 메일의 일반적인 위치는 /var/mail
이거나 /var/spool/mail
사용자 홈 디렉터리의 파일/디렉터리입니다.
메시지 제목을 추출하려면 다음을 사용할 수 있습니다 grep
.
grep -E '^Subject: ' /path/to/mail
"제목:" 부분을 제거하려면 다음과 같이 파이프하세요 sed
.
...| sed -e 's/^Subject: //'
읽지 않은 메시지 필터링은 읽음/읽지 않음 상태가 별도의 메시지 헤더 줄에 저장되기 때문에 더 복잡합니다. awk, Perl, Python 등으로 작성된 약간 더 복잡한 스크립트가 필요할 것 같습니다. 이에 대해 테스트된 솔루션이 준비되어 있지 않습니다.