Definindo aliases bash temporários ao inserir uma pasta

13

Às vezes, gosto de ter aliases de bash muito personalizados e talvez de atalhos de teclado quando eu entro em uma pasta (pode ser um projeto em que estou acostumado a digitar muitos comandos da CLI).

Vamos supor que, quando eu inserir uma pasta como "projectAlpha /", espere alguns aliases personalizados como:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

Mais do que eu pensava:

  • Exibir uma mensagem útil mostrando aliases e comandos comuns
  • Exibindo algumas atalhos de teclado personalizados comuns para meu projeto

Mas assim que deixo a raiz do meu projeto, essas configurações ficam indisponíveis.

Qual é a melhor abordagem para fazer isso hoje?

    
por gzinho 15.06.2016 / 17:31

1 resposta

14

Bash tem uma variável especial PROMPT_COMMAND cujo conteúdo é executado toda vez após o comando é executado, então você pode configurá-lo da seguinte forma:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

De agora em diante, toda vez que você estiver no diretório /tmp , o alias ll será criado e, em todos os outros diretórios, ele será removido.

Provavelmente, mais prático é reunir todos os seus aliases e outras coisas em uma função (digamos makealias ) e todas as unaliases na outra função makeunalias , que você pode executar dependendo de suas necessidades, algo como

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

Observe que o redirecionamento stderr está presente apenas para evitar alguns alertas inúteis, neste caso.

    
por 15.06.2016 / 17:54