2016-07-20 4 views
1

이 기사 다음에 Fish Shell을위한 작은 스크립트를 쓰고 싶습니다. How (and Why) to Log Your Entire Bash History.Fish Shell Auditing

제한 :

  1. 나는 물고기에 상응하는 어떤 BASH PROMPT_COMMAND를 찾지 못했습니다.
  2. 맞춤형 Oh My Fish 프롬프트를 사용하고 있습니다. 커스텀 어류 프롬프트를 수정하지 않아도 좋을 것 같습니다.

답변

8

잘못된 길로 가고 있습니다. 입력 한 모든 명령을 기록하고 싶습니까? 이미 기본적으로 피쉬는 모든 세션의 마지막 256k 중복 제거 항목을 유지하므로 실제로 아무것도 할 필요가 없습니다.

당신이 PROMPT_COMMAND 동등한를 원한다면, 음, (이미 사용자 정의한)을 fish_prompt 기능이있다 프롬프트를 표시하고, 다른 무언가에게 메시지가 당신이 리스너를 정의 할 수 있습니다 fish_prompt 이벤트가 거기에 나타납니다 때마다 할 같은

function name --on-event fish_prompt 
    # do stuff 
end 

원하는 경우

당신이 다른 파일에 실행 모든 것을 기록하기 때문에

function log_commands --on-event fish_preexec 
    # fish_preexec functions receive the commandline as the argument (see `function --help`) 
    echo $argv >> ~/fish.log 
end 

작동 할의 fish_preexec 이벤트가있다.

+1

이것을 확장하려면 물고기가 이미 전체 기록을 기록하고 '기록'을 사용하여 액세스 할 수 있습니다. 또한 여러 개의 세션을 단일 히스토리 파일로 병합합니다. 이는 bash 히스토리의 주요 제한 사항입니다. –

+0

답변 해 주셔서 감사합니다. 도움이되었습니다. 모든 명령 (중복 포함)을 로깅하는 목적은 기사에서 언급 한대로 정렬을 감사하고 'fish_history'를 바꾸지 않는 것입니다. – neowulf33