내 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
다음 줄에 따라 출력이 생성됩니다.$HOME
username
ls -la Tue May 14 12:00:36 EDT 2019 /home/username