Because real power users don’t double-click
|
|
9 mesi fa | |
|---|---|---|
| Readme.md | 9 mesi fa | |
| index.html | 9 mesi fa |
Because real power users don’t double-click—they type :)
Escape the tyranny of the GUI one command at a time! This repo is your golden ticket to slick shell tricks, terminal wizardry, and keyboard-fueled productivity. Unplug that mouse and watch your workflow sprint.
STOP DRAG AND DROPPING A FILE, OR CMD/CTRL + C, CMD/CTRL + V A FILE :-1:
Copy readme.txt to the documents directory
$ cp readme.txt documents/
STOP RIGHT CLICKING AND DUPLICATE A FILE :-1:
$ 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.
STOP DRAG AND DROPPING A DIRECTORY, OR CMD/CTRL + C, CMD/CTRL + V A DIRECTORY :-1:
Copy myMusic directory to the myMedia directory
$ cp -a myMusic myMedia/
# or
$ cp -a myMusic/ myMedia/myMusic/
STOP RIGHT CLICKING AND DUPLICATE A DIRECTORY :-1:
$ cp -a myMusic/ myMedia/
# or if `myMedia` folder doesn't exist
$ cp -a myMusic myMedia/
STOP DRAG AND DROPPING A FILE, OR CMD/CTRL + X, CMD/CTRL + V A FILE :-1:
$ mv readme.txt documents/
Always use a trailing slash when moving files, for this reason.
STOP RIGHT CLICKING AND RENAME A FILE :-1:
$ mv readme.txt README.md
STOP DRAG AND DROPPING A DIRECTORY, OR CMD/CTRL + X, CMD/CTRL + V A DIRECTORY :-1:
$ mv myMedia myMusic/
# or
$ mv myMedia/ myMusic/myMedia
STOP RIGHT CLICKING AND RENAME A DIRECTORY :-1:
$ mv myMedia/ myMusic/
STOP DRAG AND DROPPING TO MERGE DIRECTORIES :-1:
$ rsync -a /images/ /images2/ # note: may over-write files with the same name, so be careful!
STOP RIGHT CLICKING AND CREATE A NEW FILE :-1:
$ 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
STOP RIGHT CLICKING AND CREATE A NEW DIRECTORY :-1:
$ mkdir 'untitled folder'
# or
$ mkdir -p 'path/may/not/exist/untitled folder'
STOP RIGHT CLICKING AND SHOW FILE/directory INFO :-1:
$ du -sh node_modules/
STOP RIGHT CLICKING AND SHOW FILE/DIRECTORY INFO :-1:
$ stat -x readme.md # on macOS
$ stat readme.md # on Linux
STOP DOUBLE CLICKING ON A FILE :-1:
$ xdg-open file # on Linux
$ open file # on MacOS
$ start file # on Windows
STOP RIGHT CLICKING AND OPEN WITH :-1:
$ open -a appName file
STOP RIGHT CLICKING AND COMPRESS DIRECTORY :-1:
$ zip -r archive_name.zip folder_to_compress
STOP RIGHT CLICKING AND UNCOMPRESS DIRECTORY :-1:
$ unzip archive_name.zip
STOP RIGHT CLICKING AND UNCOMPRESS DIRECTORY :-1:
$ unar archive_name.zip
$ unar archive_name.7z
$ unar archive_name.rar
$ unar archive_name.ISO
$ unar archive_name.tar.gz
STOP USING WinRAR :-1:
$ zipinfo archive_name.zip
# or
$ unzip -l archive_name.zip
STOP USING WinRAR :-1:
$ lsar -l archive_name.zip
$ lsar -l archive_name.7z
$ lsar -l archive_name.ISO
$ lsar -l archive_name.rar
$ lsar -l archive_name.tar.gz
STOP RIGHT CLICKING AND DELETE A FILE PERMANENTLY :-1:
$ 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.
STOP RIGHT CLICKING AND DELETE A DIRECTORY PERMANENTLY :-1:
$ rm -r my_useless_folder
$ find . -name "*.bak" -type f -delete
IMPORTANT: run find . -name "*.bak" -type f first to see exactly which files you will remove.
STOP OPENING YOUR FINDER OR FILE EXPLORER :-1:
$ ls my_folder # Simple
$ ls -la my_folder # -l: show in list format. -a: show all files, including hidden. -la combines those options.
$ ls -ltrha my_folder # -r: reverse output. -t: sort by time (modified). -h: output human-readable sizes.
STOP OPENING YOUR FINDER OR FILE EXPLORER :-1:
$ 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
STOP USING YOUR FILE EXPLORER TO FIND A FILE :-1:
Find all files modified more than 5 days ago
$ find my_folder -mtime +5
STOP LOOKING UP WHAT THIS MONTH LOOKS LIKE BY CALENDAR WIDGETS :-1:
Display a text calendar
$ cal
Display selected month and year calendar
$ cal 11 2018
STOP USING WEBAPPS TO CALCULATE FUTURE DATES :-1:
What is today's date?
$ date +%m/%d/%Y
What about a week from now?
$ date -d "+7 days" # on Linux
$ date -j -v+7d # on MacOS
STOP USING CALCULATOR WIDGET :-1:
$ bc -l
STOP CTRL + ALT + DELETE and choose the program to kill :-1:
$ killall -9 program_name
STOP OPENING A BROWSER :-1:
$ curl -i rbtreevi.web.app
# curl's -i (--include) option includes HTTP response headers in its output.
STOP DOUBLE CLICKING A FILE :-1:
$ cat apps/settings.py
# if the file is too big to fit on one page, you can use a 'pager' (less) which shows you one page at a time.
$ less apps/settings.py
STOP CMD/CTRL + F IN A FILE :-1:
$ grep -i "Query" file.txt
STOP CMD/CTRL + F IN A DIRECTORY :-1:
$ ripgrep -i "Query"
# brew install ripgrep
STOP USING PREVIEW :-1:
$ imgcat image.png
# Note: requires iTerm2 terminal.
STOP RIGHT CLICKING DISK ICON OR OPENING DISK UTILITY :-1:
$ df -h
STOP OPENING YOUR ACTIVITY MONITOR OR TASK MANAGER :-1:
$ top
if you want some more details:
$ htop
$ glances
# brew install glances
# pip install --user 'glances[all]'
This can be useful when you're patching a server that is accessed via SSH and you don't have a GUI.
# poweroff
$ sudo shutdown -h now
# reboot
$ sudo shutdown -r now
$ df
$ sudo umount /dev/sdb1
# FAT32
$ sudo mkfs.vfat /dev/sdb1
# NTFS
$ sudo mkfs.ntfs /dev/sdb1
# exFAT
$ sudo mkfs.exfat /dev/sdb1
$ sudo fsck /dev/sdb1
STOP CLICKING THE FILES ONE BY ONE :-1:
$ for FILE in *; do echo $FILE; done
STOP USING NETWORK UTILITY
$ nc -vz www.google.com 443
$ nc -vz 1.1.1.1 53
STOP USING NETWORK UTILITY
$ dig www.google.com
STOP USING NETWORK UTILITY AND THE WEBSITE OF DOMAIN REGISTRATION PROVIDERS
$ whois www.google.com
| Hotkey | Description |
|---|---|
| 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 | Lets 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 |
| Ctrl+F | Move cursor forward one character |
| Ctrl+B | Move cursor backward one character |
| Esc+T | Swap the last two words before the cursor |
| Alt+T | Same as Esc + T |
| Alt+F | Move cursor forward one word on the current line |
| Alt+B | Move cursor backward one word on the current line |
| Esc+F | Same as Alt + F |
| Esc+B | Same as Alt + B |
| Alt+. | Paste the last word of the most recently command |
| Tab | Auto-complete files and directory names |
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.