Como posso criar uma “base” para outros aliases se referirem e habilitarem os diretórios de comando cd base / x?

3

Eu tenho .bash_aliases com:

alias c1='cd /home/me/code/php'
alias c2='cd /home/me/code/jquery'
alias c3='cd /home/me/code/ruby'
alias c4='cd /home/me/code/c'

Como posso DRY aumentar o acoplamento para toda a estrutura de diretórios?

Eu tentei:

alias code_base='/home/me/code/'
alias c1='cd code_base/php'
alias c2='cd code_base/jquery'
alias c3='cd code_base/ruby'
alias c4='cd code_base/c'

mas recebo o erro "é um diretório" quando tento usar c1 a c4 .

Eu também tentei:

alias c1='cd 'code_base'/php'

mas isso não funcionou; isso me deu:

bash: cd: /php: No such file or directory

Eu tentei alias c1='cd '+ work +'/php' , mas isso também me deu o erro de diretório.

    
por Michael Durrant 07.06.2012 / 05:22

2 respostas

3

Em vez disso, use uma variável para definir o diretório base.

CODE_BASE="/home/me/code/"
alias c1="cd $CODE_BASE/php"
alias c2="cd $CODE_BASE/jquery"
alias c3="cd $CODE_BASE/ruby"
alias c4="cd $CODE_BASE/c"
    
por 07.06.2012 / 05:27
3

Além da resposta do mgorven, você também pode usar a variável CDPATH . De man bash :

   CDPATH The  search  path for the cd command.  This is a colon-separated
          list of directories in which the  shell  looks  for  destination
          directories  specified  by  the  cd  command.  A sample value is
          ".:~:/usr".

Se você definir como CDPATH=.:$HOME/code/ , basta executar cd php e alterar o diretório para $HOME/code/php se o diretório existir.

Outra solução é usar diretórios hash se você estiver usando zsh , por exemplo:

hash -d code_base=/home/me/code/

Depois, você pode usar cd ~code_base/directory para mudar para um diretório específico.

    
por 07.06.2012 / 07:42