Bash에서 Fish로 변환: CD가 특정 디렉토리에 들어갈 때 사용자 정의 메시지 표시

Bash에서 Fish로 변환: CD가 특정 디렉토리에 들어갈 때 사용자 정의 메시지 표시

기본적으로 공지 사항/메시지가 포함된 특정 디렉터리에 .cd-reminder 파일을 만들고 싶습니다. 누군가가 특정 디렉토리에 "cd"할 때마다 표시됩니다.

이를 달성하기 위한 쉘 스크립트가 이미 있습니다. 현재 Fish를 사용하고 있지만 변환 방법에 익숙하지 않습니다. 도움을 주시면 감사하겠습니다.

reminder_cd() { 
    builtin cd "$@" && { [ ! -f .cd-reminder ] || cat .cd-reminder 1>&2; }
}

alias cd=reminder_cd`

답변1

다음과 같은 기능을 추가할 수 있습니다 ~/.config/fish/config.fish.

function show-reminder --on-variable PWD
   if test -f .cd-reminder
        cat .cd-reminder
   end
end

cd(이렇게 하면 사용할 수 있는 디렉터리 기록을 유지하는 내장 기능을 재정의하는 것을 방지할 수 있습니다 .)

~/.config/fish/functions/이 기능 은 수동으로 실행할 때까지 변경 시 실행되는 것으로 간주되지 않으므로 에서 자동 로드 기능으로 추가하면 안 됩니다 .$PWD

답변2

function cd
    builtin cd $argv
    and test -f .cd-reminder
    and cat .cd-reminder
end

.cd-reminder 파일이 디렉토리에 없으면 이것이 실패한 종료 상태를 반환한다는 것을 방금 깨달았습니다. 대신 이것을 사용하십시오. 그러면 주어진 디렉토리로 cd할 수 없는 경우 함수는 실패를 반환할 것입니다.

function cd
    builtin cd $argv
    and begin
        test -f .cd-reminder
        and cat .cd-reminder
        or true
    end
end

관련 정보