How to Use the 'script' Command (with Examples)
The script
command is a useful utility for recording terminal sessions in UNIX-like operating systems. By capturing all input and output during a session, it creates a typescript file that can be used for documentation, troubleshooting, training, or auditing. This makes the script
command an essential tool for developers, system administrators, and educators who need to capture and review interactions with the system terminal.
Use case 1: Start recording in a file named “typescript”
Code:
script
Motivation:
Imagine you’re troubleshooting a system issue and want to capture everything occurring in the terminal for future reference. By using the script
command without additional arguments, you can simply and quickly begin recording your terminal session. This approach is particularly beneficial when the naming of the files isn’t your primary concern, and the default name can suffice.
Explanation:
script
: When used with no arguments, this command initiates a session recording that saves to the file namedtypescript
by default in your current directory. This default behavior is intended to provide convenience for quick recording scenarios.
Example Output:
Upon executing the script command, the terminal will output a message indicating the start of the recording, and the prompt might resemble:
Script started, file is typescript
Use case 2: Stop recording
Code:
exit
Motivation:
After you have captured the necessary portion of your terminal session, you will need to stop recording. Utilizing the exit
command within the session context efficiently finalizes the process and ensures that the recording is saved properly.
Explanation:
exit
: By typingexit
, you terminate the current shell session, which also concludes the recording initiated by thescript
command. Upon exiting, all captured content up to that point is saved to the designated typescript file.
Example Output:
When the exit
command is executed, you should see confirmation that the recording has ended, like:
Script done, file is typescript
Use case 3: Start recording in a given file
Code:
script logfile.log
Motivation:
There are circumstances where distinguishing between different typescript files becomes necessary, such as when maintaining organized records for different projects or sessions. Specifying a filename like logfile.log
allows you to name the recording file, making it easier to identify and retrieve later.
Explanation:
script logfile.log
: The command specifieslogfile.log
as the filename for the recording. By providing the name as a parameter, you explicitly instruct thescript
command where to store the output, ensuring better management of multiple files.
Example Output:
When starting a recording session with a specified filename, you’ll see an output indicating this file:
Script started, file is logfile.log
Use case 4: Append to an existing file
Code:
script -a logfile.log
Motivation:
Suppose you’ve already recorded a session into logfile.log
and wish to continue adding more information to the same file. By appending instead of overwriting, you maintain a continuous and comprehensive record across several recording intervals.
Explanation:
script -a logfile.log
: The-a
option stands for “append,” ensuring that the new session data is added to the end oflogfile.log
without deleting any previously recorded content. This is crucial for preserving cumulative logs.
Example Output:
Initiating the append action mirrors the start of a regular session but confirms appending to an existing file:
Script started, file is logfile.log
Use case 5: Execute quietly without start and done messages
Code:
script -q logfile.log
Motivation:
In situations where you require a clean log file without extra notifications cluttering the beginning and end, using the quiet mode ensures that only the session commands and outputs are recorded. This is especially beneficial for producing polished and professional log files intended for presentation or reporting.
Explanation:
script -q logfile.log
: The-q
option enables quiet mode by suppressing the start and done messages. It focuses the recording purely on the terminal interactions themselves, providing a streamlined log.
Example Output:
Unlike the usual operation, when you start a script in quiet mode, there is no immediate textual feedback confirming the initiation, which would look like:
<no start message>
Conclusion:
The script
command, with its various options, provides a flexible and straightforward way to record terminal sessions. Whether aiming for simple session capturing, appending to previous scripts, or creating clean logs for professional use, these examples demonstrate how script
can be tailored to a variety of documentation and debugging needs. By understanding and effectively leveraging these options, users can significantly enhance their command-line productivity and documentation accuracy.