2011-09-25 3 views
1

나는 유닉스 스크립팅의 초보자이다. 나는 다음과 같이하고 싶다. 진행 방법을 거의 모른다.유닉스에서 키 로그인

터미널에 지정된 특정 명령 집합의 입력 및 출력을 추적 파일에 기록하려고합니다. 나는 그것을 켜고 끌 수 있어야한다.

예.

switch trace on 

user:echo Hello World 

user:Hello World 

switch trace off 

그런 다음 추적 로그 파일. trace.log, 그것은 내용이 내가 할 생각할 수

echo Hello World 

Hello World 

한 것은 일부 파일에 출력을 리디렉션, set -x을 사용하는 것입니다해야하지만 그렇게 할 수있는 방법을 찾을 수 없습니다. man set 또는 man -x을 입력했지만 항목이 없습니다. 어쩌면 나는 순진하고 있지만 어떤 지침은 매우 도움이 될 것입니다. bash 쉘을 사용하고 있습니다.

+1

'script' 명령을 확인하십시오. –

답변

3

script (1), "터미널 세션의 타이프 스크립트 만들기"를 참조하십시오. 파일 xyz : script xyz에서 새 성적 증명서를 시작하려면 다음을 수행하십시오. 파일 xyz의 기존 사본에 추가하려면 : script -a xyz.

Script done on ...과 같이 출력물을 필터링하기 위해 awk 또는 sed를 사용할 수있는 오버 헤드 라인이 있습니다. -t 스위치는 실시간 재생을 허용합니다.

나는 less에 성적 증명서를 표시하는 방법에 대한 최근 문제가 된 것 같아, 나는 그것을 찾을 수 있지만, this questionthis one 주소 제어 문자가 포함 된 파일을 볼 같은 몇 가지 문제. (캡처 한 성적 증명서는 종종 ANSI 제어 시퀀스를 포함하고 일반적으로 줄 바꿈뿐만 아니라 반환이 포함되어 있습니다.)

업데이트 1 펄 프로그램 script-declutter 스크립트 로그에서 특수 문자를 제거 할 수 있습니다.
프로그램은 링크 중간에 약 45 줄의 코드가 있습니다. 이 코드 줄을 script-declutter이라는 파일에 PATH에있는 하위 디렉토리에 저장합니다 (예 : , 검색 경로에있는 경우 /usr/local/bin). 파일을 실행 가능하게 만듭니다. out을 파일로 결과를 지시하면서 그 후,

script-declutter typescript > out 

같은 명령 파일 typescript, 에서 대부분의 특수 문자를 제거합니다.

+0

감사합니다. 그냥 또 다른 순진한 질문, 왜 내가 남자 엔트리를 찾을 수 없습니다 -x 또는 + x – SnoopyMe

+0

지속성 부족? :)'man set' (또는 bash 내장 명령어 중'man builtins' 또는'man')을 입력하면'xtrace'를 검색합니다 ('set -o xtrace'는'set -x와 동일합니다 ') 그리고'set -x' 문서에 대해 20 줄 더 멀리 보게됩니다. 'set -x'는 명령의 반향을 켜는 것으로 스크립트 디버깅에는 유용하지만 명령 출력이나 기록에는 영향을 미치지 않습니다. –

+0

bash에 set 또는 xtrace에 대한 man 항목이 없지만 -x가 작동합니다 ...? – SnoopyMe

관련 문제