Definir aliases temporários do bash ao inserir uma pasta


13

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

Vamos supor que quando eu entrar em uma pasta como "projectAlpha /", espero alguns aliases personalizados, como:

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

Mais do que eu estava pensando:

  • Exibir uma mensagem útil mostrando aliases e comandos comuns
  • Exibindo algumas combinações de teclas personalizadas comuns para o 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?


veio um pensamento aqui agora para usar um alias para "cd" em ~ / .bashrc, um alias para entrar em um diretório e inicia um novo bash que lê o escondido .bashrc no diretório ...
gzinho

Respostas:


14

Bash tem variável especial PROMPT_COMMANDque o conteúdo é executado a cada vez após o comando é executado, assim você pode configurá-lo como segue:

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

A partir de agora, toda vez que você estiver no /tmpdiretório, o alias llserá criado e em todos os outros diretórios será removido.


Provavelmente, o mais prático é reunir todos os seus pseudônimos e outras coisas em uma função (digamos makealias) e todos os pseudônimos na outra função makeunaliasque 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 nesse caso.


ty, eu vou tentar. 1 (se eu puder)
gzinho 15/06

1
@ user3697611 Você não precisa de reputação para aceitar a resposta para sua própria pergunta. Clique na marca de seleção ao lado da resposta.
Barmar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.