/bash-cheatsheet

:scroll: bash cheatsheet

Primary LanguageJavaScript

bash cheatsheet

Specific to OS X only

TOC

kill gpg-agent

$ killall gpg-agent
# or
$ gpgconf --kill gpg-agent

make shell scripts executable

$ chmod +x script.sh

static http server

# python2
$ python -m SimpleHTTPServer 8000

# python3
$ python3 -m http.server

# alias
alias http="python -m SimpleHTTPServer 8000"

nginx

# check current config and print config path
$ nginx -t

# update the config
$ open /usr/local/etc/nginx/

# run
$ nginx

# stop
$ nginx -s stop

# restart
$ nginx -s reload

modify files using sed

# substitute and print to stdout
$ sed -e 's/one/first/g' test-file.txt

# substitute in place with backup
$ sed -i '.backup' -e 's/one/first/g' test-file.txt

# substitute in place without backup
$ sed -i '' -e 's/another/next/g' test-file.txt

sed example

count lines of code for each individual file

# count lines of code for jsx files in current folder
$ wc -l `find . -type f -name "*.jsx" | sort -n`

# count lines of code for jsx and css files in current folder
$ wc -l `find . -type f -name "*.jsx" -or -name "*.css" | sort -n`

# count lines of code for tsx files in src folder
$ wc -l `find ./src -type f -name "*.tsx" | sort -n`

# count tsx or ts files, excluding *.test.ts and .test.tsx, sort by LOC
$ wc -l `find ./src -type f '(' -name "*.tsx" -or -name "*.ts" ')' -not '(' -name "*.test.ts" -or -name ".test.tsx" ')'` | sort -n

# alias
alias wct=$'wc -l `find ./src -type f -name "*.tsx" | sort -n`'

count example

Git

remove old merged git branches that are no longer in remote

# prune remote-tracking branches no longer on remote
$ git fetch --prune

# print local branches that are not found on remote
$ git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}'

# remove local branches that are not found on remote
$ git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d

#alias
alias gfp="git fetch --prune"
alias gcz="git cz"
alias grm=$'git branch -r | awk \'{print $1}\' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk \'{print $1}\' | xargs git branch -d'

Revert to remote origin master

$ git checkout origin/master filename

Sort files by git modified date

https://serverfault.com/questions/401437/how-to-retrieve-the-last-modification-date-of-all-files-in-a-git-repository#comment1118135_401450

$ git ls-tree -r --name-only HEAD | while read filename; do   echo "$(git log -1 --format="%ai" -- $filename) $filename"; done | sort

Android emulator

https://stackoverflow.com/a/48729278/1472186

# list devices with identifiers
$ ~/Library/Android/sdk/emulator/emulator -list-avds

# run in background
$ ~/Library/Android/sdk/emulator/emulator -avd Pixel_2_API_28 &

$ alias android="~/Library/Android/sdk/emulator/emulator -avd Pixel_2_API_28 &"

iOS Simulator

# list devices with identifiers
$ instruments -s devices

# start Simulator
$ open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/

$ alias ios="open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/"

List open ports

$ sudo lsof -iTCP -sTCP:LISTEN -n -P
$ sudo lsof -i -P -n | grep LISTEN

List tar/zip file contents

$ tar -tvf archive.tar

Remove node_modules

# check
$ find . -name "node_modules" -type d -prune | xargs du -chs

# remove
$ find . -name "node_modules" -type d -prune -exec rm -rf '{}' +

Remove .DS_Store

$ find . -name ".DS_Store" -delete

Spotlight indexing

# turn off
$ sudo mdutil -a -i off

# turn on
$ sudo mdutil -a -i on

virtualenv

$ virtualenv venv
$ source venv/bin/activate
$ deactivate

Other cheatsheets

License

MIT