셸 활동 로깅

셸 활동 로깅

내 BASH 셸에서 사용자 정의 활동 로그를 생성하는 방법이 있습니까? 각 줄에는 마지막 명령, 실행 시간, 실행된 작업 디렉터리가 저장됩니다.

참고: 를 사용할 필요는 없지만 exec쉘에 대한 루트 액세스 권한이 없으므로 사람들이 사용할 수 있다고 가정하는 양을 제한하는 것이 아이디어입니다. 좋은 해결책처럼 느껴지므로 실행하는 것이 좋습니다.

답변1

PROMPT_COMMAND이는 다음과 같은 방법이나 다양한 다른 방법으로 달성 할 수 있습니다 .

export PROMPT_COMMAND='echo -e $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")\\t$(date)\\t$(pwd) >> $HOME/history.csv'

파일은 사용자 정의 필드 구분 기호( )를 사용하여 CSV 파일로 열 수 있습니다 TAB. 이 문자는 내장 명령 "백슬래시 이스케이프 해석 활성화"로 전환하여 -e생성됩니다 .echo

  • $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//"): Linux에서는 명령 번호와 명령 번호 주위에 공백이 없는 마지막 명령을 가져옵니다.
  • $(date): 현재 날짜와 시간을 가져옵니다.
  • $(pwd): 현재 작업 디렉터리를 가져옵니다.
  • >> $HOME/history.csv: >>파일에 ( ) 출력을 추가합니다.

(of ) 에서 실행하면 ls -la다음 줄에 따라 출력이 생성됩니다.$HOMEusername

ls -la    Tue May 14 12:00:36 EDT 2019    /home/username

관련 정보