Question:
I would like bash to print a blank line before the next prompt, but only if there has been output to the terminal.
Partial solution:
This answer proposes changing the bash custom prompt to
PS1="\n$PS1"
. This results in bash producing a blank line before every terminal prompt.This answer improves upon this slightly by preventing a newline before the first prompt. This is accomplished via the
PROMPT_COMMAND
bash variable and a function that sets a variable the first time it is called.This question tries to accomplish something similar (a new line before output instead of after output), but the answers provided only produce newlines for every prompt.
Current behavior:
[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]$
Desired behavior:
[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]$
Motivation:
A new line improves readability, but it is only necessary when there is something to read.