如何记录每个输入和输出并写入 Bash 中的文件?

如何记录每个输入和输出并写入 Bash 中的文件?

我经常执行任务,有时会忘记记录我的工作。

例如,写下不同一次性工具的输出。

有没有办法通过自动化来实现这一目标.bashrc

因此我打开一个新的 shell,它会自动创建一个新的日志文件(如day-month-year-#)并将所有内容转储到其中。此外,如果我可以在窗口中实际看到输出,那就太好了。

另外:很多输出都是彩色的,可以保留吗?

PS:磁盘空间不是问题;)

答案1

我认为该实用程序应该能满足您的需求:它捕获文件的终端 I/O。默认情况下,它是大多数 Linux 和 Unix 的一部分,以下是其页面script的开头:man

NAME
   script - make typescript of terminal session

SYNOPSIS
   script [options] [file]

DESCRIPTION
   script makes a typescript of everything displayed on your ter‐
   minal.  It is useful for students who need a  hardcopy  record
   of  an  interactive  session as proof of an assignment, as the
   typescript file can be printed out later with lpr(1).

   If the argument file is given, script saves  the  dialogue  in
   this  file.  If no filename is given, the dialogue is saved in
   the file typescript.

因此特别要注意的是,当您退出会话时,script您将找到一个名为的文件,typescript其中包含您的会话记录。例如,

$ script
Script started, file is typescript
$ echo blah
blah
$ exit
exit
Script done, file is typescript

您现在已退出script会话并可以查看结果,

$ cat typescript 
Script started on 2021-03-09 20:24:40+0000
$ echo blah
blah
$ exit
exit

Script done on 2021-03-09 20:24:47+0000
$ 

答案2

如果.bash_history不是你想要的,你可以使用asciinema公用事业,一种用于记录终端会话的免费开源解决方案。

您可以将其集成到每次启动会话时启动并记录所有输入和输出,然后将其保存到文件中。

相关内容