如何把命令输出保存到文件?

使用核心提供的 > <file> 操作符:默认追加写入,-r 则覆盖目标文件。

默认追加写入

dns google.com > save.log 仍会在终端中显示 DNS 结果,同时把相同的文本表示追加到 lil-terminal 当前目录中的 save.log。结果之后会显示解析后的目标路径。再次执行命令会继续追加新的结果,不会删除之前的数据。

覆盖写入或显式指定追加

若要覆盖目标文件,请在路径后加 -rdns gmail.com > save.log -r-a 可显式选择默认的追加模式。包含空格的路径应使用引号。该操作符由核心统一处理,因此各模块不必仅为了保存屏幕输出而各自增加导出参数。

哪些结果可以重定向

只有能够表示为普通文本的结果才会写入文件。交互式编辑器、秘密输入提示、文件下载和浏览器控制事件不会被转换为文件。如果某个命令自身的语法已经使用 >,其原有含义保持不变;输出重定向只在最终输出操作符的位置识别。

再次使用最近一次结果

history -o 返回当前 PHP 会话中保存的最近一次可重定向文本结果。history -o > history.log 以追加方式保存,history -o > history.log -r 则覆盖文件。桌面端 Ctrl/Command+S 快捷键执行的也是这两条标准命令。

为什么使用冒号赋值

在当前语法中,> 只用于核心的输出重定向。需要接收值的命令使用 :ini app.ini -w key : valuejson app.json -w path : valueses path : valueattr file key : valuedb : SELECT ...。这样可消除歧义,并让 command ... > file 在所有命令中保持同一含义。若仍安装旧版模块,核心会识别它并给出迁移提示,而不会悄悄把错误内容重定向到文件。

示例

dns google.com > save.log
dns gmail.com > save.log -r
env > "logs/env current.log" -a
history -o > history.log
history -o > history.log -r

相关文档

← 返回常见问题