仅在输出后在bash中打印空行 问题:

仅在输出后在bash中打印空行 问题:,bash,Bash,我希望bash在下一个提示之前打印一个空行,但前提是终端已经有了输出 部分解决方案: 提议 将bash自定义提示更改为PS1=“\n$PS1”。这将导致bash在每个终端提示符前生成一个空行 通过在第一个提示之前防止换行,稍微改进了这一点。这是通过PROMPT\u命令bash变量和一个函数实现的,该函数在第一次调用变量时设置变量 尝试完成类似的操作(在输出之前而不是输出之后换行),但提供的答案仅为每个提示生成换行 当前行为: 期望的行为: 动机: 新的一行提高了可读性,但只有当有东西要读时才

我希望bash在下一个提示之前打印一个空行,但前提是终端已经有了输出

部分解决方案:
  • 提议 将bash自定义提示更改为
    PS1=“\n$PS1”
    。这将导致bash在每个终端提示符前生成一个空行

  • 通过在第一个提示之前防止换行,稍微改进了这一点。这是通过
    PROMPT\u命令
    bash变量和一个函数实现的,该函数在第一次调用变量时设置变量

  • 尝试完成类似的操作(在输出之前而不是输出之后换行),但提供的答案仅为每个提示生成换行

当前行为: 期望的行为: 动机:
新的一行提高了可读性,但只有当有东西要读时才有必要

这应该是一个shell特性,用外部工具实现它听起来不是一个好主意。这是一个有趣的问题。但是我想不出任何合理的机制来让shell知道之前的命令是否产生了任何输出。我同意@oguz。你认为使用
PROMPT\u命令和函数就等于使用“外部工具”吗?@Shardj:即使可以,如果用户希望stdout是一个tty而不是一个管道,那么它基本上会破坏所有与用户交互的应用程序。你的动机是提高可读性。另一种选择是彩色提示。我使用
PS1=“\[\033[1;34m\]\u@docker:\[\033[0m\]\w\n$\[\033[0m\]”
在深蓝色的黑土地上(以及
中的
配色方案pablo
)。这应该是一个shell功能,用外部工具实现它听起来不是一个好主意。这是一个有趣的问题。但是我想不出任何合理的机制,shell甚至可以通过它知道以前的命令是否产生了任何输出。我同意@oguz。你认为使用
提示符_命令
和函数是否可以使用“外部工具”进行缝合?@Shardj:即使可以,如果用户希望stdout是一个tty,而它是一个管道,那么它基本上会破坏所有与用户交互的应用程序。您的动机是提高可读性。另一种选择是彩色提示。我使用
PS1=“\[\033[1;34m\]\u@docker:\[\033[0m\]\w\n$\[\033[0m\]”
在深蓝色的黑色地面上(以及
.vimrc
中的
彩色方案pablo
)。
[user@host ~]$ ls
Desktop  Downloads  Dropbox  Music 

[user@host ~]$ vim 

[user@host ~]$ ssh login

[user@login ~]$ uptime
 08:01:11 up 50 days, 15:15, 15 users,  load average: 0.00, 0.00, 0.03

[user@login ~]$ vim file

[user@login ~]$ cd dir/foo

[user@login foo]$ mkdir bar

[user@login bar]$ cd bar

[user@login bar]$ vim file2

[user@login bar]$ ls
file2

[user@login bar]$
[user@host ~]$ ls
Desktop  Downloads  Dropbox  Music 

[user@host ~]$ vim 
[user@host ~]$ ssh login
[user@login ~]$ uptime
 08:01:11 up 50 days, 15:15, 15 users,  load average: 0.00, 0.00, 0.03

[user@login ~]$ vim file
[user@login ~]$ cd dir/foo
[user@login foo]$ mkdir bar
[user@login bar]$ cd bar
[user@login bar]$ vim file2
[user@login bar]$ ls
file2

[user@login bar]$