Conversão Bash to Fish: Exibe mensagem personalizada quando CD'ing em um diretório específico

1

Basicamente, eu gostaria de criar um arquivo .cd-lembrete com um anúncio / mensagem dentro de um diretório específico. Ele será exibido toda vez que alguém 'cd' entrar nesse diretório específico.

Já existe um shell script para isso e atualmente estou usando Fish e não estou familiarizado em como convertê-lo; qualquer ajuda apreciada!

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

alias cd=reminder_cd'
    
por Chad Taylor 15.09.2014 / 22:28

2 respostas

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

Acabei de perceber que isso retornará um status de saída sem êxito quando o arquivo .cd-lembrete não existir em um diretório. use isso em vez disso, a função só retornará o não sucesso se você não puder gravar no diretório dado.

function cd
    builtin cd $argv
    and begin
        test -f .cd-reminder
        and cat .cd-reminder
        or true
    end
end
    
por 16.09.2014 / 00:59
3

Você pode adicionar uma função como esta ao seu ~/.config/fish/config.fish :

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

(Isso evita a substituição da função cd interna, que gosta de manter o histórico de diretórios que você pode usar.)

Observe que você não deve adicionar isso como uma função carregada automaticamente em ~/.config/fish/functions/ , porque ela não será selecionada como acionada na alteração de $PWD até que seja executada manualmente.

    
por 26.10.2014 / 12:46