Evitando o uso de 'cd ..' no bash?

4

Eu configurei um alias no meu .bashrc da seguinte forma:

alias u='cd ..'

Tudo está bem no meu mundo ... até eu digitar cd .. e estragar que eu não usei meu novo alias incrível. De fato, com essa coisa em particular, está muito arraigada. Difícil mudar meu comportamento - preciso de uma intervenção séria.

Então, eu naturalmente tentei configurar outro alias para me impedir de usar cd .. :

alias 'cd ..'='echo "Use your alias!"'

Mas isso aparentemente não funciona. Meu pensamento é que isso também pode de alguma forma entrar em conflito com o u alias, em algum tipo de loop infinito de aliasing.

Alguma idéia?

    
por kenny 07.05.2011 / 21:34

1 resposta

10

Qualquer coisa mais complicada que fornecer alguns argumentos extras para um comando é demais para um alias e requer uma função. Use builtin cd para chamar o original.

cd () {
  if [ "$*" = ".." ]; then
    echo 1>&2 'Use your alias instead!'
    return 2
  else
    builtin cd "$@"
  fi
}

Se você estiver executando o bash ≥4.0, questiono o utilitário desse alias específico. Coloque shopt -s autocd no seu ~/.bashrc e digite .. ou qualquer outro nome de diretório para alternar para ele.

    
por 07.05.2011 / 21:53

Tags