-
Star
(1,601)
You must be signed in to star a gist -
Fork
(1,247)
You must be signed in to fork a gist
-
-
Save natelandau/10654137 to your computer and use it in GitHub Desktop.
| # --------------------------------------------------------------------------- | |
| # | |
| # Description: This file holds all my BASH configurations and aliases | |
| # | |
| # Sections: | |
| # 1. Environment Configuration | |
| # 2. Make Terminal Better (remapping defaults and adding functionality) | |
| # 3. File and Folder Management | |
| # 4. Searching | |
| # 5. Process Management | |
| # 6. Networking | |
| # 7. System Operations & Information | |
| # 8. Web Development | |
| # 9. Reminders & Notes | |
| # | |
| # --------------------------------------------------------------------------- | |
| # ------------------------------- | |
| # 1. ENVIRONMENT CONFIGURATION | |
| # ------------------------------- | |
| # Change Prompt | |
| # ------------------------------------------------------------ | |
| export PS1="________________________________________________________________________________\n| \w @ \h (\u) \n| => " | |
| export PS2="| => " | |
| # Set Paths | |
| # ------------------------------------------------------------ | |
| export PATH="$PATH:/usr/local/bin/" | |
| export PATH="/usr/local/git/bin:/sw/bin/:/usr/local/bin:/usr/local/:/usr/local/sbin:/usr/local/mysql/bin:$PATH" | |
| # Set Default Editor (change 'Nano' to the editor of your choice) | |
| # ------------------------------------------------------------ | |
| export EDITOR=/usr/bin/nano | |
| # Set default blocksize for ls, df, du | |
| # from this: http://hints.macworld.com/comment.php?mode=view&cid=24491 | |
| # ------------------------------------------------------------ | |
| export BLOCKSIZE=1k | |
| # Add color to terminal | |
| # (this is all commented out as I use Mac Terminal Profiles) | |
| # from http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/ | |
| # ------------------------------------------------------------ | |
| # export CLICOLOR=1 | |
| # export LSCOLORS=ExFxBxDxCxegedabagacad | |
| # ----------------------------- | |
| # 2. MAKE TERMINAL BETTER | |
| # ----------------------------- | |
| alias cp='cp -iv' # Preferred 'cp' implementation | |
| alias mv='mv -iv' # Preferred 'mv' implementation | |
| alias mkdir='mkdir -pv' # Preferred 'mkdir' implementation | |
| alias ll='ls -FGlAhp' # Preferred 'ls' implementation | |
| alias less='less -FSRXc' # Preferred 'less' implementation | |
| cd() { builtin cd "$@"; ll; } # Always list directory contents upon 'cd' | |
| alias cd..='cd ../' # Go back 1 directory level (for fast typers) | |
| alias ..='cd ../' # Go back 1 directory level | |
| alias ...='cd ../../' # Go back 2 directory levels | |
| alias .3='cd ../../../' # Go back 3 directory levels | |
| alias .4='cd ../../../../' # Go back 4 directory levels | |
| alias .5='cd ../../../../../' # Go back 5 directory levels | |
| alias .6='cd ../../../../../../' # Go back 6 directory levels | |
| alias edit='subl' # edit: Opens any file in sublime editor | |
| alias f='open -a Finder ./' # f: Opens current directory in MacOS Finder | |
| alias ~="cd ~" # ~: Go Home | |
| alias c='clear' # c: Clear terminal display | |
| alias which='type -all' # which: Find executables | |
| alias path='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths | |
| alias show_options='shopt' # Show_options: display bash options settings | |
| alias fix_stty='stty sane' # fix_stty: Restore terminal settings when screwed up | |
| alias cic='set completion-ignore-case On' # cic: Make tab-completion case-insensitive | |
| mcd () { mkdir -p "$1" && cd "$1"; } # mcd: Makes new Dir and jumps inside | |
| trash () { command mv "$@" ~/.Trash ; } # trash: Moves a file to the MacOS trash | |
| ql () { qlmanage -p "$*" >& /dev/null; } # ql: Opens any file in MacOS Quicklook Preview | |
| alias DT='tee ~/Desktop/terminalOut.txt' # DT: Pipe content to file on MacOS Desktop | |
| # lr: Full Recursive Directory Listing | |
| # ------------------------------------------ | |
| alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''s/-/|/'\'' | less' | |
| # mans: Search manpage given in agument '1' for term given in argument '2' (case insensitive) | |
| # displays paginated result with colored search terms and two lines surrounding each hit. Example: mans mplayer codec | |
| # -------------------------------------------------------------------- | |
| mans () { | |
| man $1 | grep -iC2 --color=always $2 | less | |
| } | |
| # showa: to remind yourself of an alias (given some part of it) | |
| # ------------------------------------------------------------ | |
| showa () { /usr/bin/grep --color=always -i -a1 $@ ~/Library/init/bash/aliases.bash | grep -v '^\s*$' | less -FSRXc ; } | |
| # ------------------------------- | |
| # 3. FILE AND FOLDER MANAGEMENT | |
| # ------------------------------- | |
| zipf () { zip -r "$1".zip "$1" ; } # zipf: To create a ZIP archive of a folder | |
| alias numFiles='echo $(ls -1 | wc -l)' # numFiles: Count of non-hidden files in current dir | |
| alias make1mb='mkfile 1m ./1MB.dat' # make1mb: Creates a file of 1mb size (all zeros) | |
| alias make5mb='mkfile 5m ./5MB.dat' # make5mb: Creates a file of 5mb size (all zeros) | |
| alias make10mb='mkfile 10m ./10MB.dat' # make10mb: Creates a file of 10mb size (all zeros) | |
| # cdf: 'Cd's to frontmost window of MacOS Finder | |
| # ------------------------------------------------------ | |
| cdf () { | |
| currFolderPath=$( /usr/bin/osascript <<EOT | |
| tell application "Finder" | |
| try | |
| set currFolder to (folder of the front window as alias) | |
| on error | |
| set currFolder to (path to desktop folder as alias) | |
| end try | |
| POSIX path of currFolder | |
| end tell | |
| EOT | |
| ) | |
| echo "cd to \"$currFolderPath\"" | |
| cd "$currFolderPath" | |
| } | |
| # extract: Extract most know archives with one command | |
| # --------------------------------------------------------- | |
| extract () { | |
| if [ -f $1 ] ; then | |
| case $1 in | |
| *.tar.bz2) tar xjf $1 ;; | |
| *.tar.gz) tar xzf $1 ;; | |
| *.bz2) bunzip2 $1 ;; | |
| *.rar) unrar e $1 ;; | |
| *.gz) gunzip $1 ;; | |
| *.tar) tar xf $1 ;; | |
| *.tbz2) tar xjf $1 ;; | |
| *.tgz) tar xzf $1 ;; | |
| *.zip) unzip $1 ;; | |
| *.Z) uncompress $1 ;; | |
| *.7z) 7z x $1 ;; | |
| *) echo "'$1' cannot be extracted via extract()" ;; | |
| esac | |
| else | |
| echo "'$1' is not a valid file" | |
| fi | |
| } | |
| # --------------------------- | |
| # 4. SEARCHING | |
| # --------------------------- | |
| alias qfind="find . -name " # qfind: Quickly search for file | |
| ff () { /usr/bin/find . -name "$@" ; } # ff: Find file under the current directory | |
| ffs () { /usr/bin/find . -name "$@"'*' ; } # ffs: Find file whose name starts with a given string | |
| ffe () { /usr/bin/find . -name '*'"$@" ; } # ffe: Find file whose name ends with a given string | |
| # spotlight: Search for a file using MacOS Spotlight's metadata | |
| # ----------------------------------------------------------- | |
| spotlight () { mdfind "kMDItemDisplayName == '$@'wc"; } | |
| # --------------------------- | |
| # 5. PROCESS MANAGEMENT | |
| # --------------------------- | |
| # findPid: find out the pid of a specified process | |
| # ----------------------------------------------------- | |
| # Note that the command name can be specified via a regex | |
| # E.g. findPid '/d$/' finds pids of all processes with names ending in 'd' | |
| # Without the 'sudo' it will only find processes of the current user | |
| # ----------------------------------------------------- | |
| findPid () { lsof -t -c "$@" ; } | |
| # memHogsTop, memHogsPs: Find memory hogs | |
| # ----------------------------------------------------- | |
| alias memHogsTop='top -l 1 -o rsize | head -20' | |
| alias memHogsPs='ps wwaxm -o pid,stat,vsize,rss,time,command | head -10' | |
| # cpuHogs: Find CPU hogs | |
| # ----------------------------------------------------- | |
| alias cpu_hogs='ps wwaxr -o pid,stat,%cpu,time,command | head -10' | |
| # topForever: Continual 'top' listing (every 10 seconds) | |
| # ----------------------------------------------------- | |
| alias topForever='top -l 9999999 -s 10 -o cpu' | |
| # ttop: Recommended 'top' invocation to minimize resources | |
| # ------------------------------------------------------------ | |
| # Taken from this macosxhints article | |
| # http://www.macosxhints.com/article.php?story=20060816123853639 | |
| # ------------------------------------------------------------ | |
| alias ttop="top -R -F -s 10 -o rsize" | |
| # my_ps: List processes owned by my user: | |
| # ------------------------------------------------------------ | |
| my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,start,time,bsdtime,command ; } | |
| # --------------------------- | |
| # 6. NETWORKING | |
| # --------------------------- | |
| alias myip='curl ip.appspot.com' # myip: Public facing IP Address | |
| alias netCons='lsof -i' # netCons: Show all open TCP/IP sockets | |
| alias flushDNS='dscacheutil -flushcache' # flushDNS: Flush out the DNS Cache | |
| alias lsock='sudo /usr/sbin/lsof -i -P' # lsock: Display open sockets | |
| alias lsockU='sudo /usr/sbin/lsof -nP | grep UDP' # lsockU: Display only open UDP sockets | |
| alias lsockT='sudo /usr/sbin/lsof -nP | grep TCP' # lsockT: Display only open TCP sockets | |
| alias ipInfo0='ipconfig getpacket en0' # ipInfo0: Get info on connections for en0 | |
| alias ipInfo1='ipconfig getpacket en1' # ipInfo1: Get info on connections for en1 | |
| alias openPorts='sudo lsof -i | grep LISTEN' # openPorts: All listening connections | |
| alias showBlocked='sudo ipfw list' # showBlocked: All ipfw rules inc/ blocked IPs | |
| # ii: display useful host related informaton | |
| # ------------------------------------------------------------------- | |
| ii() { | |
| echo -e "\nYou are logged on ${RED}$HOST" | |
| echo -e "\nAdditionnal information:$NC " ; uname -a | |
| echo -e "\n${RED}Users logged on:$NC " ; w -h | |
| echo -e "\n${RED}Current date :$NC " ; date | |
| echo -e "\n${RED}Machine stats :$NC " ; uptime | |
| echo -e "\n${RED}Current network location :$NC " ; scselect | |
| echo -e "\n${RED}Public facing IP Address :$NC " ;myip | |
| #echo -e "\n${RED}DNS Configuration:$NC " ; scutil --dns | |
| echo | |
| } | |
| # --------------------------------------- | |
| # 7. SYSTEMS OPERATIONS & INFORMATION | |
| # --------------------------------------- | |
| alias mountReadWrite='/sbin/mount -uw /' # mountReadWrite: For use when booted into single-user | |
| # cleanupDS: Recursively delete .DS_Store files | |
| # ------------------------------------------------------------------- | |
| alias cleanupDS="find . -type f -name '*.DS_Store' -ls -delete" | |
| # finderShowHidden: Show hidden files in Finder | |
| # finderHideHidden: Hide hidden files in Finder | |
| # ------------------------------------------------------------------- | |
| alias finderShowHidden='defaults write com.apple.finder ShowAllFiles TRUE' | |
| alias finderHideHidden='defaults write com.apple.finder ShowAllFiles FALSE' | |
| # cleanupLS: Clean up LaunchServices to remove duplicates in the "Open With" menu | |
| # ----------------------------------------------------------------------------------- | |
| alias cleanupLS="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder" | |
| # screensaverDesktop: Run a screensaver on the Desktop | |
| # ----------------------------------------------------------------------------------- | |
| alias screensaverDesktop='/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background' | |
| # --------------------------------------- | |
| # 8. WEB DEVELOPMENT | |
| # --------------------------------------- | |
| alias apacheEdit='sudo edit /etc/httpd/httpd.conf' # apacheEdit: Edit httpd.conf | |
| alias apacheRestart='sudo apachectl graceful' # apacheRestart: Restart Apache | |
| alias editHosts='sudo edit /etc/hosts' # editHosts: Edit /etc/hosts file | |
| alias herr='tail /var/log/httpd/error_log' # herr: Tails HTTP error logs | |
| alias apacheLogs="less +F /var/log/apache2/error_log" # Apachelogs: Shows apache error logs | |
| httpHeaders () { /usr/bin/curl -I -L $@ ; } # httpHeaders: Grabs headers from web page | |
| # httpDebug: Download a web page and show info on what took time | |
| # ------------------------------------------------------------------- | |
| httpDebug () { /usr/bin/curl $@ -o /dev/null -w "dns: %{time_namelookup} connect: %{time_connect} pretransfer: %{time_pretransfer} starttransfer: %{time_starttransfer} total: %{time_total}\n" ; } | |
| # --------------------------------------- | |
| # 9. REMINDERS & NOTES | |
| # --------------------------------------- | |
| # remove_disk: spin down unneeded disk | |
| # --------------------------------------- | |
| # diskutil eject /dev/disk1s3 | |
| # to change the password on an encrypted disk image: | |
| # --------------------------------------- | |
| # hdiutil chpass /path/to/the/diskimage | |
| # to mount a read-only disk image as read-write: | |
| # --------------------------------------- | |
| # hdiutil attach example.dmg -shadow /tmp/example.shadow -noverify | |
| # mounting a removable drive (of type msdos or hfs) | |
| # --------------------------------------- | |
| # mkdir /Volumes/Foo | |
| # ls /dev/disk* to find out the device to use in the mount command) | |
| # mount -t msdos /dev/disk1s1 /Volumes/Foo | |
| # mount -t hfs /dev/disk1s1 /Volumes/Foo | |
| # to create a file of a given size: /usr/sbin/mkfile or /usr/bin/hdiutil | |
| # --------------------------------------- | |
| # e.g.: mkfile 10m 10MB.dat | |
| # e.g.: hdiutil create -size 10m 10MB.dmg | |
| # the above create files that are almost all zeros - if random bytes are desired | |
| # then use: ~/Dev/Perl/randBytes 1048576 > 10MB.dat |
in extract()
use case $(echo "$1" | tr "[A-Z]" "[a-z]") in instead of case $1 in to also extract files with uppercase extensions
Hi,
This is really great. I get an error from brew, realised that there are couple of / on the end of some of the PATH variables.
Should it read as the default?:
# Set Paths
# ------------------------------------------------------------
export PATH="$PATH:/usr/local/bin"
export PATH="/usr/local/git/bin:/sw/bin:/usr/local/bin:/usr/local:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
Fantastic, I learned a few things and borrowed a few things.
Awesome!
As per https://askubuntu.com/a/22043 I've added alias sudo='sudo ' to my version as I was running into issues with aliases like editHosts.
great job, thanks
I love it! Thanks!
oh boy, you did a great job, already implemented 1/2 of the ones listed here :)
Great job. Thanks a lot
So, I whipped up a little shell script to sort of streamline creating feature branches. I threw this into my bash profile and run it with an alias fb. feature-brancher.sh
Curious, do any of you have shell scripts to improve productivity? If so, please share a link.
Running
brew doctorcomplains:@natelandau Could you please correct the file?