如何让bash的目录路径显示在终端右侧

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

如何让bash的目录路径显示在终端右侧

#1

帖子 linuxmm9 » 2018-07-19 16:43

zsh可以 不知道bash怎么设置 :What
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 如何让bash的目录路径显示在终端右侧

#2

帖子 astolia » 2018-07-19 17:26

bash没有RPS1这种东西,没法做
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

Re: 如何让bash的目录路径显示在终端右侧

#3

帖子 linuxmm9 » 2018-07-19 17:29

astolia 写了: 2018-07-19 17:26 bash没有RPS1这种东西,没法做
好吧😔
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 如何让bash的目录路径显示在终端右侧

#4

帖子 astolia » 2018-07-19 17:36

又想了一下,理论上可以通过设置PROMPT_COMMAND,在自定义函数中获取当前终端宽度,然后根据终端宽度和当前目录显示长度,算出需要的空格数量,再去设置PS1的值。很麻烦,效果也不见得好到哪里去。差不多就像这样

代码: 全选

PS1='                                       \W\r$ '
前面的空格数量就是你要自己算的
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何让bash的目录路径显示在终端右侧

#5

帖子 oneleaf » 2018-07-19 17:45

试试:

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]left prompt > '
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

Re: 如何让bash的目录路径显示在终端右侧

#6

帖子 linuxmm9 » 2018-07-19 19:08

oneleaf 写了: 2018-07-19 17:45 试试:

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]left prompt > '
就是我需要的 太感谢了 不过家目录显示的是绝对路径 能显示相对路径吗

另外还想问一个问题 终端在任务栏里会显示用户名和主机名 还有目录路径 就像xxx@xxx:/usr/local 这个可以改吗
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何让bash的目录路径显示在终端右侧

#7

帖子 oneleaf » 2018-07-19 19:46

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]\u@\h: '
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

Re: 如何让bash的目录路径显示在终端右侧

#8

帖子 linuxmm9 » 2018-07-19 19:56

oneleaf 写了: 2018-07-19 19:46

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]\u@\h: '
不是这个意思 我就是不要显示用户名和主机名 我的意思是改掉终端在任务栏上显示的名字 终端里显示>就行了

右边的路径显示的是绝对路径 没有显示~
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何让bash的目录路径显示在终端右侧

#9

帖子 oneleaf » 2018-07-19 20:03

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]> '
右边显示相对home的路径,貌似做不到,看看其他人有没有办法。
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

Re: 如何让bash的目录路径显示在终端右侧

#10

帖子 linuxmm9 » 2018-07-19 20:24

oneleaf 写了: 2018-07-19 20:03

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd)
}

export PS1='\[$(tput sc; rightprompt; tput rc)\]> '
右边显示相对home的路径,貌似做不到,看看其他人有没有办法。
好的 谢谢你
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 如何让bash的目录路径显示在终端右侧

#11

帖子 astolia » 2018-07-19 20:41

一个简单的做法是用sed替换

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd | sed 's:^'$HOME'$:~:;s:^'$HOME'/:~/:')
}
export PS1='\[$(tput sc; rightprompt; tput rc)\]> '
但这类利用回车的做法和zsh的RPS1差别还是还是很多的,比如你输入时按退格就没了,窗口宽度改变的时候也不能重排版,一行输入长了和zsh的行为也差很多
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何让bash的目录路径显示在终端右侧

#12

帖子 oneleaf » 2018-07-19 20:43

😓,我居然忘记了 sed
linuxmm9
帖子: 214
注册时间: 2017-08-19 10:12
系统: linux

Re: 如何让bash的目录路径显示在终端右侧

#13

帖子 linuxmm9 » 2018-07-20 2:32

astolia 写了: 2018-07-19 20:41 一个简单的做法是用sed替换

代码: 全选

rightprompt()
{
    printf "%*s" $COLUMNS $(pwd | sed 's:^'$HOME'$:~:;s:^'$HOME'/:~/:')
}
export PS1='\[$(tput sc; rightprompt; tput rc)\]> '
但这类利用回车的做法和zsh的RPS1差别还是还是很多的,比如你输入时按退格就没了,窗口宽度改变的时候也不能重排版,一行输入长了和zsh的行为也差很多
好的 我再試試 你真是太好了
回复