답변:
실시간 Bash History 업데이트에 설명 된 간단한 솔루션 입니다.
해당 명령을 .bashrc 구성에 넣으라고합니다.
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
첫 번째 명령 .history
은 추가 할 파일 모드를 변경합니다 . 두 번째 history -a
는 각 쉘 프롬프트에서 명령이 실행되도록 구성 합니다. 는 -a
즉시 기록 파일에 현재 / 새로운 라인을 기록합니다.
zsh 관련 :
이것을 당신의 것으로 넣으십시오 .bashrc
:
shopt -s histappend # append to history, don't overwrite it
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
여기에 크레딧 : https : //.com/questions/103944/real-time-history-export-amongst-bash-terminal-windows/3055135
history -c
실행중인 세션의 기록을 지 웁니다. 이렇게하면 기록 카운터의 양이 줄어 듭니다 $HISTSIZE
. history -r
내용을 읽고 $HISTFILE
현재 실행중인 세션 기록에 삽입하십시오. 그러면의 행 수가 기록 카운터를 증가시킵니다 $HISTFILE
.
나는 명령을 거의 즉시 사용할 수 있음을 의미한다고 생각합니다 (하나의 터미널, write echo 1
, 두 번째 터미널 echo 2
을 먼저 사용 echo 3
하고 아래쪽 화살표를 두 번 누르면 echo 2
사용 가능해야 함). 주어진 터미널에서 명령을 실행하여 쓰여졌다.
man history
.
bash
내장되어 있으므로에 설명되어 man bash
있습니다. 을 사용할 수도 있습니다 help history
.
-r
하고 -c
그냥 가지고 대 -a
.
history -c; history -r
? 나는 그것이 당신에게 더 낫다고 생각합니다. 그것은 때때로 나에게 더 좋을 것입니다. 나는 종종 하나의 일을하기 위해 여러 개의 껍질을 사용하므로 가능한 한 많은 역사를 결합하는 것을 선호합니다. 실제로 명령이 완료된 후에 만 기록에 기록됩니다. 일반적으로 한 호스트에 대한 ssh 세션을 시작하고 첫 번째 호스트가 여전히 실행되는 동안 다른 호스트를 열려면 아직 기록에 작성되지 않았으므로 다시 입력해야합니다.
history -a
충분할 것입니다
약 100000 개의 항목이있는 큰 히스토리 파일이 있으며 히스토리 목록을 지우고 전체 히스토리 파일을 읽고 (및를 사용 history -c
하여 history -r
) 프롬프트를 표시하기 전에 눈에 띄는 (0.2 초) 지연을 일으키는 변형이 있습니다. history -n
히스토리 파일에서 새 행만 읽도록 사용하면 더 빠릅니다.
shopt -s histappend
PROMPT_COMMAND='history -a;history -n'
PROMPT_COMMAND
쉘 변수이므로 내보낼 필요가 없습니다.
다른 모든 답변에 대한 참고 사항 (기본적으로 동일한 것) :
설정 PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
에 .bashrc
(또는 친구들은) 충분하다.
또한 history -a
현재 세션에서 기록을 "스냅 샷"할 때마다 수동으로 실행할 수 있습니다 .
항상 파일에 새 행을 추가하고 겹쳐 쓰지 shopt -s histappend
않기 때문에 명령 이 필요하지 않습니다 history -a
. 또한 적어도 Bash 4부터는 histappend
기본 동작입니다.
shopt -s histappend
. 없이 작동하지 않는 것 같습니다 . 또한 내가 그것을 추가했습니다~/.bash_profile
histappend
기본 설정이므로 사용하지 않도록 설정 한 다른 설정이있을 수 있습니다. 찾을 것이지만 Mac에 액세스 할 수 없습니다.
control-r
하나의 bash 명령 기록에서 리버스 검색에 사용 합니다.history | grep
정규식이 필요하지 않은 한보 다 편리합니다 .