在 bash 中的命令后添加垂直空格

在 bash 中的命令后添加垂直空格

如何在 bash 中的每个命令后添加垂直空格?

寻找一点点垂直空间,不是一条完整的线。行高的 1/4 或 1/3 就可以了。

[编辑] 要添加的空间仅位于命令+输出包之后。命令和关联输出之间的行仍然使用默认间距。示例: do ls,使用常规行间距显示输出;只有在输出之后,我们才能获得增加的间距,以将命令+输出对与下一个命令+输出清楚地分开。

答案1

这更像是一个“终端应用程序”功能/配置选项,而不是 bash 选项。 Bash 不知道字体或空格,这与终端有关。

例如:Mac Os X 的终端程序允许在行之间设置更多空间:http://osxdaily.com/2015/01/05/increase-line-spacing-terminal-mac-os-x/

如果这就是您正在寻找的,您应该检查您的终端程序,看看它是否允许您进行配置。

编辑:如果您只想在命令本身的输出之后添加额外的空格,请尝试以下操作:

export PS1='\n\[\033[01;31m\]\u@\H:\[\033[02;36m\] \w \$\[\033[00m\] '

它添加了一整行(\n),但也许总比没有好。

答案2

我不知道有任何终端模拟器支持这些方面的任何内容。终端(或图形终端模拟器)的基本概念是使用文本网格。屏幕被分成大小相等的单元格矩阵,每个单元格包含一个字母。您可以打印简单的文本流,但也可以将光标任意定位在网格内并覆盖任何单元格的内容。

有一些例外,例如 CJK 字母占用两个相邻的单元格,xterm 甚至支持以双倍宽度和/或双倍高度打印普通字母(除了终端测试之外,我从未见过它在任何地方使用),但它是仍然与基本网格对齐。

您所要求的需要从头开始重新设计整个概念。允许通过某种现在不存在的方式进行任意定位,并确定如果将字符打印在与先前打印的字符部分重叠的位置,会发生什么情况。

这将导致系统比终端仿真器为您提供的系统更加复杂,从而获得边际收益。

为了使命令输出的结尾脱颖而出,我可以向您推荐的是使用特殊颜色的提示,可能是粗体或斜体或类似的字体。

答案3

将以下内容放入文件中:

command1()
{
    if [ "$BASH_COMMAND" != command2 ]
    then
        command_flag=1
    fi
    return 0
}
trap command1 debug
command2()
{
    if [ "$command_flag" ]
    then
        echo ""
    fi
    command_flag=
}
PROMPT_COMMAND=command2

我建议您将名称command1command2和更改command_flag 为您不太可能键入的值。然后source那个文件。 (或者只是将以上内容放入您的.bashrc。)

每当您键入命令时,该trap command1 debug命令都会调用该函数。command1command1函数设置command_flag标志以指示存在命令。 (command1当您点击 时,不会调用该函数Enter。)

PROMPT_COMMAND=command2导致command2每当 shell 即将发出PS1提示时调用该函数。该command2函数检查command_flag标志以查看您是否键入了命令或只是Enter。如果您键入命令,command_flag将被设置并将command2在屏幕上写入一个空行。 (如果您弄清楚如何创建一条线的一小部分的垂直空间,请更改命令echo。)如果您只是点击Entercommand_flag则不会被设置。然后清除该标志,以便正确完成下一个提示。

注意,command1当shell运行该command2函数时,该函数被调用;因此,command1需要将其作为特殊情况(它不算是命令)。

相关内容