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

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

我想要这样的东西:

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

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

使用别名命令作为

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

对于导航很有用,但它不会删除提示中的长路径。

这可能吗?

PS-我不希望它只是“vivek@grishma:”,因为每次我都应该运行 pwd 才能知道我的工作目录。

答案1

这将做到:

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" )\$'

答案2

将以下脚本放入你的~/.bashrc

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

转到目录~/xxx/yyy/zzz/src并更改提示

. ~/.bashrc

在其他目录中,要再次恢复原始提示,请输入您的~/.bashrc.

我认为你不需要为此使用别名。你始终可以使用别名,例如

alias src='. ~/.bashrc'

相关内容