나는 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-preexec.
저자에 따르면 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
.