
Using Bash and the command line for file manipulation has many advantages over a using a GUI, mostly in the area of flexibility. Mastering command line file management can make your life easier, and allow you to get things accomplished more quickly.
Let’s have a look at how to use a series of Bash commands to view and edit files.
Viewing File Contents
Using cat
The cat command is used to concatenate and display file contents.
Syntax: cat filename
Example:
cat data.txt
Common use cases: Quickly viewing the entire file or concatenating multiple files into one.
Using more
The more command allows you to view file contents one screen at a time.
Syntax: more filename
more data.txt
Key commands:
- space: Move to the next screen
- Enter: Move to the next line
- q: Quit
Using less
The less command provides more control over file viewing.
Syntax: less filename
Example:
less data.txt
Key commands:
- space: Move to the next screen
- Arrow keys: Navigate through the file
- q: Quit
Advantages over more: less supports better navigation and search functionality.
Using head
The head command displays the first few lines of a file.
Syntax: head -n number_of_lines filename
Example:
head -n 10 data.txt
Default behavior (without defining the number_of_lines): Displays the first 10 lines.
Using tail
The tail command displays the last few lines of a file.
Syntax: tail -n number_of_lines filename
Example:
tail -n 10 data.txt
Additional feature:
- tail -f filename: Monitor file updates in real-time, useful for logs.
Editing File Contents
Using sed
The sed (stream editor) command allows for powerful text manipulation directly from the command line.
Syntax: sed ‘s/search/replace/g’ filename
Explanation:
- s: Start the substitution operation
- search: The pattern to find
- replace: The text to replace the pattern with
- g: Apply the substitution globally to all occurrences in each line
Example:
sed 's/foo/bar/g' data.txt
This command replaces all instances of “foo” with “bar” in the file data.txt.
Basic operations:
- In-place editing: sed -i ‘s/search/replace/g’ filename
- Deleting lines: sed ‘Nd’ filename (where `N` is the line number)
- Appending text: sed ‘a\text_to_append’ filename
Using nano
The nano command is a simple, user-friendly command-line text editor.
Syntax: nano filename
Example:
nano data.txt

nano screenshot | Image by Author
Basic operations:
- Opening a file: Simply run nano followed by the filename
- Editing text: Navigate using arrow keys, type to insert text
- Saving changes: Press Ctrl+O, then Enter
- Exiting: Press Ctrl+X
- Cut the current line: Ctrl+K
- Paste the previously cut line: Ctrl+U
Using vi
The vi command is a more advanced text editor available on most Unix-based systems.
Syntax: vi filename
Example:
vi data.txt

vi screenshot | Image by Author
Basic operations:
- Opening a file: Run vi followed by the filename
- Insert mode: Press i to enter insert mode and start editing
- Command mode: Press Esc to switch to command mode
- Saving changes: Type :w` in command mode
- Exiting: Type :q to quit or :wq to save and quit
- Search functionality: Type /search_term to search within the file
- Undo changes: Press u to undo the last change
Practical Applications
Use Case 1: Viewing Large Datasets Quickly with less
When dealing with large datasets, using less can help you navigate through the file without loading it entirely into memory, which is particularly useful for massive CSV or log files.
Use Case 2: Extracting Specific Data Using head and tail
To quickly inspect the beginning or end of data files, head and tail are very useful. For example, you might want to check the headers of a CSV file or review the last few entries of a log file.
Use Case 3: Editing Configuration Files or Scripts with nano
Editing configuration files or small scripts directly from the terminal is efficient with nano. It provides a straightforward interface for quick edits without needing a full-fledged IDE.
Final Thoughts
By mastering these few commands, and taking some time to become familiar with either or nano or vi (or even both), you will have learned enough command line wizardry to effectively view and edit files in your Bash environment.
Happy bashing!
