【问题标题】:Replacing a fixed part of PWD in a tcsh prompt在 tcsh 提示符中替换 PWD 的固定部分
【发布时间】:2017-08-28 08:28:06
【问题描述】:

我的提示目前显示如下:

[8 月 27 日 14:36] /x/y/z/w/u/v/dir1/dir2/dir3>

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

/x/y/z/w/u/v

$工作

所以最终会显示的是

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

/x/y/z/w/t/u 始终是我通常工作的同一条路径,我为其设置了一个局部变量 $WORK(非常类似于家庭 ~ 的想法)。

一个直接的解决方案将是最受欢迎的,因为我对设置 shell 真的不太了解。

【问题讨论】:

  • 不要使用 tcsh。阅读Csh programming considered harmful。考虑切换到zsh
  • 我会调查的,但目前想要 tcsh 的解决方案
  • 你读过tcsh的文档吗?您应该阅读它,然后编辑有关您尝试过的问题的问题。我想没有直接解决方案(例如,您需要一些工作才能找到它)。

标签: configuration command-prompt prompt tcsh


【解决方案1】:

只需将这些行放入~/.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)。在我的示例中,我通过在 precmd 的定义前添加 printf "%b" "\e[36m"; 为整个提示打开了非粗体青色。您可以通过这种方式添加自己的颜色,只需将类似的printf 命令放在那里。我通过将 %{\e[0;0m%} 附加到提示符来关闭颜色(恢复终端的默认文本颜色),提示符的结尾恰好由 prompt 变量设置。我正在使用%{...%},因为这是在设置prompt 变量时更改内部颜色的方式。所以基本上你应该使用printf "%b" "..."; 作为precmd 别名和%{...%} 作为prompt 变量。


我参考了这些:

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

【讨论】:

  • 谢谢你,这很完美!我唯一忘记提到的是我想用颜色 %{\e[36m%} 给它上色。我试了一下,但似乎找不到它的位置。您可以将此添加到您的答案中吗?
  • 非常感谢,太好了。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多