我经常发现我在 bash 中运行了一个命令,并在运行之后意识到我想使用 grep(或其他方式)访问结果。我想避免重新运行命令要么是因为运行时间,要么是因为它使用了不会产生相同输出的资源。是否有一种或多种方法可以做到这一点?
答案1
脚本的最佳方法是声明文本变量并将命令输出保存在其中。然后您可以根据需要多次使用此变量。
Out=$(command)
echo "$Out" | grep 'some text'
echo "$Out" | grep 'other text'
unset Out #or just logout
另一种方法是将输出保存到文本文件,但您需要具有磁盘的写权限并在使用后删除文件。
此外,还有一些其他方法可以访问终端日志:
auditd
通过和将 OS 终端日志记录到远程服务器pam_tty_audit.so
。日志将存储在远程日志服务器上。仅保存用户输入,用户无法修改。- 在用户终端中设置日志记录到文件(Putty、SecureCRT 有相关会话选项)。日志存储在用户机器上
- 通过 获取会话日志
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
将输出重定向到您可以访问的文件中