是否有可能访问 Bash 中**之前**运行的命令的结果?

是否有可能访问 Bash 中**之前**运行的命令的结果?

我经常发现我在 bash 中运行了一个命令,并在运行之后意识到我想使用 grep(或其他方式)访问结果。我想避免重新运行命令要么是因为运行时间,要么是因为它使用了不会产生相同输出的资源。是否有一种或多种方法可以做到这一点?

答案1

脚本的最佳方法是声明文本变量并将命令输出保存在其中。然后您可以根据需要多次使用此变量。

Out=$(command)

echo "$Out" | grep 'some text'
echo "$Out" | grep 'other text'

unset Out      #or just logout

另一种方法是将输出保存到文本文件,但您需要具有磁盘的写权限并在使用后删除文件。

此外,还有一些其他方法可以访问终端日志:

  1. auditd通过和将 OS 终端日志记录到远程服务器pam_tty_audit.so。日志将存储在远程日志服务器上。仅保存用户输入,用户无法修改。
  2. 在用户终端中设置日志记录到文件(Putty、SecureCRT 有相关会话选项)。日志存储在用户机器上
  3. 通过 获取会话日志rootsh

答案2

您可以使用 tee 和 xargs 等命令

tee - read from standard input and write to standard output and files 
xargs - build and execute command lines from standard input

将输出重定向到您可以访问的文件中

相关内容