쉘 파일의 출력뿐만 아니라 거기에 사용된 명령도 기록하는 빠르고 더러운 방법이 있습니까?
예를 들어:
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
또는 ^?
(또는 터미널의 백스페이스 키)로 표시됩니다.