在命令行提示之间插入空行


8

使用命令行时,通常会很混乱。例如,检查过去的命令及其输出变得很不方便。

我希望每次在显示命令提示符之前都添加一个换行符。像这样:

<clutter>
<blank line>
name@machine:~$

我使用bash外壳。如何做到这一点?


1
我喜欢这样的:lifehacker.com/5840450/...
Maerlyn

Answers:


21

实现此目的的一种方法是修改.bashrc文件。只需将以下内容放在.bashrc文件末尾。

PS1="\n$PS1"

为了解释它是如何工作的,PS1变量是否包含应显示为提示的内容。这只是说“设置PS1为的先前内容PS1,并带有换行符”。将其.bashrc放在大多数发行版中,只会使bash每次您打开交互式外壳程序(但不是登录外壳程序,请参阅登录外壳程序和非登录外壳程序之间的区别?)时都运行它。


2
为了解释它是如何工作的,PS1是包含应显示为提示的变量。这就是说“将PS1设置为PS1的先前内容,并带有换行符”。
穆泽(Muzer)2015年

@Muzer也许您的评论可能是编辑
rpax

@rpax好主意,已提交。也添加了一些有关.bashrc本身的信息。
Muzer 2015年

令人满意的是,PS1="\n$PS1"在终端中执行具有立竿见影的效果:)
mwfearnley

完全正常运行,除了输入clear(或按Ctrl+l)后,显示的第一行是空行。对于某些人来说,这可能是一个很小的细节,但是我更希望第一行是提示。
罗伯特·库兹尼尔

6

您可以使用PROMPT_COMMAND

PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"

要么:

PROMPT_COMMAND="echo;$PROMPT_COMMAND"

2
应该是第一个PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"吗?以目前的形式,当我将其放入.bashrc文件中时,它似乎无所不能。
Slothworks,2015年

@Slothworks:是的,当然,我的打字错误已解决。
cuonglm

确实有多种方法可以实现:)谢谢您的回答。
Slothworks,2015年

2
Slothworks的替代方法更好,因为您的命令在命令行中运行的每个命令之后都会执行一个额外的命令。printf而且echo非常轻巧,但是使用PROMPT_COMMAND什么时候PS1完成工作仍然没有意义。
米克尔2015年

请注意,如果您想在每次运行提示时在命令中添加更改的内容,则需要PROMPT_COMMAND而不是PS1。这通常与git一起使用,以显示回购的哪个分支处于活动状态。Google针对PROMPT_COMMAND的建议,以了解可以做什么。
Walter

4

替代方法:在的PS1=提示中保留一行.bashrc。从字面上看,这是我.bashrc在每台Linux机器上设置的方法:

PS1=' 
serg@ubuntu [$(pwd)]
================================
$ '

如您在上面的示例中所见,用户名被硬编码到提示中。您当然可以使用bash或其他shell(例如ksh)的转义序列)提供的,但更中性的选择是通过whoami(报告用户名)和hostname(显然是报告主机名)之类的命令来使用参数替换。例如:

PS1='
$(whoami)@$(hostname):$(pwd)
$ '

有关提示,.bashrc和参数扩展的更多有趣信息,请在此处查看我的答案:

如何使用终端检查电池状态?

我如何使我的终端/外壳具有自定义设计?

如何在命令提示符前在终端中显示运行时钟?


为什么用户名和计算机名是硬编码的?如果将它们参数化,那就太好了
rpax

@rpax我的实际用户名不同。那是您在提示中看到的我的名字。机器名称也不同。
Sergiy Kolodyazhnyy 2015年

我的意思是$(whoami)代替usernamehardcoded
rpax

@rpax哦,那也可以做到。我会将其纳入答案
Sergiy Kolodyazhnyy 2015年

4
请注意,您可以分别使用\u\h作为用户名和主机名。你可以看到更多的特殊字符(如各种格式的当前时间)在这里
尤索林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.