如何关闭在 PowerShell 中使用 cat 创建的文件

How to close file created with cat in PowerShell

我正在使用 Windows PowerShell 并使用

创建了一个文件
cat > test

输入后,我可以输入文件的内容。 但是,如何关闭 file/terminate 文件 test 的内容写入?在基于 Unix 的系统上,这将是 ctrl + D,但这似乎不适用于 Windows...

上的 PowerShell

充实 Mathias R. Jessen's 对问题发表评论:

Windows PowerShell 中,catloosely 等效 Get-Content 的别名命令;但是,Get-Content 仅对 个文件进行操作

您可以使用 here-string 以交互方式键入要保存到文件中的内容(像往常一样,在每行后按 Enter):

Set-Content test @'
type
your
lines
here
'@    # Type this to finish and save - must be at the *very start* of the line.

如果要在您键入的行中引用变量和表达式,请使用可扩展(插值) here-string 变体,它使用 " 而不是 '.

注:

  • 以交互方式,您会看到第二行和所有后续行都以 >> 为前缀,这是 PowerShell 表示正在键入的命令尚未完成的方式。

  • Set-Content is used to save to a file (and is generally preferable for saving text to files); the caveat in Windows PowerShell is that it uses the system's active ANSI code page to create the file (whereas PowerShell (Core) 7+ 现在值得称赞 一致 默认为(无 BOM)UTF-8);根据需要使用 -Encoding 参数。

    • PowerShell 也支持 >(和 >>),它委托给 Out-File cmdlet,因此在 Windows PowerShell 中创建“Unicode " (UTF-16LE) 文件。

    • 虽然在语法上通常很方便,但如果您要在手头的情况下使用 >,您将不得不 - 笨拙地 - 键入 > test 此处字符串的结束 '@ 定界符之后,因为 - 与 POSIX 兼容的 shell 不同,例如 bash - > 不能 开始一个命令。

您也可以使用Get-Clipboard

  1. 将要保存的文本复制到文件中。
  2. Get-Clipboard > test