【问题标题】:Bash: How to set changing variable in PS1, updating every promptBash:如何在 PS1 中设置更改变量,更新每个提示
【发布时间】:2016-02-11 05:16:37
【问题描述】:

我已经搜索了很长一段时间,但一直找不到关于在 bash 中的 PS1 中添加变量(即变量(即更改),每次都会更新)的帖子或任何信息出现新的提示。具体来说,我希望提示的宽度跨越整个终端窗口,例如:

7zS2::awesome| --------------------------------------------------------- ~/.config/awesome

这是我目前所拥有的,为了便于阅读而省略了颜色代码:

mytest=$PWD
mynext="$(basename $PWD)"
mylength=$((${#mytest}+${#mynext}))
length=$(($mylength+6))
PS1='7zS2::\W| $(printf "\\u2500%.0s" $(seq $length $(tput cols))) \w\n\$'

无论何时我都能完美运行

exec bash

重置提示。

但是,我希望它能够在我不必重新加载 bash 的情况下工作。当然必须有一种方法可以做到这一点,因为 \w、\W 等是独一无二的,并且每个提示都会更新。有什么方法可以轻松做到这一点? 谢谢!

7zS2

【问题讨论】:

    标签: bash unix console ps1


    【解决方案1】:

    试试这个。将您的代码放入一个文件中,我在我的主目录中将其命名为gash.sh,并稍作修改:将 PS1 赋值替换为 echo,并将单引号替换为双引号。

    mytest=$PWD
    mynext="$(basename $PWD)"
    mylength=$((${#mytest}+${#mynext}))
    length=$(($mylength+6))
    echo "7zS2::\W| $(printf \\u2500%.0s $(seq $length $(tput cols))) \w\n\$"
    

    然后在你的启动文件集 PS1:

    PS1='$(~/gash.sh)'
    

    【讨论】:

    • 快速修复,谢谢!现在唯一的问题是它打印出来很奇怪,但每次长度都很完美。这是它目前的样子:?------------------------------------\ \w\n $33[米]| -----------------------------
    • 即它不会读取转义码或颜色选项。对这个有什么建议吗?谢谢
    猜你喜欢
    • 2012-04-16
    • 2014-08-09
    • 2012-08-23
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多