如何在shell bash提示中获取?

是否有可能在shell中提示当前工作目录的名称?

我工作OSX和CentOS在/ srv / …下的多个项目和错误的目录很容易犯的错误。

我想拥有

[current_path]在某种程度上我的提示,也许有颜色这可能吗?

例如像/ srv / myproject它会提示[root @ server [myproject]#这应该保持不变,即使在/ srv / myproject /应用程序/等

这应该接近你要找的东西:

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

要进行testing,请使用它来显示完整的目录以及截断的目录以进行比较:

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

逃逸导致variables扩展被推迟直到发出提示。 参数展开剥离第一级目录和第二级以下的所有目录级别。

您可能需要:

 shopt -s promptvars 

但我认为这是默认的。

当你在/srv目录下时,提示符只会执行它的工作

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

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

$PS1完整当前工作目录的字符序列是\w 。 有关更多详细信息,请参阅“提示:提示魔术” 。

我在Linux系统上的/etc/bashrc使用以下string。 通常这是在大多数默认Bash安装中用小写“w”replace大写“W”的问题:

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

这产生:

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

代替:

 [root@MDMarra archive]#