【问题标题】:Print last terminal content [duplicate]打印最后一个终端内容[重复]
【发布时间】:2017-08-09 06:40:32
【问题描述】:

有什么方法可以在 linux 终端上打印最后打印的行吗?我正在尝试在我的节点应用程序上运行一个执行此操作的命令,以便我可以解析该内容。是否所有的 shell 内容都记录在一个文件中,或者类似的东西?

我想回显控制台自己的内容。获取自己终端的最后输出。

我不想要命令输出我想要获得 console.logs() 和 console.errs()

【问题讨论】:

  • ...所以,事情是这样的——这是 terminal 内容,而不是 shell 内容。由您运行的命令编写的内容,除非它的输出通过命令替换等重定向,否则直接进入终端本身;外壳永远不会看到它。
  • 您可以在 Linux 上自己演示:如果您运行 ls -l /proc/self/fd/ /proc/$$/fd/,您会注意到 FD 0、FD 1 和 FD 2(stdin、stdout 和 stderr)指向完全相同的位置对于ls(由/proc/self/fd 目录的输出确定)和shell 本身(由/proc/$$/fd 目录的输出确定)。
  • ...对于您的console.logs()console.errs(),这是一个shell 和终端都不共享的概念——您必须查看Node 对它们的确切作用。但是,如果将其写入 stdout 或 stderr,则上述所有内容都适用 - 在后一种情况下,与标记为重复的答案的唯一区别是可能需要一些额外的重定向(即2>&1),但我们确实有关于如何捕获标准错误的问题和答案(如果你愿意,我会在重复列表中添加一个)。
  • 顺便说一句,如果您要询问特定终端(或以让答案指定要使用的特定终端的方式提出问题),我们可能会能够为您提供更多帮助。例如,询问如何捕获先前写入 tmux 中命令的输出的问题很可能会有答案。
  • 是的——该文档清楚地表明 console.logs() 进入标准输出,console.errs() 进入标准错误,因此您可以使用 >file| tee file 重定向前者,并且可以合并后者通过>&1 使用它,通过单独的日志复制它,例如2> >(tee file.err >&1) 等。

标签: node.js linux ubuntu unix terminal


【解决方案1】:

您可以使用 top 命令。它提供了很多有关系统的信息。您可以使用 ps 命令并获取有关正在运行的进程的信息,然后使用 cat 命令将该输出存储在其他文件中,或者您甚至可以使用管道符号来重定向其输出到某个文件。

【讨论】:

  • top 确实有很多信息,但这些信息不包括以前调用的、现在完成的命令写入终端的内容。
【解决方案2】:

您需要自己保存。您使用的命令有历史选项,但不用于输出,除非它已被其他程序保存以防出错。

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2011-09-02
    • 2020-06-25
    • 2021-06-07
    相关资源
    最近更新 更多