首页 > 解决方案 > Linux终端:如何在没有回车的情况下添加换行符?

问题描述

在 Linux 终端中,如何在不发出回车/发出命令的情况下添加换行符(换行符?)?

例如,就我而言,我想在 git commit 注释中添加几行,如下所示:

$ git commit -m "1. Removed comment blocks
  2. updated .gitignore
  3. added goto statement to hander
  --Miklas"

如何在不实际输入命令的情况下为多行注释添加这些换行符?

我用谷歌搜索并尝试了很多东西(shift+return、alt+return、ctrl+return..等),但没有运气。泰姆·基思 :^)

标签: linuxterminalcommand-line-interfacenewline

解决方案


Shell 通常支持多行连续命令。如果shell“检测到”上一个命令不是“完整的”并且您输入了回车,它将打印PS2并让您继续输入命令。默认PS2="> "

# I type:
# git commit -m "message<enter><enter>description"<enter>
$ git commit -m "message
> 
> description"
no changes added to commit

它也适用于 shell 运算符,例如for, while, if, case:

$ for i in 1 2 3
> do
> echo $i
> done
1
2
3

我发现了一个显示该行为的youtube 视频。

您也可以在 bash 中使用 C-ish 引用:

git commit -m $'message\n\ndescription\n'

我有时会使用过程替代printf

git commit -m "$(printf "%s\n" "message" "" "description")"

最后你可以输入:

git commit

默认情况下应该打开一个完整的文件编辑器vim。在该编辑器中键入您想要的多行消息,保存并退出编辑器,文件内容将被视为提交消息。


推荐阅读