4

У меня есть путь к каталогу, для которого я хочу создать ярлык, например ~ для домашнего каталога пользователя.

Я пробовал переменные ENV , и я мог бы сопоставить $<something> для пути, но я не хочу эту букву $ .

Я предполагаю, может быть, с каким-то махинациями .bashrc ?!

2 ответа2

1

У меня есть удобная маленькая функция, которую я использую:

# 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
}

И затем у меня есть некоторый код, подобный этому, чтобы настроить мои ярлыки:

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

Это создаст две Баш функции, cdp и pdp cdp я использую для смены каталогов, поэтому я делаю что-то вроде cdp foo , что будет переводиться в cd ~/projects/foo . pdp работает аналогично, но вместо этого использует pushd . Приятно то, что он также выполняет завершение, поэтому я могу набрать cdp f , затем нажать TAB , и он завершится с помощью cdp foo .

0

Я настроил это в моем .bashrc:

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

Так что, если я наберу re в приглашении BASH, я сразу cd в мой каталог research .

Это прекрасно работает, если вы хотите перейти в каталог, о котором идет речь. Другой способ - установить псевдоним, повторяющий путь к каталогу:

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

Затем вы можете сделать, например:

$ ls `foo`

Вам понадобятся кавычки. Насколько я знаю, нет способа установить простой символ без кавычек или $ чтобы делать то, что вы хотите в BASH. Вполне возможно , в Zsh с "именованными каталогами".

Наконец, вы можете найти несколько интересных советов здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .