Existe uma maneira de dizer ao shell (zsh de preferência) sobre um comando?

3

Eu defini um alias:

alias school="cd ~/School/3BaFys/"

para ir rapidamente para a pasta 3BaFys , que contém todos os diretórios que preciso deste ano.

Existe uma maneira de dizer a zsh que quando eu faço:

$school Num<TAB>

isso se expande para

$school Numerieke\ Methoden

em que Numerieke \Methoden é um subdiretório de ~/School/3BaFys/

Por exemplo, diga ao shell o que o school realmente faz e permite que ele seja inteligente?

    
por romeovs 02.11.2011 / 14:34

2 respostas

5

Sim.

Acabei de encontrar este artigo descrevendo como fazer isso.

Basicamente, você reescreve seu alias para uma função e depois usa alguma mágica de compilação nele.

Isso deve resolver seu problema:

school() { cd ~/School/3BaFys/$@; }
compctl -/ -W ~/School/3BaFys school
    
por 02.11.2011 / 14:47
1

Sim , mas talvez seja mais conveniente lidar com o problema de maneira um pouco diferente.

setopt autocd
school=~/School/3BaFys/

Digite a linha de comando $school para alterar para esse diretório. Digite $school/Numerieke\ Methoden para mudar para o diretório this e você terá a conclusão da parte Numerieke Methoden (e também de school ) fora da caixa. E você pode escrever coisas como xpdf $school/foo.pdf para acessar arquivos nesse diretório sem alterá-lo.

Se você não gosta de poluir o seu espaço de parâmetro, pode usar um diretório nomeado :

hash -d school=~/School/3BaFys/
~school
ls ~school
    
por 03.11.2011 / 00:46