Essential Linux Command Line Utilities for System Administration

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 directory
  • cd . - remains in current directory
  • cd .. - moves to parent directory
  • cd - - returns to previous directory

pwd: Displays current working directory

Path Resolution Concepts

  1. 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
  2. Special Path Identifiers:

    • . represents current directory (e.g., cd . or cd ./Documents)
    • .. represents parent directory (e.g., cd .. or cd ../..)
[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 page
  • q: Exit

less [-N] filename: Advanced file viewing with search capability

  • -N: Shows line numbers
  • Space: Next page
  • b: Previous page
  • q: 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:

  1. Return to command mode: Press ESC key
  2. Enter command-line mode: Type colon :
  3. Execute commands: w (save), q (quit), q! (force quit), wq (save and quit), wq! (force save and quit)

Tags: Linux command-line Shell system-administration bash

Posted on Sat, 29 Aug 2026 16:17:57 +0000 by DarkReaper