All the commands I've seen so far look like command > file
or command >> file
, which output the result to the designated file. For instance, when I type openssl version > lab4.txt
, all I see in the text file is OpenSSL 1.0.1e-fips 11 Feb 2013
.
What if I want to output both the command I typed and the result that was returned one below the other like this?
linux2[20]% openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
Thanks for helping
Best Answer
The redirection operator
command > file
will redirect the STDOUT of a command, or STDERR of a command if used likecommand 2> file
or both if used like&>
in bash or in any shell by portablecommand > file 2>&1
way. I am not aware of any direct method using redirection that can achieve what you need.Although it is possible using the
script
program. It will basically save everything printed on the terminal in thatscript
session.From
man script
:You can start a
script
session by just typingscript
in the terminal, all the subsequent commands and their outputs will all be saved in a file namedtypescript
in the current directory. You can save the result to a different file too by just startingscript
like:To logout of the
screen
session (stop saving the contents), just typeexit
.Here is an example:
Now if i read the file:
script
also has many options e.g. running quietly-q
(--quiet
) without showing/saving program messages, it can also run a specific command-c
(--command
) rather than a session, it also has many other options. Checkman script
to get more idea.