Introduction
In this lab, you will learn how to use the tail command in Linux. The tail command is an essential utility that allows you to display the end portion of text files, which is particularly useful for viewing recent entries in log files, reading the last few lines of large documents, or monitoring file changes. This lab will guide you through various ways to use the tail command, helping you become proficient with this important Linux tool.
Basic Usage of the tail Command
In this step, you will learn the basic usage of the tail command by creating a simple text file and examining its contents.
First, let's navigate to the project directory:
cd ~/project
Now, let's create a sample text file with multiple lines using the echo command:
echo -e "Line 1: Introduction to Linux commands\nLine 2: File manipulation basics\nLine 3: Text processing utilities\nLine 4: The tail command overview\nLine 5: Reading the end of files" > sample.txt
The -e option enables interpretation of backslash escapes, allowing us to use \n for new lines.
To verify the file's contents, use the cat command to display the entire file:
cat sample.txt
You should see the following output:
Line 1: Introduction to Linux commands
Line 2: File manipulation basics
Line 3: Text processing utilities
Line 4: The tail command overview
Line 5: Reading the end of files
Now, let's use the tail command to display the last line of the file:
tail -n 1 sample.txt
The -n 1 option tells tail to display only the last line of the file. You should see:
Line 5: Reading the end of files
This is the basic usage of the tail command. In the next steps, we'll explore more advanced options.
Viewing Multiple Lines with tail
In this step, you'll learn how to display multiple lines from the end of a file using the tail command.
Let's first add more content to our sample file. We'll append five more lines to the existing file:
echo -e "Line 6: Displaying multiple lines\nLine 7: Command options and parameters\nLine 8: Practical applications\nLine 9: Log file examination\nLine 10: Continuous monitoring" >> sample.txt
The >> operator appends the new content to the existing file without overwriting it.
Let's verify the file now has 10 lines:
cat sample.txt
You should see all 10 lines:
Line 1: Introduction to Linux commands
Line 2: File manipulation basics
Line 3: Text processing utilities
Line 4: The tail command overview
Line 5: Reading the end of files
Line 6: Displaying multiple lines
Line 7: Command options and parameters
Line 8: Practical applications
Line 9: Log file examination
Line 10: Continuous monitoring
Now, let's use the tail command to display the last 3 lines of the file:
tail -n 3 sample.txt
You should see:
Line 8: Practical applications
Line 9: Log file examination
Line 10: Continuous monitoring
You can also use a shorter syntax for the -n option:
tail -3 sample.txt
This will produce the same output as the previous command:
Line 8: Practical applications
Line 9: Log file examination
Line 10: Continuous monitoring
By changing the number in the -n option, you can control how many lines from the end of the file you want to view.
Real-time File Monitoring with tail
One of the most powerful features of the tail command is its ability to monitor files in real-time. This is particularly useful for watching log files as they're being written to.
Let's create a simple script that simulates a log file being continuously updated:
cd ~/project
Create a script file named log_generator.sh:
nano log_generator.sh
Add the following content to the script:
#!/bin/bash
for ((i = 1; i <= 10; i++)); do
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Log entry $i: System event recorded" >> simulation.log
sleep 2
done
Save the file by pressing Ctrl+O, then Enter, and exit nano with Ctrl+X.
Make the script executable:
chmod +x log_generator.sh
Now, let's use the tail command with the -f option to monitor the log file in real-time. The -f option stands for "follow", which makes tail continue to monitor the file for changes.
Open a new terminal window by clicking on the terminal icon in the taskbar (or use the keyboard shortcut Ctrl+Alt+T). In the new terminal, run:
cd ~/project
tail -f simulation.log
Now, go back to your original terminal window and run the log generator script:
./log_generator.sh
In the terminal where you're running tail -f, you should see new log entries appearing every 2 seconds:
[2023-11-01 12:34:56] Log entry 1: System event recorded
[2023-11-01 12:34:58] Log entry 2: System event recorded
[2023-11-01 12:35:00] Log entry 3: System event recorded
...
After the script completes (after about 20 seconds), go back to the terminal where tail -f is running and press Ctrl+C to stop the monitoring.
This real-time monitoring capability makes tail -f an invaluable tool for system administrators who need to watch log files for errors or important events.
Advanced Tail Options
In this step, you'll learn about some advanced options of the tail command that can be useful in different scenarios.
Viewing the Last N Bytes Instead of Lines
Sometimes, you might want to see the last N bytes of a file instead of the last N lines. For this, you can use the -c option (short for "bytes").
Let's create a new test file:
cd ~/project
echo "This is a test file to demonstrate byte-based viewing with the tail command. The tail command is versatile and can display content based on bytes instead of lines." > bytes_test.txt
Now, let's view the last 20 bytes of this file:
tail -c 20 bytes_test.txt
You should see output similar to this (may vary slightly):
instead of lines.
Using a Custom Header with tail Output
When viewing the last part of a file, it's sometimes helpful to add a custom header to the output to remind you what you're looking at. You can use the echo command combined with tail to do this:
echo -e "=== Last 3 lines of sample.txt ===\n$(tail -n 3 sample.txt)"
You should see:
=== Last 3 lines of sample.txt ===
Line 8: Practical applications
Line 9: Log file examination
Line 10: Continuous monitoring
Viewing Multiple Files Simultaneously
The tail command can also display the last lines of multiple files at once:
Let's create another file:
echo -e "Alpha\nBeta\nGamma\nDelta\nEpsilon" > greek.txt
Now, use tail to view the last 2 lines of both files:
tail -n 2 sample.txt greek.txt
You should see:
==> sample.txt <==
Line 9: Log file examination
Line 10: Continuous monitoring
==> greek.txt <==
Delta
Epsilon
These advanced options make the tail command even more versatile and useful for various file viewing tasks.
Summary
In this lab, you have learned how to use the tail command, a powerful Linux utility for viewing the end portions of files. Here's a summary of what you've accomplished:
Basic Usage: You learned how to display the last line of a file using
tail -n 1.Multiple Lines: You discovered how to view multiple lines from the end of a file using
tail -n Nor the shorthandtail -N.Real-time Monitoring: You practiced using
tail -fto monitor files as they're being updated, which is crucial for log file analysis.Advanced Options: You explored more advanced options like viewing the last N bytes with
tail -c N, adding custom headers to the output, and displaying the end of multiple files simultaneously.
These skills are invaluable for system administrators, developers, and anyone working with Linux systems. The tail command is particularly useful for troubleshooting, monitoring log files, and quickly examining the most recent data in large files without having to open them entirely.
As you continue your Linux journey, you'll find the tail command to be an essential tool in your command-line toolkit, especially when combined with other Linux utilities through pipes and redirections.



