Come creare un simbolo di directory come ~ per HOME?


4

Ho un percorso di directory per il quale voglio creare un collegamento, come ~ per una home directory degli utenti.

Ho provato il ENV variabili, e potrei abbinare $<something> per un percorso, ma non lo voglio $ lettera.

Sto indovinando forse con qualche tipo di .bashrc imbrogli ?!

Risposte:


1

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 TABe si completerà con cdp foo.


0

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 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.