如何在 shell bash 提示符中获取 [ current_path ]?

如何在 shell bash 提示符中获取 [ current_path ]?

是否可以在 shell 提示符中显示当前工作目录的名称?

我在 /srv/... 下的多个项目中使用 OSX 和 CentOS 进行工作,并且很快就犯了错误目录的错误。

我想拥有

[current_path] 在我的提示中不知何故,也许是彩色的,这可能吗?

例如像 /srv/myproject 它会给出提示 [root@server [myproject]# 即使在 /srv/myproject/app/etc 中这也应该保持不变

答案1

这应该接近您正在寻找的内容:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"\$p$ \" )"

为了测试,请使用以下命令显示完整目录以及截断的目录以供比较:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"[\$PWD] \$p$ \" )"

转义符使变量扩展被推迟到发出提示时。参数扩展会剥离第一级目录和第二级以下的所有目录级别。

您可能需要:

shopt -s promptvars

但我认为这是默认的。

仅当您位于以下目录中时,提示才会起作用/srv

这是添加一些颜色的一种方法。它使项目名称变成青色。

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p='[\[\033[1;36m\]'\${p%%/*}'\[\033[0m\]]'; echo -n \"\$p$ \" )"

答案2

中完整当前工作目录的字符序列$PS1\w。请参阅“提示:瞬发魔法”更多细节。

答案3

我在 Linux 系统上使用以下字符串/etc/bashrc。在大多数默认 Bash 安装中,通常只需将大写字母“W”替换为小写字母“w”即可:

PS1="[\u@\h \w]\\$ "

得出:

[root@MDMarra /ppro/edi/0010/GOODBI/receive/archive]#  

代替:

[root@MDMarra archive]#

相关内容