How To Read Files In Linux – Listing Directory Contents First

Managing multiple files in Linux becomes efficient when you master commands like `cat`, `less`, and `head`. Knowing how to read files in linux is a core skill for anyone working with the command line, whether you’re a developer, system administrator, or just getting started with Linux. This guide will walk you through the most common and powerful ways to view file contents, from simple text dumps to real-time log monitoring.

You don’t need to be a terminal expert to follow along. Each command is explained with practical examples you can try right away. Let’s start with the basics and build up to more advanced techniques.

Why Reading Files In Linux Matters

Linux is built around text files. Configuration files, logs, scripts, and data files are all plain text. Knowing how to read them quickly saves you time and helps you troubleshoot problems faster.

Unlike graphical file managers, the terminal gives you precise control. You can read just the first few lines, scroll through a huge log file, or search for specific patterns. These skills are essential for daily tasks.

How To Read Files In Linux

The Cat Command: Quick And Simple

The `cat` command is the simplest way to read a file. It prints the entire file content to your terminal screen.

To use it, type:

cat filename.txt

This works well for small files. For example, reading a short configuration file or a README is quick and easy.

But `cat` has limitations. If the file is long, the text scrolls past too fast. You can only see the last screenful. That’s where other commands become useful.

Cat With Line Numbers

You can add line numbers with the `-n` option:

cat -n filename.txt

This helps when you need to reference specific lines in a file.

The Less Command: Scroll And Search

When files are too long for `cat`, use `less`. It lets you scroll up and down, search for text, and navigate easily.

Open a file with:

less filename.txt

Inside `less`, you can:

  • Press Space to scroll down one page
  • Press b to scroll up one page
  • Press / followed by a word to search forward
  • Press ? followed by a word to search backward
  • Press q to quit

This is perfect for reading log files, source code, or any large text file. You can even open multiple files at once:

less file1.txt file2.txt

Then navigate between them with :n (next) and :p (previous).

The Head Command: First Lines Only

Sometimes you only need to see the beginning of a file. The `head` command shows the first 10 lines by default.

head filename.txt

To see a different number of lines, use the `-n` option:

head -n 20 filename.txt

This is great for checking the header of a CSV file or the first few lines of a log.

The Tail Command: Last Lines And Real-Time Monitoring

The `tail` command does the opposite of `head`. It shows the last 10 lines of a file.

tail filename.txt

Use `-n` to specify a different count:

tail -n 50 filename.txt

The real power of `tail` is the `-f` option. This follows the file in real time, showing new lines as they are added. It’s essential for monitoring log files:

tail -f /var/log/syslog

Press Ctrl+C to stop following.

Reading Files With More

The `more` command is an older pager similar to `less`. It shows one page at a time and allows basic scrolling.

more filename.txt

Press Space for the next page, Enter for the next line, and q to quit. While `less` is more powerful, `more` is still available on most systems.

Advanced File Reading Techniques

Using Grep To Search Inside Files

You don’t always need to read the entire file. Sometimes you just want to find lines containing a specific word or pattern. The `grep` command does exactly that.

grep "error" logfile.txt

This shows all lines containing “error”. You can make it case-insensitive with `-i`:

grep -i "error" logfile.txt

Combine `grep` with other commands using pipes. For example, to see only the last 10 errors:

grep "error" logfile.txt | tail -n 10

Reading Compressed Files

Linux often uses compressed log files with extensions like `.gz`. You don’t need to decompress them first. Use `zcat`, `zless`, or `zgrep` instead.

zcat logfile.gz
zless logfile.gz
zgrep "error" logfile.gz

These commands work just like their uncompressed counterparts but handle gzip files automatically.

Using Awk And Sed For Structured Reading

For more complex file reading, `awk` and `sed` are powerful tools. They let you extract specific columns or edit text on the fly.

To print the first column of a space-separated file:

awk '{print $1}' filename.txt

To remove blank lines:

sed '/^$/d' filename.txt

These commands are beyond basic reading but become invaluable as you gain experience.

Practical Examples For Daily Use

Reading Configuration Files

System configuration files are often in `/etc`. Use `less` to read them safely without making changes:

less /etc/ssh/sshd_config

Monitoring Logs In Real Time

When troubleshooting, use `tail -f` to watch logs as they update:

tail -f /var/log/apache2/access.log

Checking File Headers

To verify the format of a data file, use `head`:

head -n 5 data.csv

Searching For Errors

Combine `grep` with `tail` to find recent errors:

grep "ERROR" /var/log/syslog | tail -n 20

Common Mistakes And Tips

Forgetting To Quit Less

If you’re stuck in `less`, just press q. It’s the most common beginner mistake.

Using Cat On Large Files

Avoid `cat` for files longer than a few hundred lines. It floods your terminal and wastes time. Use `less` or `head` instead.

Not Using Tab Completion

Typing long file paths is error-prone. Press Tab to auto-complete filenames and directories. It saves time and prevents typos.

Ignoring Permissions

If you get a “Permission denied” error, you might not have read access. Use `sudo` if needed, but be careful:

sudo less /var/log/secure

Comparing File Reading Commands

Here’s a quick comparison to help you choose:

Command Best For Limitation
cat Small files, quick view No scrolling
less Large files, scrolling, search Slower to start on huge files
head First lines of a file Only shows beginning
tail Last lines, real-time monitoring Only shows end
more Basic paging Limited features

Reading Binary Files

Most Linux commands are for text files. Binary files (like images or executables) will appear as gibberish. Use `hexdump` or `od` to view them in hexadecimal:

hexdump -C image.png

For most users, stick to text files unless you have a specific need.

Automating File Reading With Scripts

You can combine these commands in shell scripts to automate tasks. For example, a script that checks for errors every hour:

#!/bin/bash
grep "ERROR" /var/log/syslog | tail -n 10

Save it as `check_errors.sh`, make it executable with `chmod +x`, and run it whenever needed.

Frequently Asked Questions

What Is The Easiest Way To Read A File In Linux?

The easiest way is using `cat filename.txt` for small files. For larger files, use `less filename.txt` to scroll and search.

How Do I Read A File Line By Line In Linux?

You can use a `while` loop in bash: while IFS= read -r line; do echo "$line"; done < filename.txt. Or simply use `less` and press Enter to move line by line.

Can I Read A File While It's Being Written?

Yes, use `tail -f filename.txt` to follow the file in real time. New lines appear as they are added.

How Do I Search For Text Inside A File Without Opening It?

Use `grep "text" filename.txt`. It prints matching lines directly to the terminal.

What Command Reads Only The First 5 Lines Of A File?

Use `head -n 5 filename.txt`. You can change the number to any value.

Final Thoughts On Reading Files In Linux

Mastering these commands makes you more efficient on the command line. Start with `cat` and `less`, then add `head`, `tail`, and `grep` to your toolkit. Practice on real files—check your system logs, read configuration files, and explore text data.

Remember, there's no single "best" command. Each has its strengths. Choose based on your task: quick view, scrolling, searching, or monitoring. With a little practice, reading files in Linux becomes second nature.

Now open a terminal and try these commands. You'll be surprised how much faster you can work.