Como criar um símbolo de diretório como ~ para HOME?

4

Eu tenho um caminho de diretório para o qual desejo criar um atalho, como ~ para um diretório inicial de usuários.

Eu tentei as variáveis ENV e pude corresponder $<something> para um caminho, mas não quero essa $ letter.

Eu estou supondo que talvez com algum tipo de .bashrc shenanigans?!

    
por p1100i 29.08.2012 / 21:06

2 respostas

1

Eu tenho uma pequena função útil que uso:

# A function to help with creating directory aliases and providing
# completion for them.
# Taken from here:
#   http://blog.caioromao.com/2010/10/10/Custom-directory-completion.html
# Tweaked to work with more than just 'cd'
_make_dir_complete() {
    local aliasname=$1
    local prgname="__s_${aliasname}__"

    cd "$3" >/dev/null 2>&1
    local dirname=$(pwd -L)
    local realpath=$(pwd -P)
    cd - >/dev/null 2>&1

    FUNC="function $prgname() {
        local cur len wrkdir;
        local IFS=\$'\n'
        wrkdir=\"$realpath\"
        cur=\${COMP_WORDS[COMP_CWORD]};
        len=\$((\${#wrkdir} + 2));
        COMPREPLY=( \$(compgen -S/ -d \$wrkdir/\$cur| cut -b \$len-) );
    }"
    ALIAS="$aliasname () { $2 \"$dirname/\$*\"; }"

    eval $FUNC
    eval $ALIAS
    complete -o nospace -F $prgname $aliasname
}

E então eu tenho um código como este para configurar meus atalhos:

test -e ~/projects &&
    _make_dir_complete cdp cd ~/projects &&
    _make_dir_complete pdp pushd ~/projects

Isso configurará duas funções bash, cdp e pdp . cdp eu uso para alterar diretórios, então eu faço algo como cdp foo , que será traduzido em cd ~/projects/foo . pdp funciona de maneira semelhante, mas usa pushd . A parte interessante é que ele também é concluído, então eu posso digitar cdp f , depois pressionar TAB e ele será concluído com cdp foo .

    
por 15.09.2012 / 15:36
0

Eu tenho isso configurado no meu .bashrc :

alias re='cd /home/terdon/research/'

Então, se eu digitar re no prompt do BASH, eu diretamente cd no meu diretório research .

Isso funciona bem se você quiser apenas mudar para o diretório em questão. Outra forma seria definir um alias que ecoa o caminho do diretório:

alias foo='echo /path/to/bar'

Você pode fazer, por exemplo:

$ ls 'foo'

Você precisará das aspas invertidas. Tanto quanto eu sei, não há maneira de configurar um caractere simples, sem citações ou $ para fazer o que você quer no BASH. É possível em zsh com "diretórios nomeados".

Finalmente, você pode encontrar algumas dicas interessantes aqui .

    
por 15.09.2012 / 15:17