Command Line hands-on


  • Clear history: `ctrl + l`
  • Clear everything left from current cursor position: `ctrl + u`
  • Clear everything right from current cursor position: `ctrl + k`
  • Re-call last input with sudo: `sudo !!`
  • Stop current process: `ctrl + c`
  • Jump to left: `ctrl + a`
  • Jump to right: `ctrl + e`
  • Help: `help cd` / `help dir` (…)
  • Finding Help: `apropos directory` / `apropos search` (…)
  • Define custom startup screen: `sudo nano /etc/motd`
  • Run a script as a background process: `python &`
  • List all running process’s: `ps aux`
  • Kill a running process: `sudo kill 12345`


  • Get the current path: `pwd`
  • Copy to clipboard: `pwd | pbcopy`
  • Paste: `pbpaste`
  • Get the current hostname: `hostname`
  • Get the current users: `users`
  • Get all info about the environment: `env`
  • Show calendar: `cal`
  • Show today’s date: `date`
  • Exit terminal: `exit`


List directory contents: ls

List all directory contents: ll

List all directory contents sorted by time edited: ls -alt

List directory (wildcard matching): ls *.txt

List all files of type: find . -name "*.txt" -print

Go back to the previous directory: cd — or cd ..

Make (empty) directory: mkdir sample-dirname

Remove (empty) directory: rmdir sample-dirname

Remove the directory with all contents: rm -rf sample-dirname/

Remove directory contents and keep directory: rm -rf *

Checkout directory: cd sample-dirname

Browsing directories: pushd sample-dirname / popd / dirs (see


  • Use the `-R` option to change permissions recursively.
  • List: `ps -ef | grep apache | grep -v grep`
  • Change permissions: `chmod 755 index.php`
  • Change owner: `chown root index.php` (`root` is the username)
  • Change group: `chgrp www-data index.php` (`www-data` is the groupname)

WordPress Files/Folder Permissions

Let apache be owner: chown www-data:www-data -R *

Change directory permissions rwxr-xr-x: find . -type d -exec chmod 755 {} \;

Change file permissions rw-r — r — : find . -type f -exec chmod 644 {} \;



Create symlink: ln -s source-dirname destination-dirname

Update symlink: ln -sfn source-dirname destination-dirname

Remove symlink: unlink sample-dirname

  • -s: Create a symbolic link.
  • -f: If the target file already exists, then unlink it.
  • -F: If the target file already exists and is a directory, then remove/overwrite it.
  • -h: If the target file or directory is a symbolic link, do not follow it.
  • -n: Same as -h, for compatibility with other ln implementations.


Make (empty) file: touch sample-filename.txt

Change creation date: touch –t 201401011337 sample-filename.txt

Change modified date: touch –mt 201401011337 sample-filename.txt

Duplicate file: cp sample-filename.txt sample-filename-copy.txt

Copy/Page folder with content: cp -a folder/ new_folder

Move/Rename file: mv current-filename.txt new-filename.txt

Move/Rename the file and prompt before overwriting an existing file: mv -i current-filename.txt new-filename.txt

Remove file: rm sample-filename.txt

View file: less sample-filename.txt / more sample-filename.txt

Write to file (will overwrite existing content): cat > sample-filename.txt (quit with ctrl+d)

Search for a filename (not content!) in the current directory: find sample-filename.txt

Search for a string (not filename!) inside all files in the current directory: ack "string" --php (documentation)

Search for a string inside all files in the current directory and subdirectories: grep -r "string" *

Search and replace within the file: sed -i '' 's/original-text/new-text/g' sample-filename.txt

MD5 hash for files: md5 sample-filename.txt

MD5 hash for folders: tar c folder | md5sum

Encrypt file: openssl enc -aes-256-cbc -e -in sample-filename.txt -out sample-encrypted.txt

Decrypt file: openssl enc -aes-256-cbc -d -in sample-encrypted.txt -out sample-filename.txt


Access via ssh: ssh pi@

Copy file from server to local: scp pi@ ~/Desktop/ (use -r to recursively get complete folder)

Copy file from local to server: scp ~/Desktop/file.png pi@ (use -r to recursively get complete folder)

Copy file from local to server: rsync --exclude=".DS_Store" -vzcrSLh ~/Desktop/file.png pi@

Escape files with spaces in the name like this: /path/to/file\\\ name.png


Show disc space: df -h

Show disc space (inodes): df -i

Show disc space for current directory: du -hs

Current processes (also CPS usage): top or htop

Show running PHP processes: ps aux | grep php

Monitor error log (stream as the file grows): tail error.log -f -n 0


Start application: open -a [name-of-programm] e.g. open -a firefox

Open finder with current folder: open .


Register variable: export TESTING="Sample Text"

Echo variable: echo $TESTING

Unset variable: unset TESTING

Output & Redirects

Write to file: echo "Hello" > hello.txt

Append content from a file to another file: cat file1.txt >> file2.txt

Add the number of lines, words, and characters to file2.txt: cat file1.txt | wc | cat > file2.txt

Sort the content of a file (like cat): sort hello.txt

Save to sorted content to a new file: cat file1.txt | sort > sorted-file1.txt

Sort and remove duplicates and save them to a new file: sort file1.txt | uniq > uniq-file1.txt


Calculate (returns only int): echo $((123/2))


Check site feedback: ping

Show site IP: dig +short

Show A Record: dig a (Returns: 43 IN A aka public-name ttl internet record-type server-address)


Curl headers: curl -I



Installation: brew install tree


Installation: brew install httpie


http GET https://hofmannsven.test --verify=no


Fix OpenSSH Client Bug:

Signing off:

Akshay Prasad




I am a Master's Cybersecurity student in the Netherlands and currently writing my thesis. Also, I have obtained MSc honors in Change Leadership and Management.

Love podcasts or audiobooks? Learn on the go with our new app.

Automate API Request with bash and Curl

Deploying a PHP application to Cloud Foundry (OpenCart)

Chief Diversity Officer Isn’t Enough

The new issue forks functionality is going to be awesome.

Freshman Software Engineering Internship Experience at Stoqo (Part 2)

Code Smell 05 — Comment Abusers

FreePascal REST API’s — Authenticating requests with Basic Auth

Dev Secrets — User testing my first React application: Part One

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Akshay Prasad

Akshay Prasad

I am a Master's Cybersecurity student in the Netherlands and currently writing my thesis. Also, I have obtained MSc honors in Change Leadership and Management.

More from Medium

Useful Linux Commands for Developers

What happens when you type `ls -l *.c` in the shell???

Build Your Own Ubuntu-Linux Distribution

What are real, user, sys in time command output?