Git Bash如何在终端中执行命令后删除空行

Xia*_*ang 3 git-bash

我将 Windows 版本的 Git Bash 更新到 3.0.2,现在遇到了一个很烦人的问题,很难解释。在终端中,每条命令执行完后,总会自动添加一个新的空行,例如:

User@path $ CMD-1
                         <<-- new line
User@path $ CMD-2
                         <<-- new line
User@path $ CMD-3
                         <<-- new line
User@path $
Run Code Online (Sandbox Code Playgroud)

它显示如下图: 在此处输入图片说明

我的问题是如何删除这种类型的命令尾新行?

更进一步,哪个源文件在每个命令执行后添加这些尾部新行?因为我几乎检查了PS1与输入相关的每个文件,但我仍然无法弄清楚为什么会发生这种愚蠢的功能。非常感谢您的帮助。

Rob*_*obC 6

这是由您的PS1 shell 变量的配置方式引起的。

如果您在 Git Bash 中运行以下命令,它将打印$PS1变量的当前值:

echo "$PS1"
Run Code Online (Sandbox Code Playgroud)

例如,$PS1我电脑上的默认值设置为:

\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$
                                ^^                                                                                       ^^
Run Code Online (Sandbox Code Playgroud)

注意:由于我使用的是早期版本的 Git Bash,您的显示将与上面显示的有所不同。但是,重要的是要注意两个换行符\n(我已经添加了插入符号^^来清楚地指示它们)。您的值$PS1可能只有一个换行符\n。

本质上,正是这些/这个换行符 ( \n) 字符在运行命令后产生了空白换行符。


解决方案:

要删除“command-tail new line”,请考虑运行以下复合命令:

echo $'\n'"export PS1='${PS1//\\n/}'" >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

解释:

  • 这实质上是向其中任何一个添加了新代码;

    1. 您现有的最终.bash_profile启动文件(如果该文件确实已经存在于你的HOME目录)。

    2. 或在新创建的开始.bash_profile在你的主目录文件(如果该文件不存在)。

    例如,您的.bash_profile文件现在将包含一行,内容如下:

    export PS1='<newvalue>'

  • 也就是行被添加到.bash_profile利用export以定义一个新的值$PS1shell变量。该<newvalue>部分实际上是您当前的 PS1 值减去任何换行符\n。

  • 读${PS1//\\n/}入上述复合命令的部分利用参数扩展从当前$PS1值中删除所有换行符。

运行上述复合命令后,下次创建新会话(即创建新窗口或重新启动 Git Bash)时,应该解决“command-tail new line”问题。


编辑:更改文件中的PS1值git-prompt.sh:

如果您不想PS1使用上述解决方案覆盖默认值,您可以更改git-prompt.shGit Bash 在安装过程中创建的文件中的值。

去做这个:

  1. 打开git-prompt.sh在代码编辑器中命名的文件。该文件通常位于:

    C:/Program Files/Git/etc/profile.d/git-prompt.sh

  2. 查找换行符的实例,即\n并删除它们。

    例如; 我的git-prompt.sh文件包含几行,内容如下:

    PS1="$PS1"'\n'
    
    Run Code Online (Sandbox Code Playgroud)

    我简单地删除了该'\n'部分,以便他们阅读:

    PS1="$PS1"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存您对git-prompt.sh文件所做的更改,然后创建一个新会话(即创建一个新窗口,或重新启动 Git Bash)。