행이 중복되지 않은 경우 프롬프트를 표시하기 전에 bash 기록에 추가하는 방법은 무엇입니까?

행이 중복되지 않은 경우 프롬프트를 표시하기 전에 bash 기록에 추가하는 방법은 무엇입니까?

gnome 터미널을 종료하고 닫지 않을 때 기록이 저장되지 않는 경우가 많기 때문에 행이 중복되지 않은 경우 프롬프트를 표시하기 전에 bash 기록에 추가하고 싶습니다. export HISTCONTROL=ignoreboth무시된 작업을 암시하는 bashrc가 있지만 작동하지 않는 것 같습니다. bash_history에서 여전히 중복이 발생하기 때문입니다 . 그럼 어떻게 해야 할까요?

해결책은 아니지만 추가 표시를 제공하려면 $PROMPT_COMMAND가 있어야 한다고 생각합니다."$(history 1)" (if_not_duplicate) >> ~/.bash_history

그리고 인접하지 않은 중복 항목이 이미 삽입된 경우 제거됩니다.

perl -nei '$H{$_}++ or print' ~/.bash_history 

답변1

이 작업을 올바르게 수행하려면 PROMPT_COMMAND와 HISTControl을 모두 수정해야 합니다. 다음이 도움이 될 것입니다:

# The secret sauce is "erasedups," which replaces the default of "ignoredups."
export HISTCONTROL=erasedups:ignorespace

# Write the history to HISTFILE before showing the prompt.
export PROMPT_COMMAND='history -w'

이 접근 방식에서 고려해야 할 두 가지 주의 사항은 다음과 같습니다.

  1. 기록(특히 중복 항목)이 손실되며, 이는 HISTTIMEFORMAT 값에 의존하는 경우 문제가 될 수 있습니다.
  2. HISTFILE을 HISTFILESIZE로 계속 자릅니다.

이는 반드시 문제가 되는 것은 아니며, 알아야 할 사소한 문제일 뿐입니다.

관련 정보