Essential Linux Commands
Here is a list of essential Linux commands for various operations:
File Operations:
ls: Lists all files and directories in the present working directory.
ls -R: Lists files in sub-directories as well.
ls -a: Shows hidden files.
ls -al: Lists files and directories with detailed information.
cd directoryname: Changes the directory.
cd ..: Moves one level up.
pwd: Displays the present working directory.
cat > filename: Creates a new file.
cat filename: Displays the file content.
cat file1 file2 > file3: Joins two files and stores the output in a new file.
touch filename: Creates or modifies a file.
rm filename: Deletes a file.
cp source destination: Copies files from the source path to the destination path.
mv source destination: Moves files from the source path to the destination path.
find / -name filename: Finds a file or a directory by its name starting from root.
file filename: Determines the file type.
less filename: Views the file content page by page.
head filename: Views the first ten lines of a file.
tail filename: Views the last ten lines of a file.
lsof: Shows which files are opened by which process.
du -h --max-depth=1: Shows the size of each directory.
Directory Operations:
mkdir directoryname: Creates a new directory in the present working directory.
rmdir directoryname: Deletes a directory.
cp -r source destination: Copies directories recursively.
mv olddir newdir: Renames directories.
find / -type d -name directoryname: Finds a directory starting from root.
Process Operations:
ps: Displays currently active processes.
top: Displays all running processes.
kill pid: Kills the process with the given PID.
pkill name: Kills the process with the given name.
bg: Resumes suspended jobs without bringing them to the foreground.
fg: Brings the most recent job to the foreground.
fg n: Brings job n to the foreground.
renice +n [pid]: Changes the priority of a running process.
File Permissions:
chmod octal filename: Change the permissions of a file.
chown ownername filename: Change file owner.
chgrp groupname filename: Change group owner.
Networking:
ping host: Ping a host and output results.
whois domain: Get whois information for a domain.
dig domain: Get DNS information for a domain.
netstat -pnltu: Display various network related information.
ifconfig: Displays IP addresses of all network interfaces.
ssh user@host: Remote login into the host as a user.
scp: Transfers files between hosts over SSH.
wget url: Download files from the web.
curl url: Sends a request to a URL and returns the response.
traceroute domain: Prints the route that a packet takes to reach the domain.
mtr domain: Combines the functionality of traceroute and ping.
ss: Investigates sockets.
nmap: Network exploration tool and security scanner.
Archives and Compression:
tar cf file.tar files: Create a tar archive containing files.
tar xf file.tar: Extract files from a tar archive.
gzip file: Compresses a file.
gzip -d file.gz: Decompresses a file.
zip -r file.zip files: Create a zip archive.
unzip file.zip: Extract the contents of a zip file.
Text Processing:
grep pattern files: Search for a pattern in files.
grep -r pattern dir: Search recursively for a pattern in a directory.
echo 'text': Prints text.
sed 's/string1/string2/g' filename: Replaces string1 with string2 in a file.
diff file1 file2: Compares two files and shows the differences.
wc filename: Count lines, words, and characters in a file.
awk: A versatile programming language for working on files.
sed -i 's/string1/string2/g' filename: Replace string1 with string2 in a file.
cut -d':' -f1 /etc/passwd: Cut out the first field of each line in /etc/passwd.
Disk Usage:
df: Shows disk usage.
du: Shows directory space usage.
free: Show memory and swap usage.
whereis app: Show possible locations of an app.
System Info:
date: Show the current date and time.
cal: Show this month's calendar.
uptime: Show current uptime.
w: Display who is online.
whoami: Who you are logged in as.
uname -a: Show kernel information.
df -h: Disk usage in a human-readable format.
du -sh: Disk usage of the current directory in a human-readable format.
free -m: Show free and used memory in MB.
Package Installations:
- sudo
apt-get update: Updates package lists for upgrades.
sudo apt-get upgrade: Upgrades all upgradable packages.
sudo apt-get install pkgname: Install a package.
sudo apt-get remove pkgname: Removes a package
.
Others (mostly used in scripts):
command1 ; command2: Run command1 and then command2.
command1 && command2: Run command2 if command1 is successful.
command1 || command2: Run command2 if command1 is not successful.
command &: Run command in the background.
Version Control (Git commands):
git init: Initialize a local Git repository.
git clone url: Create a local copy of a remote repository.
git add filename: Add a file to the staging area.
git commit -m "Commit message": Commit changes with a message.
git status: Check the status of the working directory.
git pull: Pull latest changes from the remote repository.
git push: Push changes to the remote repository.
git branch: List all local branches.
git branch branchname: Create a new branch.
git checkout branchname: Switch to a branch.
git merge branchname: Merge a branch into the active branch.
git stash: Stash changes in a dirty working directory.
git stash apply: Apply changes from a stash.
git log: View commit history.
git reset: Reset your HEAD pointer to a previous commit.
git rm filename: Remove a file from version control.
git rebase: Reapply commits on top of another base tip.
git revert: Create a new commit that undoes all the changes made in a particular commit.
git cherry-pick commitID: Apply the changes introduced by some existing commits.
Environment Variables:
env: Display all environment variables.
`echo $V
ARIABLE`: Display the value of an environment variable.
export VARIABLE=value: Set the value of an environment variable.
alias new_command='old_command options': Create a new command that executes the old command with the specified options.
echo $PATH: Print the PATH environment variable.
export PATH=$PATH:/new/path: Add /new/path to the PATH.
Job Scheduling (Cron Jobs):
crontab -l: List all your cron jobs.
crontab -e: Edit your cron jobs.
crontab -r: Remove all your cron jobs.
crontab -v: Display the last time you edited your cron jobs.
crontab file: Install a cron job from a file.
@reboot command: Schedule a job to run at startup.
Package Installations (using pip, a Python package installer):
pip install packagename: Install a Python package.
pip uninstall packagename: Uninstall a Python package.
pip freeze > requirements.txt: Freeze the installed packages into a requirements file.
pip install -r requirements.txt: Install packages from a requirements file.
Shell Scripting:
#!/bin/bash: Shebang line to specify the script interpreter.
$0, $1, ..., $9, ${10}, ${11}: Script arguments.
if [condition]; then ... fi: if statement in Bash scripts.
for i in {1..10}; do ... done: for loop in Bash scripts.
while [condition]; do ... done: while loop in Bash scripts.
function name() {...}: Define a function.
System Monitoring and Performance:
iostat: Reports CPU statistics and input/output statistics for devices, partitions, and network filesystems.
vmstat: Reports information about processes, memory, paging, block IO, traps, disks, and CPU activity.
htop: An interactive process viewer for Unix systems.
Search and Find:
locate filename: Find a file by its name.
whereis programname: Locate the binary, source, and manual page files for a command.
which commandname: Shows the full path of shell commands.
Compression / Archives:
tar -cvf archive.tar dirname/: Create a tar archive.
tar -xvf archive.tar: Extract a tar archive.
tar -jcvf archive.tar.bz2 dirname/: Create a compressed bz2 archive.
tar -jxvf archive.tar.bz2: Extract a bz2 archive.
Disk Usage:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k: Create a file of a certain size for testing disk speed.
hdparm -Tt /dev/sda: Measure the read speed of your hard drive.
Others:
yes > /dev/null &: Use this command to push a system to its limit.
:(){ :|:& };::: A fork bomb – handle with care. Do not run this command on a production system.
{% embed url="https://www.commandlinefu.com/commands/browse" %}
Remember, you can always use the man
command (e.g., man ls
) to get more information about each command.