bash 기록 설정을 망칠까봐 조금 걱정됩니다. 나만의 사용자 정의 bash 기록을 작성하고 싶습니다. 나는 다음과 같은 bash 기능을 사용하는 것에 대해 생각했습니다.
bash(){
# write to a custom history file manually
echo "$@" >> $HOME/my_bash_history
command bash "$@"
}
export -f bash;
그러나 그것은 정확히 작동하지 않습니다. 무슨 일이 일어나면 그것이 인계되고 command bash
더 이상 bash 기능을 거치지 않게 됩니다. 모든 것이 사용자 정의 파일에 기록되도록 이 bash 기능을 실행하려면 bash의 모든 표준 입력이 필요합니다. 이 작업을 수행하는 방법을 아는 사람이 있나요?
답변1
원하는 것은 DEBUG
트랩(모든 명령 전에 실행)이거나 트랩 PROMPT_COMMAND
(모든 프롬프트 전에 실행)일 수도 있습니다.
함정이 당신의 시도에 더 가깝습니다. 기본 개념은 다음 항목에 설명되어 있습니다.bash에는 명령을 실행하기 전에 실행되는 후크가 있습니까?완전한 턴키 버전이 존재합니다.bash 사전 실행.
저자에 따르면 bash-preexec의 목적은 다음과 같습니다.바쉬하브"클라우드의 bash 기록"을 제공하므로 "파일의 bash 기록" 작업을 수행할 수 있다고 확신합니다.
답변2
당신은 동등한 것을 달성하려고 노력하고 있습니다이 "영원한 역사":
export HISTTIMEFORMAT="%s "
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"'echo $$ $USER \
"$(history 1)" >> ~/.bash_eternal_history'
핵심 아이디어는 history 1
bash에 제공된 마지막 줄을 (bash에서) 나열하는 것입니다.
$ echo "$(history 1)"
12766 2019-05-31T20:14:44+0000 echo "$(history 1)"
실제로는 스크립트 내(같은 줄이 아님) 내에서만 의미 있는 값을 갖습니다.
bash의 새로운 줄마다 PROMPT_COMMAND
명령을 실행합니다 .history
IMO: 함수 이름을 지정하는 것은 좋은 생각이 아닌 것 같습니다 bash
.