在tcsh提示符中替换PWD的固定部分

时间:2017-08-28 08:28:06

标签: configuration command-prompt prompt tcsh

我的提示目前显示如下:

  

[Aug-27 14:36] / x / y / z / w / u / v / dir1 / dir2 / dir3>

我想要做的是替换当前工作目录的常量部分路径

  

/ X / Y / Z / W / U / V

  

$ WORK

所以最终会显示的是

  

[8月27日14:36] $ WORK / dir1 / dir2 / dir3>

/x/y/z/w/t/u始终与我通常工作的路径相同,并且我设置了一个局部变量$WORK(非常类似于home ~的想法)。

直接的解决方案将受到欢迎,因为我真的不太了解设置shell。

2 个答案:

答案 0 :(得分:2)

将这些行放入~/.tcshrc

set WORK='/x/y/z/w/u/v'
set dollar='$'
alias precmd 'printf "%b" "\e[36m"; date +"[%b-%d %H:%M] " | tr -d "\n";  [ `expr "$PWD" : "$WORK*"` -gt 0 ] && printf "%s" "$dollar$PWD" | sed "s|$WORK|WORK|" - || printf "%s" "$PWD"'
set prompt='%#%{\e[0;0m%} '

# The default tcsh ^L binding for screen clearing does not run precmd.
# This one does.
bindkey -s "^L" "clear\n"

precmd是一个命令,在向您显示提示之前运行。您可以使用它来使用系统上可用的其他命令自定义提示。

对于颜色,您可以使用\e[36m等特殊颜色序列添加它们(更多详情here)。在我的示例中,我通过将printf "%b" "\e[36m";添加到precmd的定义中来为整个提示打开非粗体青色。你可以用这种方式添加自己的颜色,只需在那里的某处放置一个类似的printf命令。我通过将 %{\e[0;0m%} 附加到提示符来关闭颜色(恢复终端的默认文本颜色),其结尾恰好由prompt变量设置。我正在使用%{...%}因为这是在设置prompt变量时更改颜色的方法。所以基本上你应该printf "%b" "...";用于precmd别名,%{...%}用于prompt变量。

我用这些作为参考:

在Ubuntu 17.04上进行测试,tcsh --version返回tcsh 6.20.00 (Astron) 2016-11-24 (x86_64-unknown-linux) options wide,nls,dl,al,kan,sm,rh,nd,color,filec

答案 1 :(得分:0)

这只是一个自定义提示,可能会让您了解如何创建/改进您的提示:

set COLOR1="%{\e[0;32m%}"
set COLOR2="%{\e[0;33m%}"
set COLOR3="%{\e[0;36m%}"
set COLOR4="%{\e[0;0m%}"
set COLOR5="%{\e[0;33m%}"
set prompt="$COLOR2\[$COLOR3%n@%M$COLOR2\:$COLOR1%~$COLOR2\] [%p %d]\n$COLOR5>$COLOR4 "
set promptchars = "%#"

提示符如下:

[user@host:/current/dir] [current date]
>

COLOR变量一样,您可以设置WORK

此外,这个答案可能有所帮助:https://stackoverflow.com/a/20871994/1135424