Linux Cheatsheet

This page presents a list of commonly used commands and config files for Linux.

Commands

File & Directory Basics

# List files in the current directory.
ls

# List files in the current directory with details.
ls -alh

# Change current directory.
cd

# Show current directory.
pwd

# Create an empty directory.
mkdir

# Copy file.
cp <src-filename> <dst-filename>

# Copy directory.
cp -Rf <src-dirname> <dst-dirname>

# Move file or directory.
mv <src-filename> <dst-filename>

# Remove file.
rm <filename>

# Remove an empty directory.
rmdir <dirname>

# Remove a non-empty directory.
rm -Rf <dirname>

# Create a new empty file.
touch <filename>

# Find files.
find . -iname <filename-regex>

# Find all files.
find . -type f

File Content

# Print file content.
cat <filename>

# Search texts in file.
grep <text> <filename>

# Search regex pattern in file.
grep -e <regex-pattern> <filename>

# Show first few lines in file.
head -n <line-count> <filename>

# Show last few lines in file.
tail -n <line-count> <filename>

# Follow file changes.
tail -f <filename>

File Access

# Change file access. An example of access-code is 600.
chmod <access-code> <filename>

# Change file owner.
chown <owner>[:<group>] <filename>

Package & Compress

# Pack a directory into a tar file.
tar -cvf <tar-filename>.tar <dirname>

# Unpack a tar file.
tar -xvf <tar-filename>.tar

# Zip a file.
zip <zip-filename> file1 file2 file3 ...

# Unzip a file.
unzip <zip-filename>

Disk

# Show free disk spaces for each block device.
df -alh

# Display the disk usage of files under the current directory.
du -h ./*

# Show block devices.
lsblk

Process

# List process.
ps aux

# Kill a process with SIGTERM.
kill <pid>

# Kill a process with SIGKILL (the strongest killing signal).
kill -9 <pid>

# List all processes in a terminal UI.
top

# List all processes in an advanced terminal UI.
htop

Networking

# Download data from url.
curl <url>

# Download data from url to local file.
curl <url> -o <filename>

# List all ports opened.
netstat -an

# List network configuration.
ifconfig

# Ping network connectivity.
ping

User

# Add a new user.
sudo adduser <username>

# Delete a user.
sudo deluser <username>

Packages

# Install packages on ubuntu or debian.
sudo apt install <package-name>[=<version>]

# Uninstall packages from ubuntu or debian.
sudo apt-get --purge remove <package-name>

System

# Display information about your system.
uname -a

# Display Linux release information
lsb_release -a

# Show hostname.
hostname

# Reboot system now.
sudo reboot now

# Shutdown system now.
sudo shutdown -h now

Services

# List all units.
systemctl list-units

# List all service units.
systemctl list-units --type=service

# Start a service.
sudo systemctl start <service-name>

# Restart a service.
sudo systemctl restart <service-name>

# Stop a service.
sudo systemctl stop <service-name>

# Check a service status.
sudo systemctl status <service-name>

# Enable a service to start as system starts.
sudo systemctl enable <service-name>

Configuration Files

File PathScopeFile Use
/boot/grub/grub.cfgglobalthe generated grub file
/etc/bash.bashrcglobalglobal config file for bash
/etc/default/grubglobalconfig used by update-grub to generate /boot/grub/grub.cfg
/etc/dhcp/dhclient.confglobalDCHP client configs
/etc/fstabglobalstartup mount configs
/etc/hostnameglobalhostname
/etc/hostsglobalstatic dhcp entries
/etc/mime.typesglobalMIME types and filename extensions associated with them
/etc/motdgloballog in prompt message
/etc/profileglobalcommands for the login shell to execute
/etc/resolv.confglobalDNS server config
/etc/sudoersglobalconfigs for sudoers
/etc/timezonegloballocal timezone
~/.bashrcuserbash startup config for non-login shell
~/.editorusersets the default editor for the user
~/.gitconfigusersets the default configs for git
~/.profileusershell startup commands
~/.ssh/configuseruser ssh config
~/.vimrcuservim config
~/.emacsuseremacs config
~/.xinitrcuserxmanager config