Linux Basics
$ pwd -> prints current path
$ ls -> prints non-hidden directory contents
$ ls -l -> prints non-hidden directory contents + more info
$ cd <dir name> -> changes current directory to <dir name>
$ cd .. -> changes current directory to one directory higher
$ cd ~ -> changes current directory to home directory
$ ls -a -> prints non-hidden and hidden directory contents
$ ls -la -> prints non-hidden and hidden directory contents + more info
$ mkdir <dir name> -> creates directory <dir name>
$ touch <file name> -> creates file <file name>
$ mv <file name> <new path> -> moves file <file name> into <new path>
$ mv <file name> <new file name> -> renames file <file name> to <new file name>
$ cp <file name> <copy name> -> copies <file name> into <copy name> (same contents, 2 files now)
$ cp -r <dir name> <copy name> -> copies directory <dir name> and its contents into <copy name>
$ rm <file name> -> deletes <file name>
$ rm -r <dir name> -> deletes directory <dir name> and its contents
$ rmdir <dir name> -> deletes empty directory <dir name>
$ cat <file> -> prints entire contents of <file>
$ less <file> -> opens <file> in scrollable pager (arrow keys, q to quit)
$ head <file> -> prints first 10 lines of <file>
$ head -n <num> <file> -> prints first <num> lines of <file>
$ tail <file> -> prints last 10 lines of <file>
$ tail -n <num> <file> -> prints last <num> lines of <file>
$ tail -f <file> -> prints and follows changes in <file> in real time
$ find <path> -name <pattern> -> searches <path> for files matching <pattern>
$ find <path> -type f -> lists all files in <path>
$ find <path> -type d -> lists all directories in <path>
$ locate <filename> -> quickly finds paths containing <filename>
$ grep <pattern> <file> -> prints lines in <file> containing <pattern>
$ grep -r <pattern> <dir> -> searches all files in <dir> for <pattern>
$ grep -i <pattern> <file> -> searches <file> ignoring case
$ which <command> -> shows path of <command> if installed
$ whereis <command> -> shows all locations of <command> (binary, source, man page)
$ ls -l -> shows permissions, owner, group, and file info
$ chmod <mode> <file> -> changes file permissions (e.g., 755 or +x)
$ chown <user>:<group> <file> -> changes ownership of file
$ groups -> shows groups the current user belongs to
$ umask -> shows default permission mask for new files
$ whoami -> prints current logged-in user
$ id -> shows user ID, group ID, and memberships
$ su <user> -> switch to another user account
$ sudo <command> -> run command with root privileges
$ adduser <username> -> create new user
$ cat /etc/passwd -> shows user account info
$ ps -> shows running processes for current shell
$ ps aux -> shows all running processes with details
$ top -> real-time interactive process monitor
$ htop -> user-friendly interactive process monitor
$ kill <PID> -> kills process with given PID
$ jobs -> lists background jobs in shell
<command> & -> runs command in background
$ fg %<job> -> brings background job to foreground
$ bg %<job> -> resumes job in background
$ uname -a -> prints kernel name, version, machine, and system info
$ hostname -> prints the system’s hostname
$ uptime -> shows system uptime, logged-in users, and load averages
$ df -h -> shows disk space usage (human-readable)
$ free -m -> shows memory usage in MB
$ ifconfig -> shows network interfaces and IP addresses (legacy)
$ ip a -> shows network interfaces and IP addresses (modern)
$ ping <host> -> tests connectivity to <host>
$ netstat -tuln -> shows active connections and listening ports (deprecated)
$ ss -tuln -> shows active connections and listening ports (modern)
$ curl <url> -> fetches and displays contents from <url>
$ wget <url> -> downloads file(s) from <url>
$ tar -cvf <archive.tar> <files> -> create tar archive
$ tar -xvf <archive.tar> -> extract tar archive
$ tar -czvf <archive.tar.gz> <files> -> create compressed tar.gz archive
$ tar -xzvf <archive.tar.gz> -> extract tar.gz archive
$ gzip <file> -> compress file into .gz
$ gunzip <file.gz> -> decompress .gz file
$ zip <archive.zip> <files> -> create zip archive
$ unzip <archive.zip> -> extract zip archive
$ nano <file> -> open file in nano editor
$ vim <file> -> open file in vim editor
$ gedit <file> -> open file in gedit GUI editor
#!/bin/bash -> shebang to define shell for script
$ nano <script.sh> -> create/edit script file
$ chmod +x <script.sh> -> make script executable
$ ./<script.sh> -> run script
$ echo $PATH -> prints PATH variable
$ export <VAR>=<value> -> sets environment variable for session
$ echo $VAR -> prints value of variable
$ nano ~/.bashrc -> edit bashrc to make variables permanent
$ ln -s <target> <link> -> create symbolic link to target
$ ls -l -> shows symlinks and their targets
$ cat <symlink> -> follows symlink and prints target contents
$ sudo apt update -> update package list
$ sudo apt upgrade -> upgrade installed packages
$ sudo apt install <pkg> -> install package
$ sudo apt remove <pkg> -> remove package
$ dpkg -i <file.deb> -> install from local .deb file
$ apt-cache search <term> -> search package repositories
/var/log/ -> main system log directory
$ cat /var/log/auth.log -> view authentication logs
$ tail -f /var/log/syslog -> follow system log in real time
$ dmesg -> view kernel messages
> <file> -> overwrite file with command output
>> <file> -> append command output to file
< <file> -> use file as input to command
<cmd1> | <cmd2> -> pipe output of cmd1 into cmd2
* -> matches zero or more characters
? -> matches exactly one character
[abc] -> matches one character in set
$ crontab -l -> list cron jobs
$ crontab -e -> edit cron jobs
0 0 * * * <cmd> -> run command every day at midnight
$ systemctl status cron -> check cron service
$ ssh user@host -> connect to host as user
$ ssh -p <port> user@host -> connect with custom port
$ ssh -i <key> user@host -> connect with SSH key
$ scp <file> user@host:/path> -> copy file to remote host
$ systemctl status <service> -> check service status
$ systemctl start <service> -> start service
$ systemctl stop <service> -> stop service
$ systemctl enable <service> -> enable service at boot
$ service <service> restart -> restart service (legacy)