mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-05-08 04:34:00 +02:00
Merge 85962059de into 5667161d49
This commit is contained in:
commit
37172a3e5c
21 changed files with 750 additions and 0 deletions
84
plugins/dot-env/README.md
Normal file
84
plugins/dot-env/README.md
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# dot-env for oh-my-zsh
|
||||||
|
|
||||||
|
Adds 2 main features to oh-my-zsh:
|
||||||
|
|
||||||
|
1. Ability to customize and maintain your oh-my-zsh environments based on global preferences, machine OS type (Darwin, Linux, Solaris), and hostname
|
||||||
|
1. Ability to cascade the customizations in hierarchical fashion from global, to os type, to specific hostname
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Let's say you work on a Macbook Pro with a hostname "John-Smiths-Macbook-Pro", but you also frequently work on the following different remote machines over SSH:
|
||||||
|
|
||||||
|
* rx23 - An Ubuntu 10.04 LTS box
|
||||||
|
* zebra - An Ubuntu 11.04 box
|
||||||
|
* sol-15 - A Solaris box
|
||||||
|
* technozero - A BSD box
|
||||||
|
* express - A CentOS box
|
||||||
|
|
||||||
|
You already know, if you work on different remote machines, when you login the first time none of your aliases, shell functions or environment settings are there. What dot-env does is allow you to maintain a hierarchy of oh-my-zsh environment settings from global, down to specific host and to easily propagate those environments to each remote box from your local machine.
|
||||||
|
|
||||||
|
So we can have a local hierarchy of settings like this:
|
||||||
|
|
||||||
|
root
|
||||||
|
+- .oh-my-zsh
|
||||||
|
+- plugins
|
||||||
|
+- dot-env
|
||||||
|
+- global
|
||||||
|
+- global_aliases.sh
|
||||||
|
+- global_functions.sh
|
||||||
|
+- other_global_files.sh
|
||||||
|
+- os
|
||||||
|
+- Darwin
|
||||||
|
+- darwin_specific_aliases.sh
|
||||||
|
+- darwin_specific_functions.sh
|
||||||
|
+- etc.sh
|
||||||
|
+- Linux
|
||||||
|
+- SunOS
|
||||||
|
+- host
|
||||||
|
+- rx23
|
||||||
|
+- rx23_specific_aliases.sh
|
||||||
|
+- rx23_specific_functions.sh
|
||||||
|
+- etc.sh
|
||||||
|
+- John-Smiths-Macbook-Pro.local
|
||||||
|
+- local_specific_aliases.sh
|
||||||
|
+- local_specific_functions.sh
|
||||||
|
+- local_etc.sh
|
||||||
|
+- etc...
|
||||||
|
|
||||||
|
This hierarchy gets loaded in a cascading fashion as follows:
|
||||||
|
|
||||||
|
- If you login to rx23:
|
||||||
|
1. dot-env-plugin.zsh
|
||||||
|
1. global/*.sh
|
||||||
|
1. os/Linux/*.sh
|
||||||
|
1. host/rx23/*.sh
|
||||||
|
- If you login to John-Smiths-Macbook-Pro
|
||||||
|
1. dot-env-plugin.zsh
|
||||||
|
1. global/*.sh
|
||||||
|
1. os/Darwin/*.sh
|
||||||
|
1. host/John-Smiths-Macbook-Pro.local/*.sh
|
||||||
|
|
||||||
|
There are some helpful functions to maintain things:
|
||||||
|
|
||||||
|
config_omzs_for_this_host # stubs out a hierarchy for the current host that you can edit to taste
|
||||||
|
|
||||||
|
config_omzs_for_host # stubs out a hierarchy for a specified remote hostname
|
||||||
|
|
||||||
|
add_ssh_key_to_host # copy your .ssh/id_rsa.pub or id_dsa.pub key to a remote host
|
||||||
|
|
||||||
|
propagate_omzs_to_host # copies your ~/.oh-my-zsh directory to a remote host
|
||||||
|
|
||||||
|
load_omzs_on_alias # run this on a remote host to setup an alias 'omzs' to load oh-my-zsh
|
||||||
|
|
||||||
|
load_omzs_on_login # run this on a remote host to have it automatically source oh-my-zsh on login
|
||||||
|
|
||||||
|
* `config_omzs_for_this_host` - no arguments, just creates a directory structure for your local machine and stubs out a few .sh files
|
||||||
|
|
||||||
|
* `config_omzs_for_host` - "Usage: config_omzs_for_host HOSTNAME" - creates a directory structure for your remote machine and stubs out a few .sh files
|
||||||
|
|
||||||
|
* `add_ssh_key_to_host` - "Usage: add_ssh_key_to_host [user@]HOSTNAME" - Add your public SSH key to a remote host. You may have to enter your password up to 3 times. After that it will be passwordless if the remote sshd server is setup to allow it
|
||||||
|
|
||||||
|
* The `load_omzs_on_alias` function is nice if others also use that account and you don't want to force them to use your oh-my-zsh settings.
|
||||||
|
|
||||||
|
* `propagate_omzs_to_host` - "Usage: propagate_omzs_to_host [user@]HOSTNAME" - compresses your `~/.oh-my-zsh` directory, uploads it to the specified host account, decompresses it and reminds you to run one of `load_omzs_on_alias` or `load_omzs_on_login`
|
||||||
|
|
||||||
54
plugins/dot-env/dot-env.plugin.zsh
Normal file
54
plugins/dot-env/dot-env.plugin.zsh
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
# 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
|
||||||
|
HOSTNAME=`hostname`
|
||||||
|
if [[ ! -z "$HOSTNAME" ]]; then
|
||||||
|
HOST_DIR=$DOT_ENV_PATH/host/`hostname`
|
||||||
|
if [[ "$SHLVL" == "1" ]]; then
|
||||||
|
echo "Sourcing '$HOSTNAME' Environment"
|
||||||
|
fi
|
||||||
|
for i in $HOST_DIR/*.sh ; do
|
||||||
|
if [ -r "$i" ]; then
|
||||||
|
. $i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset i
|
||||||
|
|
||||||
9
plugins/dot-env/global/alias/chmod.sh
Normal file
9
plugins/dot-env/global/alias/chmod.sh
Normal file
|
|
@ -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'
|
||||||
12
plugins/dot-env/global/alias/git.sh
Normal file
12
plugins/dot-env/global/alias/git.sh
Normal file
|
|
@ -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'
|
||||||
14
plugins/dot-env/global/alias/ls.sh
Normal file
14
plugins/dot-env/global/alias/ls.sh
Normal file
|
|
@ -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
|
||||||
5
plugins/dot-env/global/alias/misc.sh
Normal file
5
plugins/dot-env/global/alias/misc.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Miscellaneous aliases
|
||||||
|
alias c='clear'
|
||||||
|
alias cls='clear'
|
||||||
|
alias h='history'
|
||||||
|
alias path='echo $PATH'
|
||||||
8
plugins/dot-env/global/alias/navigation.sh
Normal file
8
plugins/dot-env/global/alias/navigation.sh
Normal file
|
|
@ -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 ../../../../..'
|
||||||
20
plugins/dot-env/global/alias/rails.sh
Normal file
20
plugins/dot-env/global/alias/rails.sh
Normal file
|
|
@ -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'
|
||||||
7
plugins/dot-env/global/global_alias.sh
Normal file
7
plugins/dot-env/global/global_alias.sh
Normal file
|
|
@ -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
|
||||||
27
plugins/dot-env/global/global_env.sh
Normal file
27
plugins/dot-env/global/global_env.sh
Normal file
|
|
@ -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"
|
||||||
115
plugins/dot-env/global/global_functions.sh
Normal file
115
plugins/dot-env/global/global_functions.sh
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
function load_omzs_on_login {
|
||||||
|
profile_file="$HOME/.zshrc"
|
||||||
|
if [[ -f "${profile_file}" ]] &&
|
||||||
|
! grep '$ZSH/oh-my-zsh.sh' "$profile_file" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo '[[ -r $ZSH/oh-my-zsh.sh ]] && . $ZSH/oh-my-zsh.sh' >> "$profile_file"
|
||||||
|
echo "- oh-my-zsh will now load on login."
|
||||||
|
else
|
||||||
|
echo "- oh-my-zsh is already setup to load on login."
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_omzs_on_alias {
|
||||||
|
profile_file="$HOME/.zshrc"
|
||||||
|
if [[ -f "${profile_file}" ]] &&
|
||||||
|
! grep 'alias omzs=". $ZSH/oh-my-zsh.sh"' "$profile_file" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo 'alias omzs=". $ZSH/oh-my-zsh.sh"' >> "$profile_file"
|
||||||
|
echo "- oh-my-zsh will now load when you execute 'omzs'."
|
||||||
|
else
|
||||||
|
echo "- oh-my-zsh is already setup to load using the 'omzs' alias."
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add your public SSH key to a remote host
|
||||||
|
# You may have to enter your password up to 3 times.
|
||||||
|
# After that it will be passwordless if the remote sshd server is setup to allow it
|
||||||
|
function add_ssh_key_to_host {
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Usage: add_ssh_key_to_host [user@]HOSTNAME"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# First check that the account has an authorized_keys file
|
||||||
|
ssh_dir='~/.ssh'
|
||||||
|
authorized_keys_file='authorized_keys'
|
||||||
|
output=`ssh $1 "ls -1 $ssh_dir" stderr 2> /dev/null`
|
||||||
|
if [[ "$output" =~ "authorized_keys" ]]; then
|
||||||
|
echo "- appending [$1]: $ssh_dir/$authorized_keys_file"
|
||||||
|
else
|
||||||
|
echo "- creating [$1]: $ssh_dir/$authorized_keys_file"
|
||||||
|
output=`ssh $1 "mkdir -p $ssh_dir && touch $ssh_dir/$authorized_keys_file && chmod 700 $ssh_dir && chmod 600 $ssh_dir/$authorized_keys_file"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use DSA key by default, fallback to RSA key
|
||||||
|
if [[ -r ~/.ssh/id_dsa.pub ]]; then
|
||||||
|
echo "- using your DSA key"
|
||||||
|
cat ~/.ssh/id_dsa.pub | ssh $1 "cat >> $ssh_dir/$authorized_keys_file"
|
||||||
|
elif [[ -r ~/.ssh/id_rsa.pub ]]; then
|
||||||
|
echo "- using your RSA key"
|
||||||
|
cat ~/.ssh/id_rsa.pub | ssh $1 "cat >> $ssh_dir/$authorized_keys_file"
|
||||||
|
fi
|
||||||
|
echo "- ssh logins should now be passwordless on [$1]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Propagate your environment system to a remote host
|
||||||
|
function propagate_omzs_to_host {
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Usage: propagate_omzs_to_host [user@]HOSTNAME"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
host=$1
|
||||||
|
OH_MY_ZSH=$HOME/env.tar.gz
|
||||||
|
PWD=`pwd`
|
||||||
|
cd $HOME
|
||||||
|
echo "- compressing local environment..."
|
||||||
|
tar cfvz $OH_MY_ZSH .oh-my-zsh/ &> /dev/null
|
||||||
|
echo "- copying environment to $host..."
|
||||||
|
scp $OH_MY_ZSH $host:
|
||||||
|
if [[ $? != 0 ]]; then echo "> remote copy failed [scp $OH_MY_ZSH $host]!"; return; fi
|
||||||
|
echo "- installing environment on $host..."
|
||||||
|
ssh $host "rm -rf ~/.oh-my-zsh/ && gunzip < env.tar.gz |tar xfv -" &> /dev/null
|
||||||
|
echo "- done. don't forget to run 'load_omzs_on_login' or 'load_omzs_on_alias'"
|
||||||
|
cd $PWD
|
||||||
|
}
|
||||||
|
|
||||||
|
function _stub_new_host_environment {
|
||||||
|
mkdir -p $1
|
||||||
|
touch "$1/env.sh"
|
||||||
|
touch "$1/functions.sh"
|
||||||
|
if [[ ! -f "$1/alias.sh" ]]; then
|
||||||
|
echo "# Add your host specific aliases here:\n# Example: alias home='cd \$HOME' " >> "$1/alias.sh"
|
||||||
|
fi
|
||||||
|
if [[ ! -f "$1/path.sh" ]]; then
|
||||||
|
echo "# Add paths like this:\n# pathmunge \"/Developer/usr/bin\"" >> "$1/path.sh"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configure environment settings for your local machine.
|
||||||
|
function config_omzs_for_this_host {
|
||||||
|
DIR="$DOT_ENV_PATH/host/$HOSTNAME"
|
||||||
|
_stub_new_host_environment $DIR
|
||||||
|
cd "$DIR"
|
||||||
|
echo "- edit these files to customize your local environment."
|
||||||
|
ls -1AtF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configure environment settings for a specified HOSTNAME
|
||||||
|
function config_omzs_for_host {
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo_warn "Usage: config_omzs_for_host HOSTNAME"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
host=$1
|
||||||
|
DIR="$DOT_ENV_PATH/host/$host"
|
||||||
|
_stub_new_host_environment $DIR
|
||||||
|
cd "$DIR"
|
||||||
|
echo "- edit these files to customize your [$host] environment."
|
||||||
|
echo "- when you are finished run 'propagate_omzs_to_host $host'."
|
||||||
|
ls -1AtF
|
||||||
|
}
|
||||||
|
|
||||||
38
plugins/dot-env/global/global_path.sh
Normal file
38
plugins/dot-env/global/global_path.sh
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
paths=(
|
||||||
|
/bin
|
||||||
|
/sbin
|
||||||
|
/usr/local/bin
|
||||||
|
/usr/local/sbin
|
||||||
|
/usr/bin
|
||||||
|
/usr/sbin
|
||||||
|
/usr/X11/bin
|
||||||
|
)
|
||||||
|
|
||||||
|
EGREP=`which egrep`
|
||||||
|
function pathmunge () {
|
||||||
|
# If it exists then remove it so we can shuffle it to the end or beginning of the PATH
|
||||||
|
if echo $PATH | $EGREP "(^|:)$1($|:)" > /dev/null ; then
|
||||||
|
safe_param=$(printf "%s\n" "$1" | sed 's/[][\.*^$(){}?+|/]/\\&/g')
|
||||||
|
PATH=`echo $PATH | sed -Ee "s/(^|:)$safe_param($|:)/:/"`
|
||||||
|
fi
|
||||||
|
# add the path in the apropriate location
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
if [ "$2" = "before" ] ; then
|
||||||
|
PATH="$1:$PATH"
|
||||||
|
else
|
||||||
|
PATH="$PATH:$1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
for p in $paths; do
|
||||||
|
pathmunge $p
|
||||||
|
done
|
||||||
|
|
||||||
|
# Prepend path with $HOME/bin
|
||||||
|
pathmunge "$HOME/bin" before
|
||||||
|
|
||||||
|
# Remove : at the beginning and duplicate ::
|
||||||
|
PATH=`echo $PATH | sed -e 's/^\://' -e 's/\:\:/:/g'`
|
||||||
|
unset paths
|
||||||
|
export PATH
|
||||||
2
plugins/dot-env/os/Darwin/alias.sh
Normal file
2
plugins/dot-env/os/Darwin/alias.sh
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Process Find Aliases
|
||||||
|
alias pfn='ps -e -o euser,pid,args|grep'
|
||||||
22
plugins/dot-env/os/Darwin/editor.sh
Normal file
22
plugins/dot-env/os/Darwin/editor.sh
Normal file
|
|
@ -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 -n"
|
||||||
|
|
||||||
|
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/.zshrc"
|
||||||
|
alias ees=". $DOT_ENV_PATH/dot-env.plugin.zsh"
|
||||||
|
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"
|
||||||
288
plugins/dot-env/os/Darwin/functions.sh
Normal file
288
plugins/dot-env/os/Darwin/functions.sh
Normal file
|
|
@ -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)
|
||||||
|
|
||||||
1
plugins/dot-env/os/Darwin/path.sh
Normal file
1
plugins/dot-env/os/Darwin/path.sh
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
pathmunge "/Developer/usr/bin"
|
||||||
22
plugins/dot-env/os/Linux/alias.sh
Normal file
22
plugins/dot-env/os/Linux/alias.sh
Normal file
|
|
@ -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'
|
||||||
5
plugins/dot-env/os/Linux/env.sh
Normal file
5
plugins/dot-env/os/Linux/env.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Misc
|
||||||
|
export EDITOR="vi"
|
||||||
|
export CVSEDITOR="$EDITOR"
|
||||||
|
export SVN_EDITOR="$EDITOR"
|
||||||
|
export VISUAL="$EDITOR"
|
||||||
0
plugins/dot-env/os/Linux/functions.sh
Normal file
0
plugins/dot-env/os/Linux/functions.sh
Normal file
4
plugins/dot-env/os/SunOS/alias.sh
Normal file
4
plugins/dot-env/os/SunOS/alias.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Solaris Environment Aliases
|
||||||
|
|
||||||
|
# Editing and Sourcing aliases
|
||||||
|
alias ees='. ~/.env/source.sh'
|
||||||
13
plugins/dot-env/os/SunOS/functions.sh
Normal file
13
plugins/dot-env/os/SunOS/functions.sh
Normal file
|
|
@ -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"
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue