You Don't Need GUI
Graphical user interfaces are super friendly to computer users. They were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs).
However, they often require more resources, are less powerful and hard to automate via scripting.
As a computer expert, we want to be more efficient and do our jobs better. We know that command words may not be easily discoverable or mnemonic, so we try to list some common tasks that you might be tempted to do in GUI.
Quick links
- copy a file
- duplicate a file
- copy a directory
- duplicate a directory
- move a file
- rename a file
- move a directory
- rename a directory
- merge directories
- create a new file
- create a new directory
- show file/directory size
- show file/directory info
- open a file with the default program
- zip a directory
- unzip a directory
- peek files in a zip file
- remove a file
- remove a directory
- list directory contents
- tree view a directory and its subdirectories
- find a stale file
- show a calendar
- find a future date
- use a calculator
- force quit a program
- check server response
- view content of a file
- search for a text
- view an image
- show disk size
- check performance of your computer
- Quick tips
- Hotkeys
- I can't remember these cryptic commands
copy a file
STOP DRAG AND DROPING A FILE, OR CMD/CTRL + C, CMD/CTRL + V A FILE
Copy readme.txt
to the documents
directory
$ cp readme.txt documents/
duplicate a file
STOP RIGHT CLICKING AND DUPLICATE A FILE
$ cp readme.txt readme.bak.txt
More advanced:
$ cp readme{,.bak}.txt
# Note: learn how the {} works with touch foo{1,2,3}.txt and see what happens.
copy a directory
STOP DRAG AND DROPING A DIRECTORY, OR CMD/CTRL + C, CMD/CTRL + V A DIRECTORY
Copy myMusic
directory to the myMedia
directory
$ cp -a myMusic myMedia/
# or
$ cp -a myMusic/ myMedia/myMusic/
duplicate a directory
STOP RIGHT CLICKING AND DUPLICATE A DIRECTORY
$ cp -a myMusic/ myMedia/
# or if `myMedia` folder doesn't exist
$ cp -a myMusic myMedia/
move a file
STOP DRAG AND DROPING A FILE, OR CMD/CTRL + X, CMD/CTRL + V A FILE
$ mv readme.txt documents/
Always use a trailing slash when moving files, for this reason.
rename a file
STOP RIGHT CLICKING AND RENAME A FILE
$ mv readme.txt README.md
move a directory
STOP DRAG AND DROPING A DIRECTORY, OR CMD/CTRL + X, CMD/CTRL + V A DIRECTORY
$ mv myMedia myMusic/
# or
$ mv myMedia/ myMusic/myMedia
rename a directory
STOP RIGHT CLICKING AND RENAME A DIRECTORY
$ mv myMedia/ myMusic/
merge directories
STOP DRAG AND DROPING TO MERGE DIRECTORIES
$ rsync -a /images/ /images2/ # note: may over-write files with the same name, so be careful!
create a new file
STOP RIGHT CLICKING AND CREATE A NEW FILE
$ touch 'new file' # updates the file's access and modification timestamp if it already exists
# or
$ > 'new file' # note: erases the content if it already exists
create a new directory
STOP RIGHT CLICKING AND CREATE A NEW DIRECTORY
$ mkdir 'untitled folder'
# or
$ mkdir -p 'path/may/not/exist/untitled\ folder'
show file/directory size
STOP RIGHT CLICKING AND SHOW FILE/directory INFO
$ du -sh node_modules/
show file/directory info
STOP RIGHT CLICKING AND SHOW FILE/DIRECTORY INFO
$ stat -x readme.md # on macOS
$ stat readme.md # on Linux
open a file with the default program
STOP DOUBLE CLICKING ON A FILE
$ xdg-open file # on Linux
$ open file # on MacOS
zip a directory
STOP RIGHT CLICKING AND COMPRESS DIRECTORY
$ zip -r archive_name.zip folder_to_compress
unzip a directory
STOP RIGHT CLICKING AND UNCOMPRESS DIRECTORY
$ unzip archive_name.zip
peek files in a zip file
STOP USING WinRAR
$ zipinfo archive_name.zip
# or
$ unzip -l archive_name.zip
remove a file
STOP RIGHT CLICKING AND DELETE A FILE PERMANENTLY
$ rm my_useless_file
IMPORTANT: The rm command deletes my_useless_file permanently, which is equivalent to move my_useless_file to Recycle Bin and hit Empty Recycle Bin.
remove a directory
STOP RIGHT CLICKING AND DELETE A DIRECTORY PERMANENTLY
$ rm -r my_useless_folder
list directory contents
STOP OPENING YOUR FINDER OR FILE EXPLORER
$ ls my_folder # Simple
$ ls -la my_folder # -l: show in list format. -a: show all files, including hidden. -la combines those options.
$ ls -alrth my_folder # -r: reverse output. -t: sort by time (modified). -h: output human-readable sizes.
tree view a directory and its subdirectories
STOP OPENING YOUR FINDER OR FILE EXPLORER
$ tree # on Linux
$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' # on MacOS
# Note: install homebrew (https://brew.sh) to be able to use (some) Linux utilities such as tree.
# brew install tree
find a stale file
STOP USING YOUR FILE EXPLORER TO FIND A FILE
Find all files modified more than 5 days ago
$ findΒ my_folder -mtime +5
show a calendar
STOP LOOKING UP WHAT THIS MONTH LOOKS LIKE BY CALENDAR WIDGETS
Display a text calendar
$ cal
Display selected month and year calendar
$ cal 11 2018
find a future date
STOP USING WEBAPPS TO CALCULATE FUTURE DATES
What is todays date?
$ date +%m/%d/%Y
What about a week from now?
$ date -d "+7 days" # on Linux
$ date -j -v+7d # on MacOS
use a calculator
STOP USING CALCULATOR WIDGET
$ bc
force quit a program
STOP CTRL + ALT + DELETE and choose the program to kill
$ killall program_name
check server response
STOP OPENING A BROWSER
curl -i umair.surge.sh
# curl's -i (--include) option includes HTTP response headers in its output.
view content of a file
STOP DOUBLE CLICKING A FILE
$ cat apps/settings.py
# if the file is too big to fit on one page, you can send it to a 'pager' (less) which shows you one page at a time.
$ cat apps/settings.py | less
search for a text
STOP CMD/CTRL + F IN A DIRECTORY
$ grep -i "Query" file.txt
view an image
STOP USING PREVIEW
$ imgcat image.png
# Note: requires iTerm2 terminal.
show disk size
STOP RIGHT CLICKING DISK ICON OR OPENING DISK UTILITY
$ df -h
check performance of your computer
STOP OPENING YOUR ACTIVITY MONITOR OR TASK MANAGER
$ top
Quick tips
Hotkeys
Ctrl + A Go to the beginning of the line you are currently typing on
Ctrl + E Go to the end of the line you are currently typing on
Ctrl + L Clears the Screen, similar to the clear command
Ctrl + U Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H Same as backspace
Ctrl + R Letβs you search through previously used commands
Ctrl + C Kill whatever you are running
Ctrl + D Exit the current shell
Ctrl + Z Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W Delete the word before the cursor
Ctrl + K Clear the line after the cursor
Ctrl + T Swap the last two characters before the cursor
Esc + T Swap the last two words before the cursor
Alt + F Move cursor forward one word on the current line
Alt + B Move cursor backward one word on the current line
Tab Auto-complete files and directory names
I can't remember these cryptic commands
You can always google or man
the commands you are not familiar with. Or, checkout tldr, a collection of simplified and community-driven man pages.