DEV Community

Cover image for How to Master Essential Linux Commands for DevOps on Ubuntu 24.04
Stella Achar Oiro
Stella Achar Oiro

Posted on

How to Master Essential Linux Commands for DevOps on Ubuntu 24.04

Linux commands form the foundation of system administration, automation, and DevOps workflows. Mastering these commands enables efficient server management, file processing, and task automation across any infrastructure environment.

This article demonstrates 50 essential Linux commands organized by practical use cases. You will implement file management workflows, process monitoring techniques, and system administration patterns used in production environments.

Prerequisites

  • Ubuntu 24.04 machine with sudo access
  • Terminal or SSH access to the system
  • Basic understanding of command-line interfaces
  • Text editor installed (vim, nano, or emacs)

Navigate the Linux File System

Identify Your Location

Display your current username:

$ whoami
Enter fullscreen mode Exit fullscreen mode

Show the current working directory:

$ pwd
Enter fullscreen mode Exit fullscreen mode

Clear the terminal screen while preserving command history:

$ clear -x
Enter fullscreen mode Exit fullscreen mode

Navigate Between Directories

Change to a specific directory:

$ cd /var/log
Enter fullscreen mode Exit fullscreen mode

Return to your home directory:

$ cd ~
Enter fullscreen mode Exit fullscreen mode

Move up one directory level:

$ cd ..
Enter fullscreen mode Exit fullscreen mode

Navigate multiple levels up:

$ cd ../../..
Enter fullscreen mode Exit fullscreen mode

List Directory Contents

Display files in the current directory:

$ ls
Enter fullscreen mode Exit fullscreen mode

Show detailed file information:

$ ls -l
Enter fullscreen mode Exit fullscreen mode

Include hidden files (starting with .):

$ ls -la
Enter fullscreen mode Exit fullscreen mode

List contents of a specific directory without changing location:

$ ls -la /etc/nginx/
Enter fullscreen mode Exit fullscreen mode

Manage Files and Directories

Create Directory Structures

Create a single directory:

$ mkdir project
Enter fullscreen mode Exit fullscreen mode

Create multiple directories simultaneously:

$ mkdir src tests docs
Enter fullscreen mode Exit fullscreen mode

Build nested directory structures:

$ mkdir -p project/src/components/ui
Enter fullscreen mode Exit fullscreen mode

Create and Manage Files

Generate empty files:

$ touch README.md
Enter fullscreen mode Exit fullscreen mode

Create multiple files at once:

$ touch index.html style.css script.js
Enter fullscreen mode Exit fullscreen mode

Remove Files and Directories

Delete files with verbose output:

$ rm -v oldfile.txt
Enter fullscreen mode Exit fullscreen mode

Remove empty directories:

$ rmdir empty-folder
Enter fullscreen mode Exit fullscreen mode

Delete directories with contents:

$ rm -r project-backup
Enter fullscreen mode Exit fullscreen mode

Remove files interactively for safety:

$ rm -i sensitive-data.txt
Enter fullscreen mode Exit fullscreen mode

Copy and Move Operations

Copy files:

$ cp config.yaml config.yaml.backup
Enter fullscreen mode Exit fullscreen mode

Copy entire directories:

$ cp -r /var/www/html /home/user/backup
Enter fullscreen mode Exit fullscreen mode

Move or rename files:

$ mv draft.txt final-report.txt
Enter fullscreen mode Exit fullscreen mode

Move files to different directories:

$ mv *.log /var/log/archive/
Enter fullscreen mode Exit fullscreen mode

Process File Contents

View File Contents

Display entire file contents:

$ cat /etc/hosts
Enter fullscreen mode Exit fullscreen mode

Show first 20 lines of a file:

$ head -n 20 access.log
Enter fullscreen mode Exit fullscreen mode

Display last 50 lines:

$ tail -n 50 error.log
Enter fullscreen mode Exit fullscreen mode

Monitor log files in real-time:

$ tail -f /var/log/syslog
Enter fullscreen mode Exit fullscreen mode

Search Within Files

Find specific text in a file:

$ grep "ERROR" application.log
Enter fullscreen mode Exit fullscreen mode

Search with line numbers:

$ grep -n "timeout" server.log
Enter fullscreen mode Exit fullscreen mode

Search recursively through directories:

$ grep -r "TODO" ./src
Enter fullscreen mode Exit fullscreen mode

Case-insensitive search with context:

$ grep -i -C 3 "warning" *.log
Enter fullscreen mode Exit fullscreen mode

Analyze File Differences

Compare two configuration files:

$ diff config.old config.new
Enter fullscreen mode Exit fullscreen mode

Show differences side-by-side:

$ diff -y file1.txt file2.txt
Enter fullscreen mode Exit fullscreen mode

Generate unified diff output:

$ diff -u original.conf modified.conf
Enter fullscreen mode Exit fullscreen mode

Process Data with Pipes and Filters

Count and Sort Operations

Count lines, words, and bytes:

$ wc -l access.log
Enter fullscreen mode Exit fullscreen mode

Sort file contents numerically:

$ sort -n numbers.txt
Enter fullscreen mode Exit fullscreen mode

Remove duplicate lines:

$ sort data.txt | uniq
Enter fullscreen mode Exit fullscreen mode

Count occurrences of unique items:

$ cat usernames.txt | sort | uniq -c | sort -nr
Enter fullscreen mode Exit fullscreen mode

Combine Commands with Pipes

Count files in a directory:

$ ls -1 | wc -l
Enter fullscreen mode Exit fullscreen mode

Find and display large files:

