Есть ли способ сократиться (не, удаляют), путь, отображенный в терминале псевдонимом

Я хочу что-то вроде этого:

"vivek@grishma:~/xxx/yyy/zzz/src$" быть показанным как

"vivek@grishma:datasource$" где я так или иначе предопределил бы "источник данных", чтобы быть псевдонимом для длинного тракта выше.

использование псевдонима управляет как

" alias datasource='~/xxx/yyy/zzz/src'"

полезно для навигации, но она не вынимает длинный тракт в подсказке.

Действительно ли это возможно?

PS - Я не хочу, чтобы это было просто "vivek@grishma": как затем каждый раз я должен выполнить pwd для знания моего рабочего каталога.

6
задан 1 April 2014 в 17:53

2 ответа

Это сделает:

PS1='\u@\h:$(
    case $PWD in
       $HOME/xxx/yyy/zzz/src) echo "datasource ;; 
       *) echo "\w" ;; 
    esac
)\ 

, Который дает Вам гибкость для определения других специальных каталогов также.

Псевдонимы не помогут Вам здесь.

Для сокращения дублирования поместите всех специальных директоров в массив и использование что генерировать псевдонимы и также подсказку. Поместите все это в свой ~/.bashrc:

declare -A labels=(
    [$HOME/xxx/yyy/zzz/src]=datasource
    [$HOME/foo/bar]=baz
)
for path in "${!labels[@]}"; do
    alias "${labels[$path]}"="$path"
done
function path_label () {
    local IFS=:
    if [[ ":${!labels[*]}:" == *:"$PWD":* ]]; then
        # we're in a "known" dir
        echo "${labels[$PWD]}"
    else
        return 1
    fi
}
PS1='\u@\h:$( path_label || echo "\w" )\

, Который дает Вам гибкость для определения других специальных каталогов также.

Псевдонимы не помогут Вам здесь.

Для сокращения дублирования поместите всех специальных директоров в массив и использование что генерировать псевдонимы и также подсказку. Поместите все это в свой ~/.bashrc:

declare -A labels=(
    [$HOME/xxx/yyy/zzz/src]=datasource
    [$HOME/foo/bar]=baz
)
for path in "${!labels[@]}"; do
    alias "${labels[$path]}"="$path"
done
function path_label () {
    local IFS=:
    if [[ ":${!labels[*]}:" == *:"$PWD":* ]]; then
        # we're in a "known" dir
        echo "${labels[$PWD]}"
    else
        return 1
    fi
}
PS1='\u@\h:$( path_label || echo "\w" )\
6
ответ дан 17 November 2019 в 09:18

Поместите следующие сценарии в Ваш ~/.bashrc

if [ "$(pwd)" == "$HOME/xxx/yyy/zzz/src" ]; then
    PS1='\u@\h:datasource$ '
else
    :
fi

, Переходят к каталогу ~/xxx/yyy/zzz/src и изменить подсказку

. ~/.bashrc

В другом каталоге, для возвращения исходной подсказки снова получают Ваш ~/.bashrc.

я не думаю, что Вам нужен псевдоним для этого. Всегда можно использовать псевдоним как

alias src='. ~/.bashrc'
1
ответ дан 17 November 2019 в 09:18

Другие вопросы по тегам:

Похожие вопросы: