Linux Basics: Common Commands
Quick reference for frequently used Linux CLI commands.
Navigation
$ pwd # print working directory
$ ls # list files
$ ls -la # detailed list incl. hidden
$ cd /path/to # change directory
Files and Directories
$ touch file.txt # create file
$ mkdir mydir # create directory
$ cp src dst # copy file
$ mv old new # move/rename
$ rm file.txt # remove file
$ rm -r mydir # remove directory recursively
Viewing Content
$ cat file.txt # print file
$ less file.txt # paged view (q to quit)
$ head -n 20 file.txt # first 20 lines
$ tail -f app.log # follow log
Search
$ grep -R "pattern" . # recursive search
$ grep -Rni "error" logs/ # case-insensitive with line numbers
$ find . -name "*.go" # find files by name
Permissions
$ chmod +x script.sh # make executable
$ chown user:group file # change owner
$ sudo command # run as root
Networking
$ curl -I https://example.com # http headers
$ ping -c 4 8.8.8.8 # ping 4 times
$ ss -tulpn # listening sockets
System
$ uname -a # kernel/system info
$ df -h # disk usage
$ free -h # memory
$ top # processes (q to quit)
Processes and Ports
$ sudo kill -9 $(sudo lsof -t -i :3000) # kill process using port 3000
$ sudo fuser -k 3000/tcp # kill by port via fuser
Ubuntu Package Management (APT)
$ sudo apt update # refresh package indexes
$ sudo apt upgrade -y # upgrade installed packages
$ sudo apt install nginx -y # install package
$ sudo apt remove PACKAGE -y # remove package
$ apt list --installed | grep PACKAGE # find installed package
Services (systemd)
$ sudo systemctl status nginx # service status
$ sudo systemctl start nginx # start service
$ sudo systemctl stop nginx # stop service
$ sudo systemctl restart nginx # restart service
$ sudo systemctl enable nginx # start on boot
$ sudo journalctl -u nginx -f # follow service logs
Firewall (UFW)
$ sudo ufw status # firewall status
$ sudo ufw allow 22/tcp # allow SSH
$ sudo ufw allow 80,443/tcp # allow HTTP/HTTPS
$ sudo ufw delete allow 3000/tcp # remove rule
$ sudo ufw enable # enable firewall
Users and Permissions
$ sudo adduser deploy # create user
$ sudo usermod -aG sudo deploy # add to sudo group
$ sudo chown -R $USER:$USER /var/www/app # change ownership
$ sudo chmod -R 755 /var/www/app # set permissions
Git Basics
$ git clone https://github.com/org/repo.git # clone repo
$ git checkout -b feature/branch # new branch
$ git add . && git commit -m "msg" # stage + commit
$ git push -u origin feature/branch # push branch
SSH Keys
$ ssh-keygen -t ed25519 -C "your_email@example.com" # generate key
$ eval "$(ssh-agent -s)" # start agent
$ ssh-add ~/.ssh/id_ed25519 # add key to agent
$ ssh-copy-id user@server # copy pub key to server
Node.js and npm
$ node -v && npm -v # verify versions
$ npm init -y # init project
$ npm install # install deps from package.json
$ npm run build # run build script
$ npx serve -s build # serve static build
Python and pip
$ python3 -V && pip3 -V # verify versions
$ python3 -m venv .venv # create virtual env
$ source .venv/bin/activate # activate
$ pip install -r requirements.txt # install deps
Nginx Reverse Proxy (basic)
# /etc/nginx/sites-available/app
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
$ sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
$ sudo nginx -t && sudo systemctl reload nginx
Let's Encrypt (Certbot) for Nginx
$ sudo apt install certbot python3-certbot-nginx -y
$ sudo certbot --nginx -d example.com -d www.example.com
$ sudo systemctl status certbot.timer # auto-renew timer
Docker Basics
$ docker ps # running containers
$ docker compose up -d # start services (compose)
$ docker logs -f SERVICE # follow logs
$ docker exec -it CONTAINER bash # enter container