Update: the latest version of this content can be found at https://notes.zander.wtf/command-line-tools
Disclaimer: If you don't use fish-shell, some of the packages might not work. There will be alternatives for each of them for your own shell.
Keyboard shortcuts
ctrl-r
- Search previously used commandsctrl-t
- Invoke FZF fuzzy file finder (see below)ctrl-l
- Clear the terminal screenctrl-k
- Clears the terminal screen but no-scroll back. Basically wipes thectrl-w
- Cut one word backwards using white space as delimiteresc-t
- Swap the last two words before the cursor
Commands
cal
Show a calendar
❯ calFebruary 2020Su Mo Tu We Th Fr Sa12 3 4 5 6 7 89 10 11 12 13 14 1516 17 18 19 20 21 2223 24 25 26 27 28 29
date
Show the date
❯ dateSat 7 Sep 2019 09:22:28 BST
tree
Show directory contents as a tree
❯ tree -L 1.├── README.md├── example├── gatsby-theme-code-notes├── node_modules├── package.json└── yarn.lock
List global packages
# with yarn❯ yarn global list# with npm❯ npm -g ls --depth=0
Flush DNS cache
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Custom packages
Autojump
https://github.com/wting/autojump
autojump is a faster way to navigate your filesystem. It works by maintaining a database of the directories you use the most from the command line.
❯ j {your search term}
exa
A modern version of ls
❯ exa -l❯ exa -T -L 2 # like tree
FZF
https://github.com/junegunn/fzf
Fuzzy find files. Use ctrl+t
to access it
serve
Static file serving and directory listing
emma
https://github.com/maticzav/emma-cli
Search for npm packages. Run emma to initialise the search, then enter your search criteria
ibrew
https://github.com/mischah/ibrew
Interactive search CLI for Homebrew
Run ibrew
to initialise the search, then enter your search criteria
yalc
https://github.com/whitecolor/yalc
Work with yarn/npm packages locally like a boss.
hub
# clone one of your GitHub repos❯ hub clone dotfiles# Same as → git clone git://github.com/YOUR_USER/dotfiles.git# clone another project's repo❯ hub clone github/hub# → git clone git://github.com/github/hub.git# open the current project's issues page❯ hub browse -- issues# → open https://github.com/github/hub/issues# open another project's wiki❯ hub browse mojombo/jekyll wiki
List the current repo's PRs
# this is an aliasalias prs 'hub pr list -L 20 -b develop --format="%t%n - Branch: [%H]%n - %U%n - %l%n%n"'# e.g.❯ prs
Create a branch and switch to it
# FYI This is a fish shell functionfunction branchgit branch {$argv} && git checkout {$argv}end# e.g.❯ branch feature/WL-88-hello
standup
https://github.com/kamranahmedse/git-standup
Shows a list of commits for the past 24 hours
❯ standup/Users/zander/code/fairfx/fx-holiday-money-app5315f033 - build(multi): HM-925 Improve perf for a couple of pages (16 hours ago) <Zander Martineau>4b41c048 - index on feature/HM-925-improve-performance:1b854d84 fix(ci): AWS-99 Remove builds/deployments associated (#845) (17 hours ago) <Zander Martineau>
cross-port-killer
https://github.com/milewski/cross-port-killer
Kill a process running on a particular port
❯ kill-port 9001
doctoc
https://github.com/thlorenz/doctoc
Generated markdown table of contents
❯ doctoc README.md --github
fx
https://github.com/antonmedv/fx
Command-line JSON processing tool
❯ fx package.json
jq
https://stedolan.github.io/jq/
jq is like sed
for JSON data - you can use it to slice and filter and
map and transform structured data with the same ease that sed
, awk
,
grep
and friends let you play with text.
# use jq to extract just the first commit from a repos list❯ curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'
npq
https://github.com/lirantal/npq
Safely* install packages with npm or yarn by auditing them as part of your install process
# with yarn, set an alias like so:alias npq="NPQ_PKG_MGR=yarn npq-hero"# then❯ npq add express# with npm❯ npq install express
youtube-dl
❯ youtube-dl d2qfa3tlgH8
https://blog.balthazar-rouberol.com/text-processing-in-the-shell