$ find . -type f -size +10M | xargs ls -lh
Enter fullscreen mode Exit fullscreen mode

Extract unique IP addresses from logs:

$ grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' access.log | sort | uniq
Enter fullscreen mode Exit fullscreen mode

Manage System Resources

Monitor Disk Usage

Check disk space:

$ df -h
Enter fullscreen mode Exit fullscreen mode

Find directory sizes:

$ du -h --max-depth=1 /var
Enter fullscreen mode Exit fullscreen mode

Identify largest directories:

$ du -h /home | sort -hr | head -10
Enter fullscreen mode Exit fullscreen mode

Monitor Processes

View running processes:

$ ps aux
Enter fullscreen mode Exit fullscreen mode

Display resource-intensive processes:

$ top
Enter fullscreen mode Exit fullscreen mode

Find specific processes:

$ ps aux | grep nginx
Enter fullscreen mode Exit fullscreen mode

Terminate processes:

$ kill -TERM 1234
Enter fullscreen mode Exit fullscreen mode

Kill processes by name:

$ killall -KILL chrome
Enter fullscreen mode Exit fullscreen mode

Manage Background Tasks

Run commands in background:

$ find / -name "*.log" -mtime +30 &
Enter fullscreen mode Exit fullscreen mode

View background jobs:

$ jobs
Enter fullscreen mode Exit fullscreen mode

Bring job to foreground:

$ fg 1
Enter fullscreen mode Exit fullscreen mode

Send job to background:

$ bg 1
Enter fullscreen mode Exit fullscreen mode

Handle File Permissions and Ownership

View Permissions

Display detailed file permissions:

$ ls -la /etc/passwd
Enter fullscreen mode Exit fullscreen mode

Change Ownership

Modify file owner:

$ sudo chown ubuntu:www-data index.html
Enter fullscreen mode Exit fullscreen mode

Change ownership recursively:

$ sudo chown -R deploy:deploy /var/www/app
Enter fullscreen mode Exit fullscreen mode

Modify Permissions

Grant execute permission:

$ chmod +x deploy.sh
Enter fullscreen mode Exit fullscreen mode

Set specific permissions using octal notation:

$ chmod 644 config.ini
Enter fullscreen mode Exit fullscreen mode

Remove write permission for group and others:

$ chmod go-w sensitive.txt
Enter fullscreen mode Exit fullscreen mode

Archive and Compress Files

Create Archives

Bundle files into tar archive:

$ tar -cf backup.tar documents/
Enter fullscreen mode Exit fullscreen mode

Create compressed archive:

$ tar -czf backup.tar.gz documents/
Enter fullscreen mode Exit fullscreen mode

Extract Archives

Extract tar archive:

$ tar -xf backup.tar
Enter fullscreen mode Exit fullscreen mode

Extract to specific directory:

$ tar -xzf backup.tar.gz -C /restore/
Enter fullscreen mode Exit fullscreen mode

List archive contents:

$ tar -tzf backup.tar.gz
Enter fullscreen mode Exit fullscreen mode

Compress Individual Files

Compress file and keep original:

$ gzip -k largefile.log
Enter fullscreen mode Exit fullscreen mode

Decompress files:

$ gunzip compressed.gz
Enter fullscreen mode Exit fullscreen mode

Search for Files and Directories

Find by Name

Locate all JavaScript files:

$ find . -name "*.js"
Enter fullscreen mode Exit fullscreen mode

Case-insensitive search:

$ find /home -iname "*config*"
Enter fullscreen mode Exit fullscreen mode

Find by Type and Size

Find directories only:

$ find /var -type d -name "log*"
Enter fullscreen mode Exit fullscreen mode

Locate large files:

$ find / -type f -size +100M
Enter fullscreen mode Exit fullscreen mode

Find by Time

Files modified in last 24 hours:

$ find . -mtime -1
Enter fullscreen mode Exit fullscreen mode

Files older than 7 days:

$ find /tmp -mtime +7 -exec rm {} \;
Enter fullscreen mode Exit fullscreen mode

Optimize Command-Line Productivity

Create Command Aliases

Define temporary alias:

$ alias ll='ls -la'
Enter fullscreen mode Exit fullscreen mode

Make aliases permanent:

$ echo "alias gs='git status'" >> ~/.bashrc
$ source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Use Environment Variables

Display system PATH:

$ echo $PATH
Enter fullscreen mode Exit fullscreen mode

Show current user:

$ echo $USER
Enter fullscreen mode Exit fullscreen mode

Leverage Shell Expansions

Create multiple files with patterns:

$ touch test_{1..5}.txt
Enter fullscreen mode Exit fullscreen mode

Use wildcards effectively:

$ rm *.tmp
Enter fullscreen mode Exit fullscreen mode

Match single characters:

$ ls data_?.csv
Enter fullscreen mode Exit fullscreen mode

Manage System Security

Switch Users

Change to another user:

$ su - deploy
Enter fullscreen mode Exit fullscreen mode

Execute commands with elevated privileges:

$ sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Monitor System Access

Check logged-in users:

$ who
Enter fullscreen mode Exit fullscreen mode

View command history:

$ history | tail -50
Enter fullscreen mode Exit fullscreen mode

Search command history:

$ history | grep docker
Enter fullscreen mode Exit fullscreen mode

Conclusion

These 50 Linux commands provide the foundation for efficient system administration and DevOps workflows. Regular practice with these commands develops muscle memory for rapid troubleshooting and automation tasks.

Implement these commands in your daily operations to build proficiency. Combine them with shell scripting to create powerful automation solutions that scale across any Linux environment.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.