From ae2db75f3e5e59290e8838508cb7566d82b9cd8a Mon Sep 17 00:00:00 2001 From: Chris Blackburn Date: Sat, 21 Jan 2012 19:12:38 -0600 Subject: [PATCH] Added dot-env plugin Dot-env is a cross-platform, cascading Zsh environment system for those who work on different hardware and OS environments. See: https://github.com/midwire/.env --- plugins/dot-env/dot-env.plugin.zsh | 53 ++++ plugins/dot-env/global/alias/chmod.sh | 9 + plugins/dot-env/global/alias/git.sh | 12 + plugins/dot-env/global/alias/ls.sh | 14 + plugins/dot-env/global/alias/misc.sh | 5 + plugins/dot-env/global/alias/navigation.sh | 8 + plugins/dot-env/global/alias/rails.sh | 20 ++ plugins/dot-env/global/global_alias.sh | 7 + plugins/dot-env/global/global_env.sh | 27 ++ plugins/dot-env/global/global_functions.sh | 86 ++++++ plugins/dot-env/global/global_path.sh | 31 +++ plugins/dot-env/os/Darwin/alias.sh | 2 + plugins/dot-env/os/Darwin/editor.sh | 22 ++ plugins/dot-env/os/Darwin/functions.sh | 288 +++++++++++++++++++++ plugins/dot-env/os/Darwin/path.sh | 1 + plugins/dot-env/os/Linux/alias.sh | 22 ++ plugins/dot-env/os/Linux/env.sh | 5 + plugins/dot-env/os/Linux/functions.sh | 0 plugins/dot-env/os/SunOS/alias.sh | 4 + plugins/dot-env/os/SunOS/functions.sh | 13 + 20 files changed, 629 insertions(+) create mode 100644 plugins/dot-env/dot-env.plugin.zsh create mode 100644 plugins/dot-env/global/alias/chmod.sh create mode 100644 plugins/dot-env/global/alias/git.sh create mode 100644 plugins/dot-env/global/alias/ls.sh create mode 100644 plugins/dot-env/global/alias/misc.sh create mode 100644 plugins/dot-env/global/alias/navigation.sh create mode 100644 plugins/dot-env/global/alias/rails.sh create mode 100644 plugins/dot-env/global/global_alias.sh create mode 100644 plugins/dot-env/global/global_env.sh create mode 100644 plugins/dot-env/global/global_functions.sh create mode 100644 plugins/dot-env/global/global_path.sh create mode 100644 plugins/dot-env/os/Darwin/alias.sh create mode 100644 plugins/dot-env/os/Darwin/editor.sh create mode 100644 plugins/dot-env/os/Darwin/functions.sh create mode 100644 plugins/dot-env/os/Darwin/path.sh create mode 100644 plugins/dot-env/os/Linux/alias.sh create mode 100644 plugins/dot-env/os/Linux/env.sh create mode 100644 plugins/dot-env/os/Linux/functions.sh create mode 100644 plugins/dot-env/os/SunOS/alias.sh create mode 100644 plugins/dot-env/os/SunOS/functions.sh diff --git a/plugins/dot-env/dot-env.plugin.zsh b/plugins/dot-env/dot-env.plugin.zsh new file mode 100644 index 000000000..cd887ef14 --- /dev/null +++ b/plugins/dot-env/dot-env.plugin.zsh @@ -0,0 +1,53 @@ +# Skip all this for non-interactive shells +[[ -z "$PS1" ]] && return + +export DOT_ENV_PATH="$( cd "$( dirname "${0}" )" && pwd )" + +OS=`uname` +if [[ $OS == 'Darwin' ]]; then + x=1 +elif [[ $OS == 'SunOS' ]]; then + x=1 +elif [[ $OS == 'Linux' ]]; then + x=1 +else + echo "Sorry, no portable environment support for your platform: '$OS'" + exit 1 +fi +OS_DIR=$DOT_ENV_PATH/os/$OS + +# Make sure globals are sourced before OS specifics +if [[ "$SHLVL" == "1" ]]; then + echo "Sourcing Global Environment" +fi +for i in $DOT_ENV_PATH/global/global_*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done + +# Now source OS specifics +if [[ "$SHLVL" == "1" ]]; then + echo "Sourcing $OS Environment" +fi +for i in $OS_DIR/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done + +# Source Host specifics if there are any for the current host +if [[ ! -z "$HOST" ]]; then + HOST_DIR=$DOT_ENV_PATH/host/`hostname` + if [[ "$SHLVL" == "1" ]]; then + echo "Sourcing '$HOST' Environment" + fi + for i in $HOST_DIR/*.sh ; do + if [ -r "$i" ]; then + . $i + fi + done +fi + +unset i + diff --git a/plugins/dot-env/global/alias/chmod.sh b/plugins/dot-env/global/alias/chmod.sh new file mode 100644 index 000000000..14605c753 --- /dev/null +++ b/plugins/dot-env/global/alias/chmod.sh @@ -0,0 +1,9 @@ +# Alias chmod commands +alias 000='chmod 000' +alias 600='chmod 600' +alias 644='chmod 644' +alias 755='chmod 755' +alias mgid='chmod g+s' +alias mx='chmod a+x' +alias rgid='chmod g-s' +alias rx='chmod a-x' diff --git a/plugins/dot-env/global/alias/git.sh b/plugins/dot-env/global/alias/git.sh new file mode 100644 index 000000000..533014aa2 --- /dev/null +++ b/plugins/dot-env/global/alias/git.sh @@ -0,0 +1,12 @@ +# Git aliases +alias add='git add' +alias branch='git branch' +alias co='git checkout' +alias commit='git commit' +alias fetch='git fetch' +alias gadd='git add .' +alias gt='gittower' +alias merge='git merge' +alias pull='git pull' +alias push='git push' +alias st='git status' diff --git a/plugins/dot-env/global/alias/ls.sh b/plugins/dot-env/global/alias/ls.sh new file mode 100644 index 000000000..d6fd514ad --- /dev/null +++ b/plugins/dot-env/global/alias/ls.sh @@ -0,0 +1,14 @@ +# Directory Listing aliases +alias dir='ls -hFx' +alias l.='ls -d .* --color=tty' +alias l='ls -lathF' +alias L='ls -latrhF' +alias la='ls -Al' # show hidden files +alias lc='ls -lcr' # sort by change time +alias lk='ls -lSr' # sort by size +alias ll='ls -lFh' +alias lm='ls -al |more' # pipe through 'more' +alias lo='ls -laSFh' +alias lr='ls -lR' # recursive ls +alias lt='ls -ltr' # sort by date +alias lu='ls -lur' # sort by access time diff --git a/plugins/dot-env/global/alias/misc.sh b/plugins/dot-env/global/alias/misc.sh new file mode 100644 index 000000000..07e8e36a6 --- /dev/null +++ b/plugins/dot-env/global/alias/misc.sh @@ -0,0 +1,5 @@ +# Miscellaneous aliases +alias c='clear' +alias cls='clear' +alias h='history' +alias path='echo $PATH' diff --git a/plugins/dot-env/global/alias/navigation.sh b/plugins/dot-env/global/alias/navigation.sh new file mode 100644 index 000000000..2bda77909 --- /dev/null +++ b/plugins/dot-env/global/alias/navigation.sh @@ -0,0 +1,8 @@ +# ChDir aliases +alias ..='cd ..' +alias ...='cd ../..' +alias 1..='cd ..' +alias 2..='cd ../..' +alias 3..='cd ../../..' +alias 4..='cd ../../../..' +alias 5..='cd ../../../../..' diff --git a/plugins/dot-env/global/alias/rails.sh b/plugins/dot-env/global/alias/rails.sh new file mode 100644 index 000000000..9650533a5 --- /dev/null +++ b/plugins/dot-env/global/alias/rails.sh @@ -0,0 +1,20 @@ +# Rails & Development Aliases +alias a='autotest -rails' +alias b="bundle" +alias be="bundle exec" +alias bi="bundle install --path vendor" +alias bil="bi --local" +alias binit="bi && bundle package && echo 'vendor/ruby' >> .gitignore" +alias bu="bundle update" +alias p='pry' +alias rc='rails c' +alias rd='rails destroy' +alias re='echo $RAILS_ENV' +alias rg='rails g' +alias rp='rails plugin' +alias rs='rails s' +alias sc='./script/console' +alias sd='./script/destroy' +alias sg='./script/generate' +alias sp='./script/plugin' +alias ss='./script/server' diff --git a/plugins/dot-env/global/global_alias.sh b/plugins/dot-env/global/global_alias.sh new file mode 100644 index 000000000..b6a20dfc9 --- /dev/null +++ b/plugins/dot-env/global/global_alias.sh @@ -0,0 +1,7 @@ +# Now source global aliases +for i in $DOT_ENV_PATH/global/alias/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done +unset i diff --git a/plugins/dot-env/global/global_env.sh b/plugins/dot-env/global/global_env.sh new file mode 100644 index 000000000..d15792eb5 --- /dev/null +++ b/plugins/dot-env/global/global_env.sh @@ -0,0 +1,27 @@ +# Some of this is taken from matt.blissett.me.uk +# Thanks Matt! + +# Command History +export HISTIGNORE="&:ls:[bf]g:exit:reset:clear:cd:cd ..:cd.." +export HISTSIZE=25000 +setopt INC_APPEND_HISTORY +setopt HIST_IGNORE_ALL_DUPS +setopt HIST_IGNORE_SPACE +setopt HIST_REDUCE_BLANKS +setopt HIST_VERIFY + +# Say how long a command took, if it took more than 30 seconds +export REPORTTIME=30 + +# Prompts for confirmation after 'rm *' etc +# Helps avoid mistakes like 'rm * o' when 'rm *.o' was intended +setopt RM_STAR_WAIT + +# Background processes aren't killed on exit of shell +setopt AUTO_CONTINUE + +# Watch other user login/out +watch=notme +export LOGCHECK=60 + +export LSCOLORS="gxfxcxdxbxegedabagacad" diff --git a/plugins/dot-env/global/global_functions.sh b/plugins/dot-env/global/global_functions.sh new file mode 100644 index 000000000..5baae3549 --- /dev/null +++ b/plugins/dot-env/global/global_functions.sh @@ -0,0 +1,86 @@ +# Add your public SSH key to a remote host +function add_ssh_key_to_host { + if [[ $# -lt 1 ]]; then + echo_warn "Usage: add_ssh_key_to_host [user@]HOSTNAME" + return + fi + if [[ -r ~/.ssh/id_dsa.pub ]]; then + cat ~/.ssh/id_dsa.pub | ssh $1 "cat >> .ssh/authorized_keys" + elif [[ -r ~/.ssh/id_rsa.pub ]]; then + cat ~/.ssh/id_rsa.pub | ssh $1 "cat >> .ssh/authorized_keys" + fi +} + +# Propagate your entire environment system to a remote host +function propagate_env_to_host { + if [[ $# -lt 1 ]]; then + echo_warn "Usage: propagate_env_to_host [user@]HOSTNAME" + return + fi + + host=$1 + shift 1 + ENVFILE=$HOME/env.tar.gz + PWD=`pwd` + cd $HOME + echo_info "Compressing local environment..." + tar cfvz $ENVFILE .env/ &> /dev/null + echo_info "Copying environment to $host..." + scp $ENVFILE $host: + if [[ $? != 0 ]]; then echo "Copy failed!"; return; fi + echo_info "Installing environment on $host..." + ssh $host "rm -rf ~/.env/ && gunzip < env.tar.gz |tar xfv -" &> /dev/null + echo_warn "Don't forget to add this your .bashrc file:" + echo_warn 'if [[ -n "$PS1" ]]; then' + echo_warn ' [[ -r $HOME/.env/source.sh ]] && . $HOME/.env/source.sh' + echo_warn 'fi' + cd $PWD +} + +# Configure environment settings for your local machine. +function configthis.env { + DIR="$DOT_ENV_PATH/host/$HOSTNAME" + mkdir -p "$DIR" + touch "$DIR/env.sh" + touch "$DIR/functions.sh" + if [[ ! -f "$DIR/alias.sh" ]]; then + echo "# Add your specific aliases here:\n# Example: alias home='cd \$HOME' " >> "$DIR/alias.sh" + fi + if [[ ! -f "$DIR/prompt.sh" ]]; then + echo "# Define your prompt here:\n# Example: PS1=\$BLUE\u@\H\$NO_COLOR " >> "$DIR/prompt.sh" + fi + if [[ ! -f "$DIR/path.sh" ]]; then + echo "# Add paths like this:\n# pathmunge \"/Developer/usr/bin\"" >> "$DIR/path.sh" + fi + cd "$DIR" + echo_info "Edit these files to customize your local environment." + ls -1AtF +} + +# Configure environment settings for a specified HOSTNAME +function confighost.env { + if [[ $# -lt 1 ]]; then + echo_warn "Usage: confighost.env HOSTNAME" + return + fi + host=$1 + shift 1 + DIR="$DOT_ENV_PATH/host/$host" + mkdir -p "$DIR" + touch "$DIR/env.sh" + touch "$DIR/functions.sh" + if [[ ! -f "$DIR/alias.sh" ]]; then + echo "# Add your host specific aliases here:\n# Example: alias home='cd \$HOME' " >> "$DIR/alias.sh" + fi + if [[ ! -f "$DIR/prompt.sh" ]]; then + echo "# Define your prompt here:\n# Example: PS1=\$BLUE\u@\H\$NO_COLOR " >> "$DIR/prompt.sh" + fi + if [[ ! -f "$DIR/path.sh" ]]; then + echo "# Add paths like this:\n# pathmunge \"/Developer/usr/bin\"" >> "$DIR/path.sh" + fi + cd "$DIR" + echo_info "Edit these files to customize your [$host] environment." + echo_info "When you are finished run 'propagate_env_to_host $host'." + ls -1AtF +} + diff --git a/plugins/dot-env/global/global_path.sh b/plugins/dot-env/global/global_path.sh new file mode 100644 index 000000000..1b49b79ec --- /dev/null +++ b/plugins/dot-env/global/global_path.sh @@ -0,0 +1,31 @@ +paths="${DOT_ENV_PATH}/bin +/sbin +/bin +/usr/X11/bin +/usr/local/bin +/usr/sbin +/usr/bin" + +EGREP=`which egrep` +function pathmunge () { + if ! echo $PATH | $EGREP "(^|:)$1($|:)" > /dev/null ; then + if [ -d "$1" ]; then + if [ "$2" = "before" ] ; then + PATH="$1:$PATH" + else + PATH="$PATH:$1" + fi + fi + fi +} + +for p in $paths; do + pathmunge $p +done + +# Prepend path with $HOME/bin +pathmunge "$HOME/bin" before + +PATH=`echo $PATH | sed -e 's/^\://' -e 's/\:\:/:/g'` +unset paths +export PATH diff --git a/plugins/dot-env/os/Darwin/alias.sh b/plugins/dot-env/os/Darwin/alias.sh new file mode 100644 index 000000000..e709fc582 --- /dev/null +++ b/plugins/dot-env/os/Darwin/alias.sh @@ -0,0 +1,2 @@ +# Process Find Aliases +alias pfn='ps -e -o euser,pid,args|grep' diff --git a/plugins/dot-env/os/Darwin/editor.sh b/plugins/dot-env/os/Darwin/editor.sh new file mode 100644 index 000000000..0f6e99ea8 --- /dev/null +++ b/plugins/dot-env/os/Darwin/editor.sh @@ -0,0 +1,22 @@ +# Textmate Editing and Sourcing aliases +# export EDITOR="$HOME/bin/mate" + +# Textmate 2 Editor +# export EDITOR="$HOME/bin/mate2" + +# Sublime Text 2 Editor +export EDITOR="$HOME/bin/subl" + +alias e="$EDITOR ." +alias ea="$EDITOR $DOT_ENV_PATH/host/$HOSTNAME/alias.sh" +alias eas=". $DOT_ENV_PATH/host/$HOSTNAME/alias.sh" +alias eb="$EDITOR $HOME/bin" +alias ee="$EDITOR $DOT_ENV_PATH $HOME/.bashrc" +alias ees=". $DOT_ENV_PATH/source.sh" +alias ef="$EDITOR $DOT_ENV_PATH/host/$HOSTNAME/functions.sh" +alias efs=". $DOT_ENV_PATH/host/$HOSTNAME/functions.sh" +alias eh="$EDITOR $HOME/.ssh" +alias ep="$EDITOR $DOT_ENV_PATH/host/$HOSTNAME/path.sh" +alias eps=". $DOT_ENV_PATH/host/$HOSTNAME/path.sh" +alias m="$EDITOR" +alias vi="$EDITOR" diff --git a/plugins/dot-env/os/Darwin/functions.sh b/plugins/dot-env/os/Darwin/functions.sh new file mode 100644 index 000000000..d7ba48253 --- /dev/null +++ b/plugins/dot-env/os/Darwin/functions.sh @@ -0,0 +1,288 @@ +# cdf: cd's to frontmost window of 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" +} + +# File Finders +# ff: to find a file under the current directory +ff () { /usr/bin/find . -name "$@" ; } +# ffs: to find a file whose name starts with a given string +ffs () { /usr/bin/find . -name "$@"'*' ; } +# ffe: to find a file whose name ends with a given string +ffe () { /usr/bin/find . -name '*'"$@" ; } + +# SPOTLIGHT +# locatemd: to search for a file using Spotlight's metadata +function locatemd { mdfind "kMDItemDisplayName == '$@'wc"; } +# locaterecent: to search for files created since yesterday using Spotlight +# This is an illustration of using $time in a query +# See: http://developer.apple.com/documentation/Carbon/Conceptual/SpotlightQuery/index.html +function locaterecent { mdfind 'kMDItemFSCreationDate >= $time.yesterday'; } + +# list_all_apps: list all applications on the system +list_all_apps() { mdfind 'kMDItemContentTypeTree == "com.apple.application"c' ; } + +# find_larger: find files larger than a certain size (in bytes) +find_larger() { find . -type f -size +${1}c ; } + +#------------ +# Processes: +#------------ +alias pstree='/usr/local/bin/pstree -g 2 -w' + +# 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 () { sudo /usr/sbin/lsof -t -c "$@" ; } + +# to find memory hogs: +alias mem_hogs_top='top -l 1 -o rsize -n 10' +alias mem_hogs_ps='ps wwaxm -o pid,stat,vsize,rss,time,command | head -10' + +# to find CPU hogs +alias cpu_hogs='ps wwaxr -o pid,stat,%cpu,time,command | head -10' + +# continual 'top' listing (every 10 seconds) showing top 15 CPU consumers +alias topforever='top -l 0 -s 10 -o cpu -n 15' + +# recommended 'top' invocation to minimize resources in thie macosxhints article +# http://www.macosxhints.com/article.php?story=20060816123853639 +# exec /usr/bin/top -R -F -s 10 -o rsize + +# diskwho: to show processes reading/writing to disk +alias diskwho='sudo iotop' + +#------------ +# Networking: +#------------ +# lsock: to display open sockets (the -P option to lsof disables port names) +alias lsock='sudo /usr/sbin/lsof -i -P' + +# airportMtu: set the MTU on Airport to be a value that makes SMTP to DSL work +# (I determined the value empirically by using 'ping -s' to the SMTP server) +alias airportMtu='sudo ifconfig en1 mtu 1364' + +# airport: Apple's command-line tool. For status info, use -I, for help use -h +# See: http://www.macosxhints.com/article.php?story=20050715001815547 +alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport' +# Note also the tool that I compiled: airport_info (in my Tools dir) + +# ip_info: to get info on DHCP server, router, DNS server, etc (for en0 or en1) +alias ip_info='ipconfig getpacket en1' + +# browse_bonjour: browse services advertised via Bonjour +# Note: need to supply a "type" argument- e.g. "_http._tcp" +# See http://www.dns-sd.org/ServiceTypes.html for more types +# Optionally supply a "domain" argument +alias browse_bonjour='dns-sd -B' + +# hostname_lookup: interactive debugging mode for lookupd (use tab-completion) +alias hostname_lookup='lookupd -d' + +# debug_http: download a web page and show info on what took time +debug_http () { /usr/bin/curl $@ -o /dev/null -w "dns: %{time_namelookup} connect: %{time_connect} pretransfer: %{time_pretransfer} starttransfer: %{time_starttransfer} total: %{time_total}\n" ; } + +# http_headers: get just the HTTP headers from a web page (and its redirects) +http_headers () { /usr/bin/curl -I -L $@ ; } + +# Note: 'active_net_iface' is my script that echos the active net interface +# pkt_trace: for use in the following aliases +alias pkt_trace='sudo tcpflow -i `active_net_iface` -c' + +# smtp_trace: to show all SMTP packets +alias smtp_trace='pkt_trace port smtp' + +# http_trace: to show all HTTP packets +alias http_trace='pkt_trace port 80' + +# tcp_trace: to show all TCP packets +alias tcp_trace='pkt_trace tcp' + +# udp_trace: to show all UDP packets +alias udp_trace='pkt_trace udp' + +# ip_trace: to show all IP packets +alias ip_trace='pkt_trace ip' + +# can use 'scselect' to find out current network "location" +# can use 'scutil' for other system config stuff + +# to do socket programming in bash, redirect to /dev/tcp/$host/$port +# Example: +osaClient () +{ + exec 5<> /dev/tcp/localhost/4321 + cat $1 >&5 + echo "-- end of file" >&5 + cat <&5 + exec 5>&- +} + + +#------ +# Misc: +#------ +# epochtime: report number of seconds since the Epoch +alias epochtime='date +%s' + +# screensaverdesktop: run a screensaver on the Desktop +alias screensaverdesktop='/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background' + +# consoleapp: launch the Console app from Terminal +alias consoleapp='/Applications/Utilities/Console.app/Contents/MacOS/Console &' + +#--------------------------- +# System operations & info: +#--------------------------- +# repairpermissions +alias repairpermissions='sudo diskutil repairpermissions /' + +# install all software updates from the command line +alias software_update_cmd='COMMAND_LINE_INSTALL=1 export COMMAND_LINE_INSTALL; sudo softwareupdate -i -a' + +# third_party_kexts: to check for non-Apple kernel extensions +alias third_party_kexts='kextstat | grep -v com.apple' + +# show_optical_disk_info - e.g. what type of CD & DVD media is supported +alias show_optical_disk_info='drutil info' + +# remove_disk: spin down unneeded disk +# diskutil eject /dev/disk1s3 +alias nd0='diskutil eject /dev/disk0s3' +alias nd1='diskutil eject /dev/disk1s3' + +# mount_read_write: for use when booted into single-user +alias mount_read_write='/sbin/mount -uw /' + +# herr: shows the most recent lines from the HTTP error log +alias herr='tail /var/log/httpd/error_log' + +# use vsdbutil to show/change the permissions ignoring on external drives +# To ignore ownerships on a volume, do: sudo vsdbutil -d /VolumeName +# To restore ownerships on a volume, do: sudo vsdbutil -a /VolumeName +# To check the status of ownerships, do: sudo vsdbutil -c /VolumeName +alias ignore_permissions='sudo vsdbutil -d' + +# to change the password on anencrypted disk image: +# hdiutil chpass /path/to/the/diskimage + +# netparams: to show values of network parameters in the kernel +alias netparams='sysctl -a | grep net' + +# swapinfo: to display info on swap +alias swapinfo='sysctl vm.swapusage' + +# get info about system via AppleScript +# Note: this is rather slow - it is faster to run 'system_profiler' +# Note: to get computer name use: computer name of (system info) +applescript_info () +{ + info=$( /usr/bin/osascript <<" EOT" + system info + EOT + ) + echo $info +} + +# 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 + +# making a hard-link backup of a directory +# rsync -a --delete --link-dest=$DIR $DIR /backup/path/for/dir + +# starting AFP file sharing +alias startFileSharing='sudo /usr/sbin/AppleFileServer' + +# hidden command line utilities: networksetup & systemsetup +alias networksetup='/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/networksetup' +alias systemsetup='/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/systemsetup' +alias ardkickstart='/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart' + + +#-------- +# Finder: +#--------- +# show hidden files in Finder +alias finderShowHidden='defaults write com.apple.finder ShowAllFiles TRUE' +alias finderHideHidden='defaults write com.apple.finder ShowAllFiles FALSE' + +# finderTurnOffDesktop: turn off display of files on the Desktop +alias finderTurnOffDesktop='defaults write com.apple.finder CreateDesktop FALSE' + +# to stop Finder writing .DS_Store files on network volumes +# defaults write com.apple.desktopservices DSDontWriteNetworkStores true + +# lsregister: utility for looking at the Launch Services database +# e.g. 'lsregister -dump' to display database contents +# use 'lsregister -h' to get usage info +alias lsregister='/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LaunchServices.framework/Support/lsregister' + +# disable and re-enable Dashboard Widgets +alias disableDashboard='defaults write com.apple.dashboard mcx-disabled -bool YES; killall Dock' +alias enableDashboard='defaults delete com.apple.dashboard mcx-disabled; killAll Dock' + +# ql: show a "Quick Look" view of files +ql () { /usr/bin/qlmanage -p "$@" >& /dev/null & } + +# locateql: search using Spotlight and show a "Quick Look" of matching files +locateql () +{ + locatemd "$@" | enquote | xargs qlmanage -p >& /dev/null & +} + +#-------- +# Safari: +#-------- +# cleanup_favicons: clean up Safari favicons +alias cleanup_favicons='find $HOME/Library/Safari/Icons -type f -atime +30 -name "*.cache" -print -delete' + + +#----------------- +# Misc Reminders: +#----------------- + +# To find idle time: look for HIDIdleTime in output of 'ioreg -c IOHIDSystem' + +# to set the delay for drag & drop of text (integer number of milliseconds) +# defaults write -g NSDragAndDropTextDelay -int 100 + +# URL for a man page (example): x-man-page://3/malloc + +# to read a single key press: +alias keypress='read -s -n1 keypress; echo $keypress' + +# to compile an AppleScript file to a resource-fork in the source file: +osacompile_rsrc () { osacompile -x -r scpt:128 -o $1 $1; } + +# alternative to the use of 'basename' for usage statements: ${0##*/} + +# graphical operations, image manipulation: sips + +# numerical user id: 'id -u' +# e.g.: ls -l /private/var/tmp/mds/$(id -u) + diff --git a/plugins/dot-env/os/Darwin/path.sh b/plugins/dot-env/os/Darwin/path.sh new file mode 100644 index 000000000..3bf065fb1 --- /dev/null +++ b/plugins/dot-env/os/Darwin/path.sh @@ -0,0 +1 @@ +pathmunge "/Developer/usr/bin" diff --git a/plugins/dot-env/os/Linux/alias.sh b/plugins/dot-env/os/Linux/alias.sh new file mode 100644 index 000000000..dbcba66c2 --- /dev/null +++ b/plugins/dot-env/os/Linux/alias.sh @@ -0,0 +1,22 @@ +# Vi Editing and Sourcing aliases +alias ea='vi ~/.env/os/Linux/alias.sh' +alias eas='. ~/.env/os/Linux/alias.sh' +alias ees='. ~/.env/source.sh' +alias ef='vi ~/.env/os/Linux/functions.sh' +alias efs='. ~/.env/os/Linux/functions.sh' +alias ep='vi ~/.env/os/Linux/path.sh' +alias eps='. ~/.env/os/Linux/path.sh' +alias eh="vi ~/.env/host/$HOSTNAME/*.sh" +alias ehs=". ~/.env/host/$HOSTNAME/*.sh" + +# Directory Listing aliases +alias dir='ls -hFx' +alias l.='ls -d .* --color=auto' +alias l='ls -lathF --color=auto' +alias L='ls -latrhF' +alias ll='ls -lFh' +alias lo='ls -laSFh' +alias vdir='ls --color=auto --format=long' + +# Process Find Aliases +alias pfn='ps -e -o user,pid,args|grep' diff --git a/plugins/dot-env/os/Linux/env.sh b/plugins/dot-env/os/Linux/env.sh new file mode 100644 index 000000000..eb524363a --- /dev/null +++ b/plugins/dot-env/os/Linux/env.sh @@ -0,0 +1,5 @@ +# Misc +export EDITOR="vi" +export CVSEDITOR="$EDITOR" +export SVN_EDITOR="$EDITOR" +export VISUAL="$EDITOR" diff --git a/plugins/dot-env/os/Linux/functions.sh b/plugins/dot-env/os/Linux/functions.sh new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/dot-env/os/SunOS/alias.sh b/plugins/dot-env/os/SunOS/alias.sh new file mode 100644 index 000000000..7e52595ea --- /dev/null +++ b/plugins/dot-env/os/SunOS/alias.sh @@ -0,0 +1,4 @@ +# Solaris Environment Aliases + +# Editing and Sourcing aliases +alias ees='. ~/.env/source.sh' diff --git a/plugins/dot-env/os/SunOS/functions.sh b/plugins/dot-env/os/SunOS/functions.sh new file mode 100644 index 000000000..24a44fa3e --- /dev/null +++ b/plugins/dot-env/os/SunOS/functions.sh @@ -0,0 +1,13 @@ +function rgrep { + if [[ $# -lt 1 ]]; then + echo "Usage: rgrep PATTERN [PATH]" + return + fi + pattern="$1" + if [[ -z "$2" ]]; then + path=`pwd` + else + path="$2" + fi + find -L "$path"|xargs grep "$pattern" +}