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