有没有办法通过别名缩短(而不是删除)终端中显示的路径

Viv*_*V K 6 command-line bash gnome-terminal alias

我想要这样的东西:

"vivek@grishma:~/xxx/yyy/zzz/src$" 显示为

"vivek@grishma:datasource$" 我会以某种方式预定义“数据源”作为上面长路径的别名。

使用别名命令作为

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

对导航很有用,但它不会在提示中取出长路径。

这可能吗?

PS- 我不希望它只是“vivek@grishma:”,因为每次我应该运行 pwd 以了解我的工作目录时。

gle*_*man 6

这将:

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

这也使您可以灵活地定义其他特殊目录。

别名在这里帮不了你。

为了减少重复,将所有特殊目录放在一个数组中,并使用它来生成别名和提示。把所有这些放在你的 ~/.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" )\$'
Run Code Online (Sandbox Code Playgroud)