Risposte:
Ho una piccola funzione utile che utilizzo:
# 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 poi ho un codice come questo per impostare le mie scorciatoie:
test -e ~/projects &&
_make_dir_complete cdp cd ~/projects &&
_make_dir_complete pdp pushd ~/projects
Questo imposterà due funzioni bash, cdp
e pdp
. cdp
Io uso per cambiare le directory, quindi faccio qualcosa di simile cdp foo
, che si tradurrà in cd ~/projects/foo
. pdp
funziona in modo simile, ma utilizza pushd
anziché. La parte bella è che fa anche il completamento, quindi posso digitare cdp f
, quindi premere TAB
e si completerà con cdp foo
.
Ho questo impostato nel mio .bashrc
:
alias re='cd /home/terdon/research/'
Quindi, se scrivo re
al prompt di BASH, direttamente cd
nel mio research
directory.
Funziona bene se vuoi solo cambiare nella directory in questione. Un altro modo sarebbe quello di impostare un alias che riecheggia il percorso della directory:
alias foo='echo /path/to/bar'
Puoi quindi fare, ad esempio:
$ ls `foo`
Avrai bisogno comunque delle virgolette. Per quanto ne so non c'è modo di creare un personaggio semplice, senza virgolette o $
fare ciò che vuoi in BASH. esso è possibile in zsh con "directory con nome".
Infine, puoi trovare alcuni suggerimenti interessanti Qui .