How to Copy Terminal Output to a File
Oftentimes, while working on the Linux terminal, you might want to save the terminal output of a command to a file. This file may be used as information for another operation or to simply log terminal activity. Here are four different ways in which terminal contents can be saved in a file.
The following methods are applicable across all Linux distributions and can even be used on Macs and BSD. The only thing you have to think about is which method is best to get the job done.
1. Using Redirection Operators
The most common and basic way to redirect output from the terminal into a file is to use the >
and >>
operators. They direct only the output to a specified text file. They don't redirect errors. Those will still appear in the terminal.
The >
operator redirects output to a file and overwrites the contents of that file while the >>
operator appends the output to the end of the file. Here's an illustration:
First create a file using the touch
command.
A line is now echoed to "file1.txt" using the >
operator. One can think of it as dumping the output of the echo
command to "file1.txt."
echo "first statement" > file1.txt
Another line is echoed into "file1.txt."
echo "second statement" > file1.txt
On viewing the contents of "file1.txt," we see that only the second line is stored in the file. This is because the >
operator overwrites existing file content.
If we wish to "append" content to the file, then the >>
operator needs to be specified.
We can view the result of the successful append operation.
If you only want to save the errors, use the 2>
and 2>>
operators instead.
If you're interested in logging everything, use &>
and &>>
to redirect all output (including errors) to a file without showing anything in the terminal.
2. Using tee command
With the redirection operators shown above, the output of the command is not displayed on the screen. If you wish for it to display the output on the terminal and write to a file, you can use the tee
command.
< command > | tee -a <file_name>
The pipe (|) symbol passes the output of <command>
as input to tee
, which in turn displays the output on the screen. If the -a
switch is specified, then tee
appends that output to the specified file, else it would overwrite that file's contents.
According to the command demonstrated above, the text "fourth statement" should have been appended to "file1.txt." Verification using the cat
command corroborates our guess.
You can also make use of the |&
operator and the tee
command to display everything and log it, too.
< command > |& tee -a <file_name>
3. Using script command
With the script
command, output of the commands typed following it would be automatically written to a file until prompted to cease. This can be likened to a session which records terminal activity.
First, the script
command is invoked with the name of the file to store terminal activity.
A message prompts that the script has started, then commands are typed one after the other – here date
, pwd
, ls
and cal
.
To terminate the scripting, the exit
command is invoked. There is a message that the "script" operation is done. Viewing the contents of "script_log.txt" using cat
, we see that the file's contents look like an exact replica of the terminal.
Towards the end we can see the timestamp when the script was completed. When this file is viewed in a text editor, we can see some text content and junk, which is actually the bash prompt in a format understandable by bash shell.
Only when this file is viewed in the shell using the cat
command, we get fully intelligible information.
Let's try another one, saving the terminal output in "2-script_log.txt."
Commandspwd
and ls
are typed.
Without typing exit
, the terminal window is closed. When we attempt to view the contents of "2-script_log.txt," we can see that it is empty.
When a script session has been initiated, the contents of that session are retained in memory and written to the file only when the exit
command is invoked. Here, since exit
was not invoked, that session's contents were not saved to "2-script_log.txt."
The overwrite and append behavior of script is similar to tee
and the redirection operators. The -a
switch appends the contents of a session to a previously existing file. Here, output of the echo
command is appended to "script_log.txt."
Let us view the output of "script_log.txt." We can see the previously saved output of the date
, pwd
, ls
, cal
commands followed by the timestamp; afterwhich, we find the next session's information ending with the timestamp.
4. Using logsave command
logsave
behaves similar to tee
– it displays the output on the screen and also saves it to a file. It is used as shown below:
logsave <file_name> < command >
logsave
writes the output of <command>
to the file specified by <file_name>
. Let us view the output of "mylog_file.txt."
There is a good deal of information stored along with the result of one command. Two timestamps are stored here: the first is the time at which the command was initiated, and the second is the time at which the command completed its execution. Here, the timestamps are the same. Although, when a recursive directory listing is initiated in the "/home" directory on a multi-user system, the command would take a while to fully execute. In that case, the start and end timestamps would be different.
Output of more commands can be appended to the same file when the -a
switch is used with logsave
.
logsave -a <file_name> < command >
When we attempt to view the contents of "mylog_file.txt," we see that the output of the two previously entered commands are demarcated by a line.
The above are some of the more useful ways to save a terminal output to a file in Linux. Which one do you prefer?
Related:
- How to Multitask in the Linux Terminal with Screen
- How to Install a Dictionary for Use in Linux Terminal
- How to Use the Linux Terminal as a Calculator
Is this article useful?
Divya Lakshmanan
Divya divides her time between speculating the existence of aliens and writing about her technical findings.
How to Copy Terminal Output to a File
Source: https://www.maketecheasier.com/save-output-of-command-to-file-linux/
0 Response to "How to Copy Terminal Output to a File"
Post a Comment