提问人:Robert Ranjan 提问时间:6/5/2023 最后编辑:Robert Ranjan 更新时间:9/1/2023 访问量:544
如何将 stdout 重定向到 NuShell 中的文件?
how to redirect stdout to a file in NuShell?
问:
如何将某些命令输出重定向到文件中?NuShell
在 zsh/bash 中,我们可以将命令的输出重定向到文件,如下所示ls
ls > fileList.txt
我们如何在 NuShell 中做同样的事情?
答:
1赞
pmf
6/5/2023
#1
要重定向/保存到文件中,请使用命令(请参阅手册)。save
但是,将字符串作为输入,同时提供记录。您可以通过定义方式将这些记录转换为字符串。save
ls
如果您的主要兴趣在于保存外观,一种方法是使用命令显式渲染表格,如 shell 中所示(请参阅手册,其中甚至列出了示例之一):table
ls | table
ls | table | save fileList.csv
但是,如果您对传输的数据更感兴趣,请将其重新格式化为您选择的数据类型(请参阅格式列表)。例如,将其重新格式化为 CSV use、HTML use、JSON use等。还有一种只是简单地逐行列出所有记录,并在其键名称前面加上。它的手册页面甚至列为示例之一。to
to csv
to html
to json
to text
ls | 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
- 重定向运算符始终覆盖该文件。它们没有追加选项。
- 像 一样,重定向运算符的输入必须是字符串或转换为字符串,如上所述。
save
to json
下一个:控制台的彩色文本
评论