我有这个:
$ any_command
any_command: command not found
但是我需要这个:
$ any_command
any_command: command not found
PS1 添加了什么?
您可以使用
trap
命令和 DEBUG
信号:
trap 'echo' DEBUG
这将在任何命令输出之前打印换行符。
$ any_command
bash: any_command: command not found
$
或者:
$ date
Tue Sep 29 17:51:38 EDT 2015
$
GNU Bash 手册包含有关提示的部分。换行符可能就是您正在寻找的。例如:
export PS1='\n$ '
或者,您可以简单地在命令之前或之后添加回显。例如:
$ 回声;回声富
富
您可以使用 Bash shell 的 PROMPT_COMMAND 变量自动执行额外的回显(或其他屏幕输出)。 PROMPT_COMMAND 不仅限于提示,但在这种情况下当然可以利用它来执行您想要的操作。例如:
# call echo before issuing PS1
export PROMPT_COMMAND='echo'
# print the equals sign 80 times before issuing PS1
export PROMPT_COMMAND="printf '=%.0s' {1..80}"
我也想要一种方法来做到这一点 - 帮助在视觉上区分提示与其他命令输出(特别是当我不能这样做时,颜色并不总是一个选项) - 这就是我想出的:
export PROMPT_COMMAND="echo; trap 'echo; trap - DEBUG' DEBUG"
首先 echo 在提示符之前运行,然后我们设置陷阱,它会执行后提示换行符,并删除陷阱,至少直到下一次运行提示命令时为止。
现在说这是否是一个好主意还为时过早!但它有效:
root@epyc:~# seq 1 5
1
2
3
4
5
root@epyc:~#
上面提供的答案,
export PROMPT_COMMAND="echo; trap 'echo; trap - DEBUG' DEBUG"
效果很好,但我注意到在vscode的集成终端中它不起作用。因此,我删除了第一个 echo 并修改了 PS1 变量以在执行命令后打印新行。
export PROMPT_COMMAND="trap 'echo; trap - DEBUG' DEBUG"
export PS1="\n$PS1"
我尝试了很多选择,这是迄今为止最好的;好吧,直到其他人提出另一个解决方案。 我尝试使用
trap echo DEBUG
,但这对每个命令都执行了 echo。因此,如果您使用管道命令,它将对每个管道执行 echo。因此这个解决方案最终对我有用。