로그 파일의 출력과 함께 실행된 명령 표시

로그 파일의 출력과 함께 실행된 명령 표시

쉘 파일의 출력뿐만 아니라 내부에서 사용된 명령도 기록하는 빠르고 더러운 방법이 있습니까?

예를 들어:

whoami > who.dmp

다음과 같은 내용이 포함된 파일을 출력합니다.

my_username

더 긴 쉘 파일의 경우 결과를 발생시킨 명령을 로그 파일에도 표시하는 가장 효과적인 방법은 무엇입니까?

전:

log.txt
###############

echo whoami  <- I want this to show in the file as well
my_username

time   <- I want this to show in the file as well

real    0m0.00s
user    0m0.00s
sys     0m0.00s

매번 명령을 출력 파일로 내보내는 하드 코딩 없이 이 작업을 수행할 수 있는 방법이 있습니까?

답변1

내장된 쉘을 사용하는 것이 set -x아마도 이 작업을 수행하는 저렴하고 더러운 방법일 것입니다. 쉘 스크립트에서는 다음과 같은 줄을 자주 볼 수 있습니다.

#set -x

누군가가 댓글을 달고 남겨둔 것입니다. 대화형 명령줄에서 이를 사용할 수 있다고 생각하지만 여기서 수행되는 작업이 마음에 들지 않을 수도 있습니다.

답변2

script호출하는 프로그램(기본적으로 셸임)을 종료할 때까지 전체 터미널 세션을 저장하는 도구를 살펴볼 수 있습니다 . 사용 사례 예:

~/:$ 스크립트 test.output
스크립트가 시작되었습니다. 출력 파일은 test.output입니다.
~/:$ mkdir 예
~/:$ CD 예
~/example/:$ touch new\ file.txt
~/예:/$ls
새 파일.txt
~/예:/$ 종료

그러면 파일의 내용은 test.output다음과 같습니다.

스크립트는 2012년 6월 25일 월요일 16:24:28에 시작되었습니다.
~/:$ mkdir 예
~/:$ CD 예
~/example/:$ touch new\ file.txt
~/예제/:$ ls
새 파일.txt
~/예/:$ 종료

스크립트는 2012년 6월 25일 월요일 16:24:41에 완료되었습니다.

이 파일은완벽한^H터미널 기록이므로 모든 백스페이스는 또는 ^?(또는 터미널의 백스페이스가 무엇이든) 로 표시됩니다 .

관련 정보