我正在使用访问AWS的远程计算机。我有3个.aws/credential
个文件:
credentials
dev-credentials
root-credentials
当我想使用我的root凭据时,我使用以下.zshrc
别名:
alias rootcert="cp ~/.aws/root-credentials ~/.aws/credentials"
alias devcert="cp ~/.aws/dev-credentials ~/.aws/credentials"
使用根证书是危险的,我想要一个强大的视觉命令提示符指示我正在使用它。要测试的条件很简单 - ~/.aws/root-credentials
的内容是否等于~/.aws/credentials
的内容。
如果两个文件相同,我怎样才能在提示符中添加(粗体红色!)文本?
答案 0 :(得分:1)
管理证书文件的更好方法可能是使用符号链接。 让我构建一个与你的设置非常相似的设置,你可以适应。 您可以直接在Zsh会话中输入所有这些内容。
cd tmp
touch creds-dev creds-root
ln -s creds-root creds-active
这些以一致的 creds 前缀命名,以便在一起显示 列表。
现在你有一个符号链接,你可以随意改变指向一个或 另一个。例如,使开发版本处于活动状态:
ln -sf creds-dev creds-active
可以检查哪个处于活动状态的功能使用readlink
符号链接,看起来像:
certdetect() { [[ $(readlink creds-active) == "creds-root" ]] &&
print -P '%K{red}%BROOTCERT%b%k ' || print }
-P
告诉print
处理提示字符。 %K
适用于。{1}}
背景; %B
是大胆的。 %b
和%k
将其拒之门外
关闭。净结果是大胆的红色ROOTCERT
。这是可以测试的;
试试吧。
Zsh提示在每次渲染之前调用precmd
函数。用它
将您的电话添加到certdetect
并根据它设置变量:
precmd() { PR_ROOTCERT=$(certdetect) }
然后,您可以设置提示以包含动态变量。一个 示例提示仅包含:
PROMPT='$PR_ROOTCERT%# '
一旦你完成了所有这些工作,你就会想要将它的作品添加到你的作品中
活跃的prompt_«whatever»
文件。