【问题标题】:Trying to set a prompt to display a specific portion of PWD in ZSH尝试设置提示以在 ZSH 中显示 PWD 的特定部分
【发布时间】:2021-09-30 11:11:36
【问题描述】:

我目前在 ZSH 中使用它 export PS1='${USER}:${PWD}: '

我可以使用这个: export PS1='${USER}:${PWD##*/} \$ '

但是我想在文件夹层次结构中看到一个文件夹,所以我想使用这样的东西, export PS1='${USER}:${PWD | cut -d '/' -f6}:${PWD##*/} '

但这不起作用,它只是显示了这个: ${USER}:${PWD | cut -d / -f6}:${PWD##*/}

我希望它显示一个特定的文件夹(在 f6 位置),然后是当前目录。

有什么想法可以做到这一点吗?

【问题讨论】:

    标签: zsh ps1


    【解决方案1】:

    这行得通吗?:

    setopt prompt_subst
    export PROMPT='${USER}:${${(s:/:)PWD}[5]}:${PWD:t} '
    

    部分作品:

    • setopt prompt_subst - 允许扩展提示中的 ${...}。您的 ~/.zshrc 中可能已经有这个了。
    • PROMPT - 效果与PS1 相同。
    • ${(s:/:)PWD} - 将PWD 中的工作目录值拆分到/s 上。
    • ${...[5]} - 选择该拆分的第五个元素(与 cut 的第六个字段相关)。
    • ${PWD:t} - 从路径中选择“尾”(最后一个)元素。

    s 参数扩展标志与 t 修饰符一起记录在 zshexpn 手册页中。您可能还想查看zshmisc 手册页中描述的提示转义,以及zshcontrib 中的precmd 挂钩。

    【讨论】:

    • Setopt 似乎不存在并且 PROMPT 参数被忽略,我最终只是用返回线导出 PS1 来避免问题(下面我的命令上方的长目录)。
    • @DavidHarman - 感谢您的关注。听起来你的 shell 设置为 bash 而不是 zsh
    • 你是对的@Gairfowl,它是 KSH,而不是 ZSH,对此感到抱歉......
    • @DavidHarman - 不用担心。如果您仍在寻找适用于 ksh 的答案,那么发布新问题可能会更好。
    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2017-02-22
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多