Linux: Record a Terminal Session, Logging Shell Output

By Xah Lee. Date:

If you do a lot sys admin work, or you want a record of your shell session, you can log it to a file. There are several ways to do this.

Set Terminal Scrollback to Unlimited, Copy & Save

One way is set your terminal to unlimited scrollback, then, just select all, copy, then paste and save in a editor.

To set unlimited scrollback, in gnome-terminal, it's under menu 〖Edit ▸ Profile Preferences ▸ Scrolling〗 tab. If your terminal doesn't have unlimited/infinite option, just use a big number.

Then, when you need to save session, just pull menu 〖Edit ▸ Select All〗 , then 〖Edit ▸ Copy〗 , then paste it in a editor.

gnome terminal scrollback preference
Gnome Terminal Scrollback Preference

This is a nice solution, but the problem is, in some dumb terminal such as Ctrl+Alt+F1 Virtual Console, there's no menu or copy and paste.

Using “script” Command to Log Session

Start logging like this script ~/session.log.

Stop logging by exit.

Problem with this solution is:

Using Shell inside Emacs

Best is to use shell inside emacs. That way, you don't have to worry whether you forgot to start to log it. Just save it to a file anytime.

Start emacs, then call shell to start shell. To save, call write-file. For a detailed tutorial, see: Emacs Shell Tutorial (Bash, cmd.exe, PowerShell).

Add Timestamp to Your Shell Prompt

When logging, it's good to have timestamp. see: Linux: Bash Prompt, Add Color, DateTime.