bash - 尝试根据 CWD 更改 bash 提示的颜色。更改目录后无法更新
问题描述
我有两个存储驱动器,正在尝试配置我的 bashrc 文件来执行此操作:
如果 cwd 在驱动器 B 上:
- 截断 bash 提示符以从第二个驱动器的 /home 目录开始
- 将 bash 提示的颜色更改为红色,以了解我正在另一个驱动器中工作。
到目前为止,我已经能够使用以下代码完成更改颜色,并且可以通过使用 '\W' 修饰符截断整个提示以仅显示基本名称 - 但我正在努力通过指定底部目录来修剪 PROMPT_COMMAND ...
IE
/media/devj/2a24a03f-99a1-44bd-9a53-341zdd68334b/home/dev --> /home/dev/
解决方案:感谢您的帮助,这就是我最终做的事情:
#Check if we are accessing my home folder from secondary drive
#If so change the color and trim the filepath to secondary /home
bash_prompt_command() {
root_path=`pwd | awk -F/ '{print $(NF-(NF-2))}'`
if [ $root_path = media ]; then #Shared drive
#Trim path up to the home directory
trim_path=${PWD#/media/devj/9a84a09e-80e9-44bd-9a53-342e3d48334c/}
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$trim_path\[\033[38;5;214m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[38;5;214m\]$(parse_git_branch)\[\033[00m\]\$ '
fi
}
# init it by setting PROMPT_COMMAND
PROMPT_COMMAND=bash_prompt_command
解决方案
trim_path=${PWD#/*/*/*/}
替换您想从路径开头省略的许多目录。
推荐阅读
- python - 是否可以制作“获取根本不重复的值”算法,而不使用排序?(时间复杂度 => O(n)
- google-cloud-platform - 无法通过 Google 云功能中的 VPC 连接器从私有 IP 地址访问 http 服务
- .net - 我想对这个登录方法进行单元测试
- maven - Maven(Surefire) 排除所有单元测试用例但选择运行
- reactjs - 如何使用 react-window List + Infinte Loader 显示用户当前的索引
- spring-boot - 带有 Spring Boot 的千分尺添加自定义指标来计算用户注册
- c++ - 顶级声明错误,但程序运行正确
- mongodb - Mongo DB:如何在聚合阶段 $group 后获取原始文档?
- amazon-web-services - 提高 aQuestion 回答、BERT 和 GPT 的性能,在没有 GPU 的情况下进行预测
- php - Laravel:如何按值从多维集合中删除项目