在 perl -e 语句中插入换行符?

在 perl -e 语句中插入换行符?

考虑以下 Perl 单行代码:

perl -e '$x; $y;'

我正在执行这个命令狂欢我想在和\n之间插入一个换行符 ( ) 。我想知道如何用两种类似但略有不同的方式做到这一点:;$y

  1. 我怎样才能通过按下某些元键序列来在该位置插入换行符?

  2. 我如何通过输入一些非元字符序列在该位置插入换行符?(例如'$x;\n$y;'

在两种情况下,我都希望 Perl 解释器看到实际的换行符,如下所示:

$x;
$y;

答案1

删除空格,然后输入CtrlV, CtrlJ
然后Return

Ctrl-V 可防止 shell 按字面意思解释下一个字符(换行符)。

答案2

您问的问题仅涉及 shell 如何解释其输入并将其传递给其他程序。它本身与 Perl 无关。

此答案涉及在 shell 中键入新输入。使用其他人的答案,^V^J在使用命令行编辑时将换行符插入现有命令行。

您应该可以将其放入脚本中:

foo '$x;
$y;'

传递给命令的参数将在与脚本本身相同的位置有一个换行符。您可能需要小心地以使用 Unix 样式(仅 LF)换行符的方式保存此类脚本,否则您可能会得到 CR+LF(DOS/Windows 换行符)或仅 CR(旧 Mac 样式换行符)。

您也可以在交互式提示下执行此操作,但您会在第二行及任何后续行之前看到继续提示:

$ foo '$x;
> $y;'

狂欢,您还可以使用$''引用对换行符进行编码的语法如下:

foo $'$x;\n$y;'

传递给程序的参数将以类似于 ANSI C 字符串的方式处理。如果您希望字符串中有一个实际的反斜杠,则必须将其转义为 , \\

因此,如果您确实想要单引号提供的文字字符串引用,您应该坚持使用嵌入的换行符,这样您就不必担心额外的转义。

答案3

将光标移动到位置然后按Ctrl- V Ctrl-J

答案4

这几乎是可能的。狂欢命令行,\(反斜杠)可用作行继续符。它实际上是转义字符; 它说狂欢将该行中的下一个字符视为特殊字符。

您可以在命令行标记之间使用它来将换行符添加到命令行中。您必须点击Return 立即地之后\就可以正常工作了:

#                      +-----Press return here!!
#                      V
user@host:$ cat foo | \
>           perl -e '$x; $y'

如果删除'重复行末尾的单引号(以及可选的更多字符),

perl -e '$x;\ $y

,然后按 ,Enter即可输入更多以单引号结尾的字符'。请注意,$y 仍然有效。

相关内容