gpt4 book ai didi

带有提示的 Linux 命令行问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:02 35 4
gpt4 key购买 nike

我开始管理一个基于 CentOS 的新服务器。我想更改提示,所以我写了以下命令:

PS1="\e[0;36m[`pwd`]\$\e[m "

它工作得很好。但是因为我遇到了一个烦人的问题。当我写一些很长的东西,或者使用向上箭头显示一个很长的旧命令,或者粘贴它,然后单击“home”到达行首时,光标停在命令内,向前 10 个字符的提示。例如,假设我这样写:

[/]$ git log --pretty=oneline

然后点击主页按钮,光标将停在“--”之后的“p”字母上。如果我尝试用左键移动到最前面,它会发出烦人的提示音“你已经在那儿了,伙计”......

现在,假设我写了

ls

紧接着

git log --pretty=oneline

如果我上去两次,提示会显示这个:

[/]$ git log --ls

如果我继续往上走,“git log --”永远不会消失。现在,如果我按回车键,它仍然会毫无问题地启动 ls 命令。好像只是显示问题。但是,这一直让我感到困惑......

在此先感谢您的帮助!

最佳答案

使用 \w 在 shell 提示符下打印工作目录,而不是尝试嵌入命令。

您还需要对转义序列进行转义,这样 bash 就不会尝试将它们计为打印字符。这是通过用 \[\] 将它们括起来来完成的。

所以你最终应该得到这样的东西:

PS1="\[\e[0;36m\][\w]\$\[\e[m\]"

您的提示也很紧凑,您可能需要在其中插入一些空格。关键是你已经使用括号来转义不可打印的字符。

您可以在 bash 手册页的提示部分找到这些替换的完整列表。

关于带有提示的 Linux 命令行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447468/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com