如何将 stdout 重定向到 NuShell 中的文件?

how to redirect stdout to a file in NuShell?

提问人:Robert Ranjan 提问时间:6/5/2023 最后编辑:Robert Ranjan 更新时间:9/1/2023 访问量:544

问:

如何将某些命令输出重定向到文件中?NuShell

在 zsh/bash 中,我们可以将命令的输出重定向到文件,如下所示ls

ls > fileList.txt

我们如何在 NuShell 中做同样的事情?

nushell的

评论


答:

1赞 pmf 6/5/2023 #1

要重定向/保存到文件中,请使用命令(请参阅手册)。save

但是,将字符串作为输入,同时提供记录。您可以通过定义方式将这些记录转换为字符串。savels

如果您的主要兴趣在于保存外观,一种方法是使用命令显式渲染表格,如 shell 中所示(请参阅手册,其中甚至列出了示例之一):tablels | table

ls | table | save fileList.csv

但是,如果您对传输的数据更感兴趣,请将其重新格式化为您选择的数据类型(请参阅格式列表)。例如,将其重新格式化为 CSV use、HTML use、JSON use等。还有一种只是简单地逐行列出所有记录,并在其键名称前面加上。它的手册页面甚至列为示例之一。toto csvto htmlto jsonto textls | to text

ls | to csv | save fileList.csv
# or
ls | to html | save fileList.html
# or
ls | to json | save fileList.json
# or
ls | to text | save fileList.txt
# etc.
0赞 Robert Ranjan 6/7/2023 #2

以下命令以 json 格式保存并以精确格式检索。ls output

ls | to json | save -f fileList.json
open fileList.json

use 选项覆盖文件。--force

命令是您在终端上的朋友:help save

> help save                                                                                                                                                     06/06/2023 10:50:48 PM
Save a file.

Search terms: write, write_file, append, redirection, file, io, >, >>

Usage:
  > save {flags} <filename>

    ...more info here...
    ...more info here...

Examples:
  Save a string to foo.txt in the current directory
  > 'save me' | save foo.txt

  Append a string to the end of foo.txt
  > 'append me' | save --append foo.txt

  Save a record to foo.json in the current directory
  > { a: 1, b: 2 } | save foo.json

  Save a running program's stderr to foo.txt
  > do -i {} | save foo.txt --stderr foo.txt

  Save a running program's stderr to separate file
  > do -i {} | save foo.txt --stderr bar.txt
0赞 BobHy 9/1/2023 #3

根据最近的 Nu(在我写这篇文章时为 v 0.84)更新这个答案: Nushell 现在有重定向运算符:,类似于 sh-shell 等。可以按如下方式使用:out>out+err>1>2>&1

> 10 + 20 >out t.t
> cat t.t
30

重定向运算符与 .save

  • 重定向(缩写)可以将两个流捕获到单个文件中。 拒绝将两个流保存到同一文件。out+err>o+e>save f.f --stderr f.f
  • 重定向运算符不需要前面的 .它们是表达式中的后缀运算符。| save
  • 重定向运算符始终覆盖该文件。它们没有追加选项。
  • 像 一样,重定向运算符的输入必须是字符串或转换为字符串,如上所述。saveto json