Redirect Linux Command Output to File - Quick

x32x01
  • by x32x01 ||
When you run a command or script in a terminal, it prints output on the screen. Often you want to keep that output - for logs, reports, debugging, or sharing results. Instead of copy-paste, Linux gives easy ways to save command output to a file. This guide shows simple methods: redirection, append mode, redirecting errors, and the tee command. All examples work on most distributions (Ubuntu, Debian, Fedora, etc.). 🐧

Why save command output? ✅​

Saving output is useful when you want to:
  • Keep a record of a command run (logs).
  • Share results with teammates.
  • Process or parse output later with scripts.
  • Debug failures by capturing both stdout and stderr.
These are everyday tasks for devs, sysadmins, and pen-testers - so mastering output capture saves time and prevents mistakes. ⏱️



#1 Use redirection operators > and >> 🔁​

The simplest way to save output is with shell redirection.
  • > writes output to a file and replaces existing content.
  • >> appends output to the end of a file.

Examples:
Bash:
# Replace file contents (create output.txt if missing)
ping -c 3 google.com > output.txt

# Append to file (keep previous results)
ping -c 3 bing.com >> output.txt
If output.txt does not exist, both commands create it. Using > will overwrite previous data — so be careful. Using >> is safer when you want to keep prior runs. ✅



Capture both stdout and stderr (errors) 2>&1 ⚠️​

Many commands print useful messages to stderr (error stream). To store both normal output and errors into the same file, append 2>&1:
Bash:
# Append stdout and stderr to output.txt
some-command >> output.txt 2>&1

# Or overwrite file with both streams
some-command > output.txt 2>&1

Explanation:
  • 1 is stdout, 2 is stderr.
  • 2>&1 redirects stderr into stdout, then file redirection captures both.
This is vital for debugging scripts or long runs - you won’t miss hidden error lines. 🔍



#2 Use tee to display and save at the same time 🪣🔍​

If you want to see output live on the terminal while also saving it to a file, use tee. It reads stdin and writes to both stdout and a file.
Bash:
# Save output to file and show it on screen
ls -la /var/log | tee files-list.txt

# Use append mode with -a
ls -la /var/log | tee -a files-list.txt

tee is great for interactive sessions or when you run a long command and want a log without losing the terminal output.

To capture both stdout and stderr with tee:
Bash:
# Pipe both streams to tee
some-command 2>&1 | tee run.log
This writes everything to run.log while letting you watch the output live. Perfect for monitored scripts. 🎯



Useful real-world examples 🛠️​

Save output of a network test:
Bash:
# Save ping results, include errors
ping -c 5 example.com > ping-results.txt 2>&1

Save package install logs:
Bash:
# For Debian/Ubuntu
sudo apt update 2>&1 | tee apt-update.log
sudo apt install -y nginx 2>&1 | tee -a apt-update.log

Capture a script run:
Bash:
# Run a Python script and save everything
python3 myscript.py > myscript.log 2>&1

These patterns are reliable and easy to automate in cron jobs or CI pipelines.



Best practices and tips 🧭​

  • Check file paths: Always confirm the path where you save logs (e.g., /var/log/myjob/ vs ~/logs/).
  • Rotate logs: For long-running systems, use logrotate or name files with timestamps:
    some-command > "run-$(date +%F_%H%M%S).log" 2>&1

  • Avoid overwriting if you need history - prefer >> or tee -a.
  • Protect sensitive data: Logs may contain secrets. Secure files with proper permissions:
    chmod 600 secret-log.txt
  • Use structured output (JSON) when parsing logs programmatically. That makes downstream automation easier. 🤖



Troubleshooting common issues 🔧​

  • File seems empty after redirection? Check you used the correct device path or that the command actually produced output.
  • Permission denied? Use sudo if you’re writing to a protected folder (but be careful):
    sudo some-command > /root/out.txt 2>&1
    Or run the command and pipe into sudo tee to preserve permissions:
    some-command 2>&1 | sudo tee /root/out.txt
  • Very large log files? Compress them (gzip) or rotate regularly.

Quick recap ✅​

  • > - overwrite output file.
  • >> - append to file.
  • 2>&1 - capture stderr and stdout together.
  • tee - show output and save at once (tee -a to append).
Mastering these simple tools makes CLI work cleaner, repeatable, and easier to debug. Whether you’re a developer, sysadmin, or pen-tester, these commands will speed up your workflow. ⚡
 
Last edited:

Related Threads

x32x01
Replies
0
Views
1K
x32x01
x32x01
x32x01
Replies
0
Views
1K
x32x01
x32x01
x32x01
Replies
0
Views
241
x32x01
x32x01
x32x01
Replies
0
Views
1K
x32x01
x32x01
x32x01
Replies
0
Views
1K
x32x01
x32x01
TAGs: Tags
2>&1 redirection bash redirect to file bash scripting basics command line tips linux admin guide linux logging commands linux output redirection save terminal output linux stdout stderr linux tee command example
Register & Login Faster
Forgot your password?

Latest Resources

Forum Statistics
Threads
744
Messages
749
Members
71
Latest Member
Mariaunmax
Back
Top