Command Line
How to send GET and POST requests with curl
Send GET and POST API requests with curl, including JSON bodies, form data, auth headers and bearer tokens, and how to inspect the response.
Essential Linux command line basics for developers
A practical primer on Linux command line basics: navigating, working with files, pipes and redirection, permissions, and where to go next.
How to search file contents with grep
Search inside files with grep — recursive search, case-insensitive matching, line numbers, context, regex and piping output from other commands into grep.
The complete guide to the curl command
A complete guide to the curl command: downloads, following redirects, headers, methods, data, auth, verbose output, and uploading files.
Getting started with the AWS CLI
Install the AWS CLI v2 on macOS and Linux, run aws configure, set up named profiles, and try real S3 and EC2 commands from your terminal.
How to check your Ubuntu version from the command line
A quick guide to checking which Ubuntu release and kernel you're running, using lsb_release, /etc/os-release, hostnamectl and uname.
How to copy files over SSH with scp
Copy files and directories between your machine and a remote server over SSH using scp, including custom ports, key files and host-to-host transfers.
How to create and extract tar archives in Linux
Create, compress, list and extract tar archives in Linux — including .tar.gz files, extracting to a directory and pulling out a single file from an archive.
How to run a command on a remote server over SSH
Run one-off commands on a remote server over SSH without an interactive session, including quoting, sudo, capturing output and running local scripts remotely.
How to connect to a server with the ssh command
Connect to a remote server with the ssh command, including custom ports, key files, the host key prompt, SSH config aliases, and verbose debugging.
How to make a script executable with chmod +x
Fix the Permission denied error when running a shell script by adding the execute bit with chmod +x, plus the shebang line and chmod 755.
How to change file permissions with chmod
Change Linux and macOS file permissions with chmod using symbolic and numeric modes, recursive changes, and why 777 is rarely the answer.
How to find your IP address from the Linux command line
Find your local private IP with ip addr or hostname -I, and your public IP with curl, plus a note on the older ifconfig command.
How to sync files and directories with rsync
Learn how to sync files and directories with rsync, including syncing over SSH, dry runs, deleting, excluding, and the trailing-slash gotcha.
How to install the Xcode Command Line Tools on macOS
Install the Xcode Command Line Tools on macOS to get git, clang, make and more, plus how to verify, reset, and reinstall them.
How to find files in Linux with the find command
Locate files in Linux with the find command by name, type, size and modification time, and run actions on the results with -exec or -delete.
How to update Ubuntu from the command line
Learn the difference between apt update and apt upgrade, how to install all updates, clean up old packages, and upgrade to a new Ubuntu release.
How to kill the process running on a port in Linux
Find the PID listening on a port with lsof, ss or netstat, then kill it cleanly, with one-liner shortcuts using kill, fuser and lsof.
How to generate SSH keys with ssh-keygen
Generate SSH keys with ssh-keygen, choose ed25519 over RSA, copy your public key to a server, load it into ssh-agent, and add it to GitHub.
How to forward ports with SSH tunneling
Forward ports over SSH with local, remote, and dynamic SOCKS tunnels, including reaching a remote MySQL database safely from your laptop.