How to view text with basic pager → more
How to View Text with Basic Pager → more
Table of Contents
1. [Introduction](#introduction)
2. [Prerequisites](#prerequisites)
3. [Understanding the more Command](#understanding-the-more-command)
4. [Basic Usage and Syntax](#basic-usage-and-syntax)
5. [Navigation Commands](#navigation-commands)
6. [Command-Line Options](#command-line-options)
7. [Practical Examples](#practical-examples)
8. [Advanced Usage Scenarios](#advanced-usage-scenarios)
9. [Troubleshooting Common Issues](#troubleshooting-common-issues)
10. [Best Practices](#best-practices)
11. [Alternatives to more](#alternatives-to-more)
12. [Conclusion](#conclusion)
Introduction
The `more` command is one of the most fundamental text viewing utilities in Unix-like operating systems, including Linux, macOS, and various Unix distributions. As a basic pager program, `more` allows users to view text files one screen at a time, making it invaluable for reading large files without overwhelming the terminal display.
In this comprehensive guide, you'll learn everything about using the `more` command effectively, from basic navigation to advanced techniques. Whether you're a system administrator examining log files, a developer reviewing code, or a casual user exploring configuration files, mastering the `more` command will significantly improve your command-line productivity.
The `more` command gets its name from the prompt it displays at the bottom of each screen: "--More--", indicating that more content is available to view. This simple yet powerful tool has been a staple of Unix systems since the 1970s and remains an essential utility for text file navigation today.
Prerequisites
Before diving into the `more` command, ensure you have:
System Requirements
- Access to a Unix-like operating system (Linux, macOS, BSD, etc.)
- Terminal or command-line interface access
- Basic familiarity with command-line navigation
- Text files to practice with (we'll create some if needed)
Knowledge Prerequisites
- Basic understanding of file system navigation
- Familiarity with terminal concepts
- Knowledge of basic shell commands like `ls`, `cd`, and `pwd`
Verification Steps
To verify that `more` is available on your system, run:
```bash
which more
```
This should return the path to the `more` executable, typically `/usr/bin/more` or `/bin/more`.
You can also check the version:
```bash
more --version
```
Understanding the more Command
What is a Pager?
A pager is a program that displays text content one screen (or "page") at a time. Pagers are essential when dealing with files that contain more lines than can fit on your terminal screen simultaneously. Without a pager, long files would scroll past too quickly to read effectively.
Historical Context
The `more` command was developed in the late 1970s at the University of California, Berkeley, as part of the BSD Unix distribution. It was created to address the need for viewing long text files in a controlled manner, replacing the simple but inadequate `cat` command for large files.
How more Works
When you invoke `more` with a filename, it:
1. Opens the specified file
2. Displays the first screen of content
3. Pauses and waits for user input
4. Responds to navigation commands to show more content
5. Continues until the end of the file or user exits
Basic Usage and Syntax
Command Syntax
The basic syntax for the `more` command is:
```bash
more [options] [file...]
```
Simple Examples
Viewing a Single File
```bash
more filename.txt
```
This opens `filename.txt` and displays the first screen of content.
Viewing Multiple Files
```bash
more file1.txt file2.txt file3.txt
```
This opens multiple files in sequence. After reaching the end of the first file, `more` will prompt you to continue to the next file.
Using more with Standard Input
```bash
cat largefile.txt | more
```
or
```bash
ls -la | more
```
These examples demonstrate piping output from other commands into `more`.
Creating Test Files
Let's create some test files to practice with:
```bash
Create a file with numbered lines
seq 1 100 > numbers.txt
Create a file with system information
ps aux > processes.txt
Create a file with directory listing
ls -laR /etc > directory_listing.txt
```
Navigation Commands
Understanding navigation commands is crucial for effective use of `more`. These commands are entered while viewing a file:
Basic Navigation Commands
| Command | Action |
|---------|--------|
| `Space` or `f` | Move forward one screen |
| `Enter` or `j` | Move forward one line |
| `b` | Move backward one screen |
| `k` | Move backward one line |
| `q` | Quit more |
| `h` | Display help |
Advanced Navigation Commands
| Command | Action |
|---------|--------|
| `d` | Move forward half a screen |
| `u` | Move backward half a screen |
| `g` | Go to the beginning of the file |
| `G` | Go to the end of the file |
| `=` | Display current line number |
| `v` | Start vi editor at current line |
Search Commands
| Command | Action |
|---------|--------|
| `/pattern` | Search forward for pattern |
| `?pattern` | Search backward for pattern |
| `n` | Repeat last search forward |
| `N` | Repeat last search backward |
Practical Navigation Example
```bash
more numbers.txt
```
Once the file opens:
1. Press `Space` to move forward one screen
2. Press `b` to move back one screen
3. Type `/50` to search for the number 50
4. Press `n` to find the next occurrence
5. Press `=` to see the current line number
6. Press `q` to quit
Command-Line Options
The `more` command supports various options to customize its behavior:
Display Options
`-n` (Set Screen Size)
```bash
more -10 filename.txt
```
This displays only 10 lines per screen instead of the default terminal height.
`-p` (Clear Screen Before Display)
```bash
more -p filename.txt
```
Clears the screen before displaying each page, providing a cleaner viewing experience.
`-c` (Paint Screen from Top)
```bash
more -c filename.txt
```
Instead of scrolling, this option paints each new page from the top of the screen.
`-s` (Squeeze Multiple Blank Lines)
```bash
more -s filename.txt
```
Replaces multiple consecutive blank lines with a single blank line.
`-u` (Suppress Underlining)
```bash
more -u filename.txt
```
Prevents underlining of text, useful for terminals that don't support underlining properly.
Starting Position Options
`+n` (Start at Line Number)
```bash
more +50 filename.txt
```
Starts displaying the file from line 50.
`+/pattern` (Start at Pattern)
```bash
more +/error logfile.txt
```
Starts displaying the file from the first line containing "error".
Practical Options Example
```bash
View a log file starting from line 100, with 20 lines per screen
more -20 +100 /var/log/syslog
View a file starting from the first occurrence of "WARNING"
more +/WARNING application.log
View a file with cleaned-up blank lines and clear screen mode
more -s -p configuration.txt
```
Practical Examples
Example 1: Examining System Logs
System administrators frequently need to examine log files:
```bash
View system log with search capability
more /var/log/syslog
Start from recent entries (assuming timestamps)
more +/$(date +%b) /var/log/syslog
View with squeezed blank lines for cleaner output
more -s /var/log/messages
```
Example 2: Reading Configuration Files
```bash
View Apache configuration
more /etc/apache2/apache2.conf
View SSH configuration starting from a specific section
more +/Host /etc/ssh/ssh_config
View with clear screen mode for better readability
more -p /etc/fstab
```
Example 3: Examining Command Output
```bash
Page through process list
ps aux | more
View directory contents page by page
find /usr -name "*.conf" | more
Examine package information
dpkg -l | more
```
Example 4: Code Review
```bash
Review a source code file
more +/main program.c
View multiple related files in sequence
more *.py
Start from a specific function
more +/function_name script.py
```
Example 5: Document Reading
```bash
Read a manual or documentation file
more README.txt
View with custom page size for better readability
more -25 documentation.md
Start from a specific chapter or section
more +/Chapter introduction.txt
```
Advanced Usage Scenarios
Working with Multiple Files
When viewing multiple files with `more`, you have additional commands:
```bash
more file1.txt file2.txt file3.txt
```
Navigation between files:
- `:n` - Go to next file
- `:p` - Go to previous file
- `:f` - Display current filename and line number
- `v` - Edit current file with vi
Using more in Scripts
The `more` command can be incorporated into shell scripts:
```bash
#!/bin/bash
Script to view log files with more
LOGDIR="/var/log"
echo "Available log files:"
ls -1 $LOGDIR/*.log
echo "Enter filename to view:"
read filename
if [ -f "$LOGDIR/$filename" ]; then
more "$LOGDIR/$filename"
else
echo "File not found!"
fi
```
Environment Variables
The `more` command respects several environment variables:
LINES and COLUMNS
```bash
export LINES=20
export COLUMNS=80
more filename.txt
```
MORE
```bash
export MORE="-s -p"
more filename.txt
```
This sets default options for `more`.
Integration with Other Commands
Using more with grep
```bash
grep -n "error" logfile.txt | more
```
Using more with find
```bash
find /etc -name "*.conf" -exec more {} \;
```
Using more with tail
```bash
tail -f /var/log/syslog | more
```
Troubleshooting Common Issues
Issue 1: Terminal Display Problems
Problem: Text appears garbled or formatting is incorrect.
Solution:
```bash
Reset terminal settings
reset
Use the -u option to suppress underlining
more -u filename.txt
Set proper terminal type
export TERM=xterm-256color
```
Issue 2: Cannot Navigate Backwards
Problem: The `b` command doesn't work or shows an error.
Cause: When `more` reads from a pipe, it cannot navigate backwards because the input stream is not seekable.
Solution:
```bash
Instead of: command | more
Use: command > tempfile && more tempfile
Or use less instead of more for better pipe support
command | less
```
Issue 3: File Permission Errors
Problem: "Permission denied" when trying to view a file.
Solution:
```bash
Check file permissions
ls -l filename.txt
Use sudo if necessary
sudo more /etc/shadow
Change to a directory where you have read permissions
cd ~/Documents
more filename.txt
```
Issue 4: Large Files Causing Performance Issues
Problem: `more` is slow with very large files.
Solution:
```bash
Use the +n option to start at a specific line
more +1000 hugefile.txt
Use head or tail to view portions
head -1000 hugefile.txt | more
tail -1000 hugefile.txt | more
Consider using less for better performance
less hugefile.txt
```
Issue 5: Search Pattern Not Found
Problem: Search doesn't find expected patterns.
Troubleshooting:
```bash
Ensure correct case sensitivity
/Pattern # Case-sensitive search
/pattern # Different case
Use grep to verify pattern exists
grep -n "pattern" filename.txt
Check for special characters that need escaping
/\$variable # Escape special characters
```
Issue 6: Unwanted Line Wrapping
Problem: Long lines wrap awkwardly on screen.
Solution:
```bash
Set terminal width
export COLUMNS=120
more filename.txt
Use -c option for better screen painting
more -c filename.txt
Consider using cut to truncate long lines
cut -c1-80 filename.txt | more
```
Best Practices
1. Choose the Right Tool for the Job
- Use `more` for simple, forward-scrolling through files
- Use `less` for more advanced navigation features
- Use `cat` for small files that fit on one screen
- Use `head` or `tail` for viewing file beginnings or endings
2. Optimize Display Settings
```bash
Set reasonable screen size for readability
more -25 filename.txt
Use clear screen mode for cleaner presentation
more -p filename.txt
Squeeze blank lines for denser information
more -s filename.txt
```
3. Effective Search Strategies
```bash
Start at a relevant section
more +/ERROR logfile.txt
Use specific search patterns
more +/"$(date +%Y-%m-%d)" logfile.txt
Combine with grep for pre-filtering
grep -i error logfile.txt | more
```
4. File Management
```bash
Always verify file exists before using more
[ -f filename.txt ] && more filename.txt || echo "File not found"
Use full paths for system files
more /etc/passwd
Be careful with binary files
file suspicious_file.txt && more suspicious_file.txt
```
5. Script Integration
```bash
Always handle errors in scripts
if more "$filename" 2>/dev/null; then
echo "File viewed successfully"
else
echo "Error viewing file: $filename"
fi
```
6. Performance Considerations
- For very large files, consider using `tail` or `head` first
- Use `+n` option to start at specific lines in large files
- Avoid using `more` with binary files
- Consider file size before opening (use `ls -lh filename`)
7. Security Considerations
```bash
Be cautious with files containing sensitive information
more /etc/shadow # Requires appropriate permissions
Avoid viewing files in untrusted directories
Verify file contents are text before viewing
file unknown_file.txt
```
Alternatives to more
less Command
The `less` command is an enhanced version of `more` with additional features:
```bash
less provides backward navigation even with pipes
command | less
More search options and better performance
less +/pattern filename.txt
```
most Command
The `most` command offers even more features:
```bash
Install most (if not available)
sudo apt-get install most # Debian/Ubuntu
sudo yum install most # CentOS/RHEL
Use most for advanced features
most filename.txt
```
pg Command
The `pg` command is another pager available on some systems:
```bash
pg filename.txt
```
Comparison Table
| Feature | more | less | most |
|---------|------|------|------|
| Forward navigation | ✓ | ✓ | ✓ |
| Backward navigation | Limited | ✓ | ✓ |
| Search | Basic | Advanced | Advanced |
| Multiple files | ✓ | ✓ | ✓ |
| Pipe support | Limited | ✓ | ✓ |
| Color support | No | ✓ | ✓ |
| Window splitting | No | No | ✓ |
Conclusion
The `more` command remains an essential tool for viewing text files in Unix-like systems. While it may seem simple compared to modern alternatives like `less`, understanding `more` provides a solid foundation for text file navigation and is crucial for working in environments where only basic tools are available.
Key takeaways from this guide:
1. Basic Usage: Master the fundamental navigation commands (Space, Enter, b, q) for efficient file browsing
2. Search Functionality: Use `/pattern` and `n` commands to quickly locate specific content
3. Command Options: Leverage options like `-p`, `-s`, and `+n` to customize the viewing experience
4. Multiple Files: Understand how to navigate between multiple files using `:n` and `:p`
5. Troubleshooting: Be aware of common issues like permission problems and pipe limitations
6. Best Practices: Choose the right tool for each situation and optimize settings for readability
Next Steps
To further develop your command-line text processing skills:
1. Explore less: Learn the enhanced features of the `less` command
2. Study grep: Master pattern searching and filtering techniques
3. Practice with sed and awk: Develop text processing and manipulation skills
4. Learn vim/nano: Understand text editors for file modification
5. Combine tools: Create powerful command pipelines using multiple utilities
Final Tips
- Practice regularly with different file types and sizes
- Experiment with various command-line options to find your preferred settings
- Create aliases for frequently used `more` command combinations
- Keep the `more` manual page handy: `man more`
- Remember that mastery comes through consistent practice and real-world application
The `more` command, despite its age, continues to be a valuable tool in the modern command-line toolkit. By mastering its usage, you'll be better equipped to handle text file navigation tasks efficiently and effectively across various Unix-like systems.