Linux / Bash Cheatsheet

Find Kernel version

uname -r

More detailed information

uname -a

Device / driver info

lspci -k


how to run python scripts:

create a new python script

#!/usr/bin/env python3
import time
import os
with open(os.path.expanduser('~/crontest.txt'),'a') as f:
chmod +x
crontab -e
# m h  dom mon dow   command
* * * * * $HOME/

search path

.bashrc holds path variables.


ctrl-h hides and shows “dot” files in nautilus like .config or .ssh/


sudo passwd <username>


ifconfig <network interface> down
ifconfig <network interface> up
ip link
ip addr

APT / dpkg

sudo apt list --installed <package-name-start*>
sudo apt --reinstall install <package>
dpkg --list | grep <package-name-fragment>


sudo libinput --list-devices


To change the file in place:

sed -i "s/regex/replace/" file


sed -i "s|regex|replace|" file

To copy output to a new file

sed "s/regex/replace/" filein > fileout

List all kernel images installed:

$ dpkg --list | grep linux-image

Login, Logout, Restart

sudo reboot now
sudo shutdown now

Ubuntu Specific


edit /etc/systemd/logind.conf to configure power options such as lid closing opening,

  1. Restart Service
systemctl restart systemd-logind.service

Users, groups


  1. Create a new user

    sudo adduser username
  2. Find groups associated with current user:

    groups $USER
  3. Add new user to new groups

    sudo usermod -aG adm username
    sudo usermod -aG sudo username

Remove User

sudo deluser --remove-home username

Force new password

passwd --expire <username_here>

Expire / unexpire

from here

Expire Account

Let the account expire to disallowing a user from logging in from any source including ssh:

# disallow peter from logging in
sudo usermod --expiredate 1 peter

This is how you can reenable that account:

# set expiration date of peter to Never
sudo usermod --expiredate "" peter

List all users / groups


cut -d: -f1 /etc/passwd
getent passwd


cut -d: -f1 /etc/group
getent group

find out who is logged on


Update Distro

Based on this link

  1. Might as well be fully updated first

    sudo apt update
    sudo apt upgrade
    sudo shutdown -r now
  2. edit which upgrade you want to do (lts or normal)

    sudo nano /etc/update-manager/release-upgrades

    change prompt=lts to prompt=normal

  3. run updater


    you may need to indicate what to do with specific config files that get updated.

  4. Restart

    sudo shutdown -r now

get ip info

from here

dig +short

get mac

arp -a <ip address>

Wifi Scanning

nmcli d wifi


to run something as root

sudo <command> [command options]

to run interactively as root

sudo -i

to run something as someone else

sudo -i -u <username>

run exit to leave that session

Show all manually-installed packages

apt-mark showmanual

close bash without saving history

unset HISTFILE && exit

Package Management

List repositories

apt policy

Remove a repository

sudo add-apt-repository --remove ppa:PPA_Name/ppa


Count files in bash


ls | wc -l

How to find .desktop file location for a particular application

For example, if “Image Viewer” is in the name of the icon:

find / -name '*.desktop' -exec grep -H 'Image Viewer' {} \; 2>/dev/null

derived from here:

Some default locations listed here:


Learn about your hardware

Get DMI/BIOS information

sudo dmidecode 
sudo dmidecode -t0 # BIOS
sudo dmidecode -t1 # System
sudo dmidecode -t2 # Board
sudo dmidecode -t3 # Enclosure or Chassis
sudo dmidecode -t4 # Processor
sudo dmidecode -t1 # System


Files can be stuck in ~/.local/share/Trash/expunged when you delete from Nautilus a folder that belongs to you, but contains files which are belong to another user, and it is tricky for Nautilus to handle this situation correctly. To delete them try to use:

sudo -i
rm -rv /home/<desired_user_name>/.local/share/Trash/expunged/*

octal file permissions

stat /path/to/filename
stat -c '%A %a %n' /path/to/filename


Hard drive information

list disks with lsblk

lsblk -f #list filesystem details
lsblk -t #show topology
lsblk -i # use ascii
lsblk -o NAME,UUID # show specific columns
sudo lshw -class disk
sudo fdisk -l
sudo hwinfo --disk
ls -l /dev/disk/by-path
ls -l /dev/disk/by-id

get drive information:

sudo hdparm -I /dev/sda

if you have an NVMe device…

sudo apt install nvme-cli
nvme list
#sudo nvme smart-log <node_name> 
sudo nvme smart-log /dev/nvme0n1 
sudo nvme id-ctrl /dev/nvme0n1


From here

##list disks
sudo fdisk -l
#if you know the disk you want info about:
sudo fdisk -l /dev/sdd 
sudo mount /dev/sdd1 /media/backup
# unmount
sudo umount /media/backup
# unmount all
sudo umount -a
# force unmount
sudo umount -f /media/backup

mounting with fstab

you can get most information from lsblk if you have temporarily mounted it…

#UUID=<yourUUID>                           <mount_location> <filesystem>  <options>  <dump(use 0)>  <order(use 2)>
UUID=24df9215-550f-4ca0-a9f1-8f0efd2  /media/backup    ext4          defaults   0       2

once you have edited, check by running

mount -a

Recursively find storage space of a directory

from here

du -sh /path/to/my/dir

list directories, one level only, from here

du -h  --max-depth 1 /path/to/my/dir

Find the free space of a drive

df -H

Recursively list files

from here

tree /path/to/dir

Recursively chown

from here

#chown -R <owner> <folder_1> <folder_2> ... <folder_n>
chown -R user /home/user
printenv | grep ROS

mount information

information on nautilus-aware mount locations

Read from Serial

from here

sudo apt install cu
cu -l /dev/ttyACM0 -s 9600

To exit enter tilde dot (~.)

sudo apt install screen
screen /dev/ttyACM0 9600


From here

see the last few lines

#tail -100 <filename>
tail -100 history.txt

see real-time changes to files as they get appended:

tail -f history.txt

see line 196-200 of a file

head -200 history.txt | tail -5


see this page for more links

List login times including boots

list login dates / times, users, etc


Boot Information

more info here

journalctl --list-boots 

Will list all recent boots

journalctl --boot=<boot id>

To just get information about the most recent boot, use

journalctl -b

Accidentally deleted sudoers

use pkexec to do things you would normally do with sudo, like

pkexec cp /path/to/sudo/backup /etc/sudoers

great advice from here: