실행된 명령과 출력을 로그 파일에 표시합니다.

실행된 명령과 출력을 로그 파일에 표시합니다.

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

예를 들어:

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
~/예:/$exit

파일 내용은 test.output다음과 같습니다.

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

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

파일이 있으니 참고하세요충분히터미널이 기록되므로 모든 백스페이스 키는 ^H또는 ^?(또는 터미널의 백스페이스 키)로 표시됩니다.

관련 정보