TCSH 기록에 특정 명령이 저장되지 않도록 제외하는 방법은 무엇입니까?

TCSH 기록에 특정 명령이 저장되지 않도록 제외하는 방법은 무엇입니까?

TCSH에 명령줄 기록을 저장하지만 자주 사용하는 간단한 명령(예: "exit", "cd")이 기록에 포함되지 않도록 하고 싶습니다(기록은 고정된 수의 명령만 저장하므로 보존하고 싶습니다). 유용한 명령).

현재 기록 파일에 추가되지 않는 명령 목록인 "제외 목록"을 지정하는 방법이 있습니까? 이렇게 하면 기록에서 가장 관련성이 높은 명령만 유지하고 기록을 방해하고 싶지 않은 명령은 필터링할 수 있습니다.

답변1

이는 정확히 원하는 것이 아니지만 다음이 도움이 될 수 있습니다.

  histdup (+)
    Controls handling of duplicate entries in the history list.  If set to `all' only unique his-
    tory  events are entered in the history list.  If set to `prev' and the last history event is
    the same as the current command, then the current command is not entered in the history.   If
    set  to  `erase'  and the same event is found in the history list, that old event gets erased
    and the current one gets inserted.  Note that the `prev' and `all' options  renumber  history
    events so there are no gaps.

따라서 .tcshrc에 "set histdup = all"을 넣으면 기록에 여전히 사소한 명령이 표시되지만 각 명령의 인스턴스는 하나만 가져오게 되어 최소한 혼란을 줄일 수 있습니다.

답변2

bash의 변수를 의미하는 경우 HISTCONTROLHISTIGNORE

HISTCONTROL=ignorespace앞에 공백이 있는 명령은 기록에 로드되지 않습니다.

HISTIGNORE=ls:cd:exit나열된 모든 명령이 기록에 추가되지 않도록 방지한 다음 아니요 - 해당 기능은 tcsh 자체에 없습니다.

답변3

이에 대한 멋진 대답이 있습니다. 여기에는 각 터미널을 종료하기 전에 프로그래밍 방식으로 기록을 필터링하는 것이 포함될 수 있습니다. 하지만 이렇게 하지 말고 대신 기록 크기를 늘리십시오. 쉘 시작 스크립트에서 "set History=XXX" 및 "set savehist=YYY"를 작성합니다. 여기서 YYY <= XXX입니다. "기록"은 모든 세션에 걸쳐 저장된 명령과 함께 세션에 저장된 명령 수입니다(터미널을 닫을 때 저장됨). 바라보다http://unixhelp.ed.ac.uk/shell/tcsh_hist1.html그리고http://unixhelp.ed.ac.uk/shell/tcsh_hist2.html.

전체 시스템의 기본값을 편집하려면 tsch.defaults(예: /usr/share/init/tcsh/tcsh.defaults)를 찾아보세요. 다음과 같습니다.

# History
set history = XXX
set savehist = YYY
set histfile = ~/.tcsh_history # History file

관련 정보