종료 코드가 0인 경우에만 명령줄 기록 저장

종료 코드가 0인 경우에만 명령줄 기록 저장

~/.bash_history오타가 있는 명령까지 포함하여 내가 실행한 모든 명령을 확인하고 볼 수 있었습니다 . 성공한 명령(예: 종료 코드 0)만 저장하는 방법이 있나요?

참고: 저는 bash와 zsh를 사용하고 있습니다.

답변1

~/.bashrc파일 에 저장하세요

good_history(){ 
  exit_status=$?
  if ((!exit_status)); then 
     history 1 >> history.txt
  fi
}

export PROMPT_COMMAND="good_history"

~/.bashrc소스를 실행한 후source ~/.bashrc

  • 위의 구성은 함수 정의입니다.function_name() { command_goes_here; }

  • 종료된 명령만 0파일에 저장됩니다.history.txt

  • 쉘에 관한 한 종료 상태는 0성공이고, 그렇지 않으면 실패입니다.

  • 내장 변수는 $?대화식이든 아니든 마지막으로 실행된 명령의 마지막 종료 상태를 유지합니다.

  • 수학적 맥락에서 0bash에서는 실패하고 1the에서는 성공 (( ))하므로 bang 문자의 사용을 무효화합니다 !.help test

  • >>해당 항목이 가리키는 위치(이 경우에는 파일)에 추가 됩니다 .

  • PROMPT_COMMAND쉘 세션에서 실행하려는 변수에 대한 bash 매뉴얼 섹션을 참조하십시오.PAGER='less +/^[[:space:]]*PROMPT_COMMAND' man bash

  • 필요할 수도 있고 필요하지 않을 수도 있지만 파일에 어떤 설정이 있는지 export잘 모르므 로 거기에 있습니다.shellrc

  • 누군가가 그것을 사용하기를 기다리고 있습니다.zsh

관련 정보