Core Linux Commands
Directory Listing Command
The ls [-a -l -h] [path] command displays files within a specified directory path. When no path is provided, it defaults to the current location.
- Parameter
-a: Reveals hidden directories - Parameter
-l: Displays detailed file information - Parameter
-h: Formats file sizes in human-readable format when used with-l
# Display current directory contents [flat view]
[user@server sample]# ls
folder1 document.txt script.sh config.json archive.zip
# Display current directory contents [detailed view]
[user@server sample]# ls -l
drwxr-xr-x 3 user user 56 Jul 13 16:30 folder1
lrwxrwxrwx 1 user user 13 Jul 14 15:42 document.txt -> /sample/folder1/document.txt
-rw-r--r-- 1 user user 0 Jul 13 16:23 script.sh
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
# Show directory contents including hidden files
[user@server sample]# ls -a -l
drwxr-xr-x 3 user user 72 Jul 14 15:42 .
dr-xr-xr-x. 20 user user 4096 Jul 14 19:56 ..
drwxr-xr-x 3 user user 56 Jul 13 16:30 folder1
lrwxrwxrwx 1 user user 13 Jul 14 15:42 document.txt -> /sample/folder1/document.txt
-rw-r--r-- 1 user user 0 Jul 13 16:23 script.sh
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
# List contents of specific directory
[user@server sample]# ls -l /sample
drwxr-xr-x 3 user user 56 Jul 13 16:30 folder1
lrwxrwxrwx 1 user user 13 Jul 14 15:42 document.txt -> /sample/folder1/document.txt
-rw-r--r-- 1 user user 0 Jul 13 16:23 script.sh
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
Screen Management and Navigation Commands
clear: Clears the terminal screen
cd [path]: Changes to the specified directory
cd- navigates to user's home directorycd .- remains in current directorycd ..- moves to parent directorycd -- returns to previous directory
pwd: Displays current working directory
Path Resolution Concepts
-
Absolute vs Relative Paths:
- Absolute paths: Begin from root directory, starting with
/ - Relative paths: Start from current directory, do not begin with
/ - Relative paths are commonly used in practice
- Absolute paths: Begin from root directory, starting with
-
Special Path Identifiers:
.represents current directory (e.g.,cd .orcd ./Documents)..represents parent directory (e.g.,cd ..orcd ../..)
[user@server workspace]# cd / # Navigate to root
[user@server /]# cd # Return to home
[user@server ~]# cd - # Go back to previous location
/
[user@server /]# cd opt
[user@server opt]# cd .. # Move to parent directory
[user@server /]# cd /usr/local
[user@server local]# pwd # Show absolute path /usr/local
Directory Creation Command
mkdir [-p] directory_path: Creates specified directory
- Option
-p: Automatically creates non-existent parent directories for multi-level structures
[user@server sample]# ls
config.json archive.zip
[user@server sample]# mkdir ./subdir # Create folder in current directory (./ optional)
[user@server sample]# ls
subdir config.json archive.zip
[user@server sample]# mkdir /sample/data # Create directory using absolute path
[user@server sample]# ls
subdir data config.json archive.zip
[user@server sample]# mkdir project1 project2 # Create multiple directories
[user@server sample]# ls
subdir data config.json project1 project2 archive.zip
File Creation Command
touch file_path: Creates specified file
Note: Multiple files can be created simultaneously
# Create single file
[user@server sample]# touch readme.md
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 11:31 readme.md
# Create multiple files
[user@server sample]# touch info1.txt info2.txt
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 11:31 info1.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 info2.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 readme.md
Text Output Command
echo text_to_print: Outputs text to console
Note: Often used with redirection operators
[user@server sample]# echo welcome
welcome
Redirection operators:
> : Overwrites target file
>> : Appends to target file
Note: Primarily used with echo command
[user@server sample]# echo greeting >info1.txt
[user@server sample]# echo salutation >>info1.txt
[user@server sample]# cat info1.txt
greeting
salutation
# Left side output redirects to right side file. > overwrites, >> appends
[user@server sample]# ls -l /sample >info1.txt
[user@server sample]# cat info1.txt
-rw-r--r-- 1 user user 0 Jul 15 11:48 info1.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 info2.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 readme.md
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
File Content Viewing Commands
cat [-n] filename: Views file content, suitable for small files
-n: Shows line numbers
more filename: Views file content with pagination, suitable for large files
- Space: Next page
b: Previous pageq: Exit
less [-N] filename: Advanced file viewing with search capability
-N: Shows line numbers- Space: Next page
b: Previous pageq: Exit/text: Searches for specified content
cat readme.md
cat -n readme.md # Show line numbers -- for small files
more large_file.txt # Paginated view for large files
less large_file.txt # Searchable file content viewing
less -N large_file.txt # Show line numbers -- for large files
Copy Command
cp [-r] source destination: Copies files or directories to target location
Note: -r option is essential for copying directories
# Copy within current directory
[user@server sample]# cp info2.txt backup.txt
[user@server sample]# ll
-rw-r--r-- 1 user user 267 Jul 15 11:48 info1.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 info2.txt
-rw-r--r-- 1 user user 0 Jul 15 11:51 backup.txt
# Copy to specific directory -- [same name]
[user@server sample]# cp info1.txt /
[user@server sample]# ls /
backup.txt bin data.cnf dirfile export lib media opt root sbin sys tmp var
readme.md boot dev etc home lib64 mnt proc run srv sample usr
# Copy to specific directory -- [rename]
[user@server sample]# cp info2.txt /renamed.txt
[user@server sample]# ls /
backup.txt bin renamed.txt dev etc home lib64 mnt proc run srv sample usr
readme.md boot data.cnf dirfile export lib media opt root sbin sys tmp var
# Directory copy fails --- [directory contains subfiles]
[user@server sample]# cp folder1 /
cp: skipping directory "folder1"
[user@server sample]# ls /
backup.txt bin renamed.txt dev etc home lib64 mnt proc run srv sample usr
readme.md boot data.cnf dirfile export lib media opt root sbin sys tmp var
# Directory copy succeeds -- note -r parameter;
[user@server sample]# cp -r folder1 /
[user@server sample]# ls /
backup.txt readme.md boot data.cnf dirfile export lib media opt root sbin sys tmp var
folder1 bin renamed.txt dev etc home lib64 mnt proc run srv sample usr
Move Command
mv source destination: Moves files or directories to target location
Note: If destination is a non-existent file, rename occurs. If destination is a directory, it must exist.
# Move file to specific directory
[user@server sample]# mv info2.txt folder1
[user@server sample]# ls
backup.txt folder1 readme.md config.json archive.zip
[user@server sample]# ls folder1
info1.txt info2.txt
# Move directory to specific directory
[user@server sample]# mv folder1 subdir
[user@server sample]# ls subdir
folder1
# When destination is file path, renaming occurs.
[user@server sample]# mv backup.txt restored.txt
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 11:51 restored.txt
-rw-r--r-- 1 user user 0 Jul 15 11:31 readme.md
drwxr-xr-x 3 user user 15 Jul 15 12:05 subdir
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
Delete Command
rm [-r -f] target: Removes specified files or directories
Note: -r is required for directory deletion, -f forces deletion without prompts
# rm removes file -- [root user gets confirmation prompt][type y then Enter]
[user@server sample]# rm restored.txt
rm: remove regular empty file "restored.txt"? y
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 11:31 readme.md
drwxr-xr-x 3 user user 15 Jul 15 12:05 subdir
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
# Delete multiple files without prompting [-f]
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 14:33 readme.md
drwxr-xr-x 3 user user 15 Jul 15 12:05 subdir
-rw-r--r-- 1 user user 0 Jul 15 14:33 script.js
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
[user@server sample]# rm -f readme.md script.js
[user@server sample]# ll
drwxr-xr-x 3 user user 15 Jul 15 12:05 subdir
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
# rm cannot delete directories directly:[requires -r flag]
[user@server sample]# rm subdir
rm: cannot remove "subdir": Is a directory
# rm successfully deletes directory [-r]
[user@server sample]# rm -rf subdir
[user@server sample]# ll
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
# rm with wildcard * to delete multiple files: * represents any number of characters.
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 14:36 first.txt
-rw-r--r-- 1 user user 0 Jul 15 14:36 second.txt
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
[user@server sample]# rm -rf *.txt
[user@server sample]# ll
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
Wildcard Characters
*: Matches any number of characters, similar to SQL LIKE operator %
?: Matches exactly one character, similar to SQL LIKE operator _
[user@server sample]# rm -rf *.txt # Delete files with .txt extension
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 14:40 first.txt
-rw-r--r-- 1 user user 0 Jul 15 14:40 documentation.txt
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
[user@server sample]# rm -rf ?.txt # Delete .txt files with single-character names
[user@server sample]# ll
-rw-r--r-- 1 user user 0 Jul 15 14:40 documentation.txt
-rw-r--r-- 1 user user 10206 Aug 14 2023 config.json
-rw-r--r-- 1 user user 119 Jul 13 16:30 archive.zip
Command Location and File Search
which command: Locates where a command is installled
Note: find command can also utilize wildcards
find [search_path] -name filename: Search by file name
find [search_path] -size [+ -]size: Search by file size (+: greater than, -: less than)
find [search_path] -type [d f] -name filename: Search by file type (d: directory, f: file)
# Locate where cd command is installed?
[user@server sample]# which cd
/usr/bin/cd
# Find .txt ending files
[user@server sample]# find /sample/ -name '*.txt'
/sample/documentation.txt
# Find .txt files with single-character names
[user@server sample]# find /sample/ -name '?.txt'
/sample/first.txt
# Find files larger than 1KB!
[user@server sample]# find /sample/ -size +1k
/sample/config.json
/sample/first.txt
Pipeline Operator |
Pipeline syntax: command1 | command2 | command3 ...
Function: Passes output of command1 to command2, then command2's output to command3, and so forth
Note: Pipelines are frequently combined with grep command
# Search for processes containing 'ssh'
[user@server sample]# ps -ef | grep 'ssh'
user 1126 1 0 11:01 ? 00:00:00 /usr/sbin/sshd -D
user 2000 1126 0 11:08 ? 00:00:00 sshd: user@pts/0
user 4078 2002 0 14:50 pts/0 00:00:00 grep --color=auto ssh
# Search for lines containing 'hello' in documentation.txt
[user@server sample]# cat documentation.txt | grep 'hello'
helloworld
Pattern Search Command
grep [-n] pattern file_path: Searcehs for specified pattern within a file
Note: -n displays line numbers of matching results, pipelines often combine with grep
[user@server sample]# grep 'world' documentation.txt # Query without line numbers
helloworld
[user@server sample]# grep -n 'world' documentation.txt # Query with line numbers
1:helloworld
Word Count Command
wc [-l -w] file_path: Counts lines or words in specified file
-l: Line count
-w: Word count (separated by spaces)
[user@server sample]# cat documentation.txt
helloworld
[user@server workspace]# wc sample.txt
2 2 12 sample.txt # 2 lines 2 words, 12 characters
------------------------------------
[user@server sample]# wc -c documentation.txt # Byte count
11 documentation.txt
[user@server sample]# wc -m documentation.txt # Character count
11 documentation.txt
[user@server sample]# wc -l documentation.txt # Line count
1 documentation.txt
[user@server sample]# wc -w documentation.txt # Word count
1 documentation.txt
File Head and Tail Commands
head [-num] file_path: View top lines of file (default 10 lines, customizable with -num)
tail [-num] file_path: View bottom lines of file (default 10 lines, customizable with -num)
tail -f file_path: Continuously monitor file changes
# View first 3 lines of file
[user@server sample]# head -3 input.txt
hello
world
javascript
# View last 3 lines of file
[user@server sample]# tail -3 input.txt
alpha
beta
gamma
# Monitor file dynamically
[user@server sample]# tail -f input.txt
hello
world
javascript
typescript
database
alpha
beta
gamma
Text Editor Command
Open file: vim filename.extension Note: Opens existing file or creates new one
Edit file: Press i to enter edit mode
Save file:
- Return to command mode: Press
ESCkey - Enter command-line mode: Type colon
: - Execute commands:
w(save),q(quit),q!(force quit),wq(save and quit),wq!(force save and quit)