2017-01-24 4 views
1

에서 myserver는 별칭입니다화면, 파일 및 전자 메일 모두에 별칭 출력을 보내는 방법은 무엇입니까?

내가

myserver | tee /mydocs/mystats/stats-dd-mm-yy.txt | less | /usr/bin/Mail -s "Admin Server Stats" "[email protected]" 

도움을 주셔서 감사합니다, 이메일 (이름에 날짜) 터미널 화면에 파일 통계-DD-MM-전년 동기 대비 출력을 보내려고

+0

기타 : 소프트웨어 * 사용 *에 관한 질문 (소프트웨어 사용자 개발 *에 대한 질문 이외에 명령 프롬프트를 최종 사용자로 사용하는 방법)과 관련하여 http : // 미래에보다 적절한 포럼으로 superuser.com/을 선택하십시오. –

+0

또한 숨겨진 추가 질문으로 날짜가 포함 된 파일 이름을 생성하는 방법에 대해 묻는 것은 자신의 질문이되어야합니다. (매우 드문 경우이지만 이미 찾지 못했고 Google 기술 자료에서 이미 답변했습니다.) –

+0

저는 초보자입니다. 그러나 나는 도움을 요청할 때마다 비평가가 있기 때문에이 커뮤니티에서 그만두고 싶다고 생각합니다. 그러나 감사합니다. – user7203212

답변

2
date=$(date +Y-%m-%d) 
myserver | tee >(/usr/bin/Mail [email protected]) "stats-$date.txt" | less 

이것은 별칭에만 국한되지 않습니다. 하지만 마법은 프로세스 대체 : >() (bash 및 ksh 확장자)이며 프로세스의 입력에 연결된 파일과 유사한 객체를 생성합니다. 스크립트에서이 스크립트를 사용하는 경우 스크립트는 이 아니라 #!/bin/sh으로 시작해야합니다. sh yourscript (기본 POSIX 인터프리터를 강제 실행)으로 시작하면 안됩니다. 이 경우 - - /usr/bin/Mail

이 구문은

의 표준 입력 내용 패스 기록 형태 또는 /dev/fd/## /proc/self/fd/##, 전형적 리눅스, 파일명으로 대체 될 것이다.


일부 추가 참고 사항 :

  • YYYY-mm-dd가 훨씬 덜 악한 파일 형식입니다. dd-mm-yy은 정확하게 정렬되지 않으며 mm-dd-yy과 모호합니다.
  • less 요구는 파이프 라인의 에 있어야합니다 : 그것은 프로그램 사용하기위한 형태로 자신의 표준 출력 내용을 기록하지 않습니다, 그래서 당신은 뭔가 다른 less에서 유용하게 파이프 할 수 없습니다.
  • mail도 파이프 라인의 끝에 있어야합니다. 왜냐하면 파이프 라인의 내용도 stdout에 쓰지 않기 때문입니다. 코드가 작동하는 이유는 tee이 우리의 파이프 라인을 나눠주고 있기 때문에 효과적으로 여러 개의 끝을 가지고 있습니다!
+1

부수적으로, 프로세스 대체는 입력에 대해서도 존재합니다. 예를 들어'cat <(ls /)'는 루트 디렉토리를 나열하고 출력을'cat'으로 파이프합니다. 이 경우 첫 번째'<'는 일반적인 방향 전환 심볼이고'<(ls /)'는'ls'의 출력에 연결된 파일과 같은 객체이고'cat'의 입력입니다. – Fred

+0

팁 주셔서 감사합니다, 나는 아직 당신이 코멘트에서 할 수 있다는 것을 깨닫지 못했습니다. – Fred