C 쉘에서 터미널 기록 동기화

C 쉘에서 터미널 기록 동기화

업무상 원격 데스크톱을 사용하여 bash 대신 c 셸을 사용하여 Linux 서버에 원격으로 액세스합니다. 세션(세션 1이라고 함)에서는 지정된 터미널에서 여러 탭을 열고 모든 탭에 명령을 입력합니다. 때로는 해당 터미널에 여러 탭이 있는 다른 세션을 열고(세션 2와 세션 3이라고 함) 모든 세션에 많은 명령을 입력하기도 합니다.

어느 세션에서든 터미널의 어느 탭에서든 기록 명령을 호출하면 모든 탭과 세션에서 사용한 모든 명령이 포함되지 않는 것으로 나타났습니다. 일부 명령만 저장됩니다.

나는 다음과 같은 역사를 원합니다 :

  • 기억하다모두현재 어느 탭, 터미널 또는 세션에 있든 명령을 입력하세요.
  • 모든 탭/터미널/세션에서 즉시 액세스 가능

비록 훌륭한 것이 있지만우편 엽서약 12년 전에 이를 수행하는 방법, 즉 ac 쉘 환경이 아닌 bash 환경에 대해 설명했습니다. 그러므로 하나가 아니라 .bashrc하나 입니다 .cshrc. C 쉘 환경에서 작동하는 솔루션을 찾고 있습니다.

고쳐 쓰다:

나는 이것을 파일 상단에 추가하려고 시도했습니다 .cshrc.

set history=10000
set savehist=(10000 merge)
alias precmd 'history -L, history -S'

그 중 set은 history=10000히스토리 목록의 크기를 설정하고,

set savehist=(10000 merge).history세션 종료 시 기록 목록에 저장되는 행 수를 설정하며, Merge는 종료 시 세션 기록과 전체 기록을 병합합니다.

alias precmd 'history -L; history -S'터미널의 모든 명령 전에 실행할 일부 명령을 설정하십시오. 이 -L옵션은 현재 기록 목록에 기록 파일을 추가합니다. 이 -S옵션은 기록 목록을 파일에 기록합니다.

내가 원하는 효과가 없습니다. 이제 터미널에 기록을 입력할 때마다 명령 기록 목록의 크기가 늘어납니다.드라마틱하게. 명령 내역 목록아니요세션 내의 터미널 탭 전체에서 업데이트됩니다.

나는 또한 어떤 개선도 없이 시도했습니다.

set history = 10000
set histdup = erase
set savehist = (${history} merge lock)

alias precmd 'history -S'
alias postcmd 'history -M'

모든 줄이 무엇을 의미하는지 완전히 확신할 수는 없지만 precmd명령을 실행하기 전에 이렇게 해야 한다는 뜻이고 postcmd명령을 실행한 후에 이렇게 하라는 의미라는 것을 알고 있습니다. 이 -M옵션은 기록 파일의 내용을 현재 기록 목록과 병합하고 각 명령에 포함된 타임스탬프를 기준으로 결과 목록을 정렬합니다.

.cshrc파일에 추가할 몇 가지 핵심 라인이 누락되었거나 순서를 변경해야 할 수도 있는 것처럼 꽤 가까워진 것 같습니다 .

관련 정보