답변:
history -a; history -c
모든 창에서 실행 하여 기록을 저장할 수 있습니다 . 그런 다음 history -r
새로 고칩니다.
더 영구적으로 해결하려면 다음을 추가하십시오 .bashrc
.
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
어려운 것 같습니다. 다음은 몇 가지 유용한 방법입니다.
프로세스 계정 도구가 설치되어 있고 (Linux에 패키지라고 함 acct
)이를 사용하기위한 권한이있는 경우, 언제 어떤 터미널에서 어떤 터미널을 실행했는지 확인할 수 있습니다 convert
.
lastcomm convert
이것이 사용 불가능하거나 결정적이지 않은 경우, history
각 bash 인스턴스에서 명령을 실행하여 명령을 찾을 수 convert
있습니다. bash가 시작될 때 히스토리 파일에 있던 명령을 찾을 수 있습니다.
: >/tmp/convert.history
for w in $(seq 0 11); do
screen -p $w -X stuff \
'history | sed 's/^.*convert/'$w'&/" >>/tmp/convert.history
'; done
$(seq 0 11)
화면 창의 수를 반복합니다. 현재 bash를 실행하지 않고 입력을 다르게 해석하는 다른 프로세스를 건너 뛰십시오.screen -p $w stuff …
지정된 창에 다음 문자열을 입력으로 보냅니다. 문자열 끝에 줄 바꿈이 필요합니다./tmp/convert.history
와 같은 행 목록이 포함됩니다 .3 convert foo.jpg
convert foo.jpg
history | grep convert
모든 창에서 실행 되었습니다. 실망합니다. Gilles의 또 다른 훌륭한 답변을 받고 싶습니다!
tcsh를 사용하면 주기적 별명을 사용하여 세션간에 히스토리를 공유 할 수 있습니다.
.cshrc (또는 .tcshrc) 파일에서 :
set tperiod = 60 #(or any other number. Time in minutes between refreshing)
alias periodic 'history -S; echo "Syncing history"'
60 분마다 기록 명령이 자동으로 실행됩니다. 이것은 홈 디렉토리의 공통 히스토리 파일에 히스토리를 저장합니다. 기록을 더 자주 업데이트하려면 tperiod 수를 줄이거 나 "periodic"명령을 실행하여 수동으로 새로 고치십시오.
setopt share_history
에/etc/zsh/zshrc
나에게 결코 일어나지 않을해야이 문제 때문에 : P