From f6950f9f7bcff2b58aff995b4fddde438d1c1a1b Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Wed, 29 Jun 2011 11:33:39 -0500 Subject: [PATCH 01/33] Add gem completion --- completion/available/gem.completion.bash | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 completion/available/gem.completion.bash diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash new file mode 100644 index 00000000..7231eef0 --- /dev/null +++ b/completion/available/gem.completion.bash @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Completion for gem + +if [ -z "$REMOTE_GEMS" ] +then + REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') ) +fi + +if [ -z "$LOCAL_GEMS" ] +then + LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') ) +fi + +_installcomp() { + local cur=${COMP_WORDS[COMP_CWORD]} + COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) ) +} + +_uninstallcomp() { + local cur=${COMP_WORDS[COMP_CWORD]} + COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) ) +} + +_gem() { + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD-1]} + case $prev in + install) + _installcomp + return 0 + ;; + uninstall) + _uninstallcomp + return 0 + ;; + esac + local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which) + COMPREPLY=( $(compgen -W "${commands[*]}" -- $cur) ) +} + +complete -F _gem gem From 1a969458858a5ad892ab9a6b36592cf50348d162 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Thu, 30 Jun 2011 08:30:46 -0500 Subject: [PATCH 02/33] Fix grammar on error message --- plugins/available/osx.plugin.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/available/osx.plugin.bash b/plugins/available/osx.plugin.bash index e6271bd7..76e4b9a5 100644 --- a/plugins/available/osx.plugin.bash +++ b/plugins/available/osx.plugin.bash @@ -17,7 +17,7 @@ EOF function dock-switch() { if [ $(uname) = "Darwin" ]; then - + if [ $1 = 3d ] ; then defaults write com.apple.dock no-glass -boolean NO killall Dock @@ -28,10 +28,10 @@ function dock-switch() { else echo "usage:" - echo "dock-switch 2d" + echo "dock-switch 2d" echo "dock-switch 3d." fi else - echo "sorry. you're currently not using os x" + echo "Sorry, this only works on Mac OS X" fi } From c5b5a1982f335e34bc20f644f496aa1664a0bf98 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 30 Jun 2011 08:15:26 -0700 Subject: [PATCH 03/33] Edited README.md for punctuation, phrasing, tone, and clarity. --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 933b333c..f5b9201b 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,53 @@ # Bash it -'Bash it' is a mash up of my own bash commands and scripts, other bash stuff I have found and a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :) +**Bash it** is a mash up of my own bash commands and scripts, other bash stuff I have found. -Includes some autocompletion tools, theming support, aliases, custom functions, a few stolen pieces from Steve Losh, and more. +(And a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :) + +Includes autocompletion, themes, aliases, custom functions, a few stolen pieces from Steve Losh, and more. ## Install -Check a clone of this repo: +1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git bash_it` +2. Run `install.sh` (it automatically backs up your `~/.bash_profile`) +3. Move `~/.bash_it/template/bash_profile.template.bash` into its place. (Edit this template file in order to customize bash-it.) - git clone http://github.com/revans/bash-it.git bash_it - -Then run the `install.sh` file, it will backup your `~/.bash_profile` -file and move the template one into it's place (the template file is at -`~/.bash_it/template/bash_profile.template.bash`). Be sure to edit this -template file in order to customize bash-it. - -The install script will also prompt -you asking if you use [Jekyll](https://github.com/mojombo/jekyll). This -is to set up the `.jekyllconfig` file, the file that stores the -information needed to use the Jekyll plugin supplied with bash it. +**NOTE:** +The install script will also prompt you asking if you use [Jekyll](https://github.com/mojombo/jekyll). +This is to set up the `.jekyllconfig` file, which stores info necessary to use the Jekyll plugin. ## Help Screens - bash-it (will show all the help commands) - aliases-help - rails-help - git-help - plugins-help +``` +bash-it (will show all the help commands) +aliases-help +rails-help +git-help +plugins-help +``` ## Your Custom scripts, aliases, and functions -For custom scripts, and aliases, you can create the following files and they will be ignored by the git repo: +For custom scripts, and aliases, just create the following files (they'll be ignored by the git repo): * `aliases/custom.aliases.bash` * `lib/custom.bash` * `plugins/custom.plugins.bash` -and anything in the custom directory will be ignored with the exception of `custom/example.bash`. +Anything in the custom directory will be ignored, with the exception of `custom/example.bash`. ## Themes -There are a few bash it themes, but I'm hoping the community will jump in and create their own custom prompts and share their creations with everyone else by submitting a pull request to me (revans). +There are a few bash it themes. If you've created your own custom prompts, I'd love it if you shared with everyone else! Just submit a Pull Request to me (revans). ## Help out -I think all of us have our own custom scripts that we have added over time and so following in the footsteps of oh-my-zsh, bash it was created as a framework for those who choose to use bash as their shell. As a community, I'm excited to see what everyone else has in their custom toolbox and am hoping that they'll share it with everyone by submitting a pull request to bash it. +I think everyone has their own custom scripts accumulated over time. And so, following in the footsteps of oh-my-zsh, bash it is a framework for easily customizing your bash shell. Everyone's got a custom toolbox, so let's start making them even better, **as a community!** -So, if you have contributions to bash it, please send me a pull request and I'll take a look at it and commit it to the repo as long as it looks good. If you do change an existing command, please give an explanation as to why. That will help a lot when I merge your changes in. Thanks, and happing bashing! +Send me a pull request and I'll merge it as long as it looks good. If you change an existing command, please give an explanation why. That will help a lot when I merge your changes in. + +Thanks, and happing bashing! ## Contributors From a85080c8b0c2acff0190b856b62eff1db0521d58 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Thu, 30 Jun 2011 11:28:32 -0500 Subject: [PATCH 04/33] Fix extra step in install section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f5b9201b..3a529e3a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Includes autocompletion, themes, aliases, custom functions, a few stolen pieces 1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git bash_it` 2. Run `install.sh` (it automatically backs up your `~/.bash_profile`) -3. Move `~/.bash_it/template/bash_profile.template.bash` into its place. (Edit this template file in order to customize bash-it.) +3. Edit your `~/.bash_profile` file in order to customize bash-it. **NOTE:** The install script will also prompt you asking if you use [Jekyll](https://github.com/mojombo/jekyll). From 450a1d1090a5fdc7afc66ad752f87471d2a004d6 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sat, 2 Jul 2011 21:44:47 -0500 Subject: [PATCH 05/33] Added JEKYLL_EDITOR variable This will replace the default $EDITOR used in the Jekyll plugin --- template/jekyllconfig.template.bash | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/template/jekyllconfig.template.bash b/template/jekyllconfig.template.bash index e4705181..291bf85e 100644 --- a/template/jekyllconfig.template.bash +++ b/template/jekyllconfig.template.bash @@ -15,3 +15,7 @@ REMOTES="user@host_1:path user@host_2:path" # Same rules as above. Can be HTML, textile, or markdown MARKUPS="markdown textile" + +# If you want to use a different editor for Jekyll, change the value of this variable + +JEKYLL_EDITOR="$EDITOR" From e1a299eafba5b6777c2f8234062fc67c8c8790f4 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sat, 2 Jul 2011 21:44:56 -0500 Subject: [PATCH 06/33] Implement JEKYLL_EDITOR variable --- plugins/available/jekyll.plugins.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/available/jekyll.plugins.bash b/plugins/available/jekyll.plugins.bash index 8efdd11f..eff85ce3 100644 --- a/plugins/available/jekyll.plugins.bash +++ b/plugins/available/jekyll.plugins.bash @@ -41,11 +41,11 @@ editpost() { done less $TMPFILE read -p "Number of post to edit: " POST_TO_EDIT - if [ -z "$EDITOR" ] + if [ -z "$JEKYLL_EDITOR" ] then nano "${POSTS[$POST_TO_EDIT]}" else - "$EDITOR" "${POSTS[$POST_TO_EDIT]}" + "$JEKYLL_EDITOR" "${POSTS[$POST_TO_EDIT]}" fi } @@ -253,7 +253,7 @@ newpost() { # Open the file in your favorite editor - "$EDITOR" $FNAME + "$JEKYLL_EDITOR" $FNAME } function testsite() { From 3a2b525ac65fd06470cb3fed6efdac70b03d4e35 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Thu, 7 Jul 2011 11:04:27 -0500 Subject: [PATCH 07/33] Added prevcurl function Downloads a file and opens it in Preivew.app --- plugins/available/osx.plugin.bash | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/available/osx.plugin.bash b/plugins/available/osx.plugin.bash index 76e4b9a5..cf553777 100644 --- a/plugins/available/osx.plugin.bash +++ b/plugins/available/osx.plugin.bash @@ -35,3 +35,14 @@ function dock-switch() { echo "Sorry, this only works on Mac OS X" fi } + +# Download a file and open it in Preview + +function prevcurl() { + if [ ! $(uname) = "Darwin" ] + then + echo "This function only works with Mac OS X" + return 1 + fi + curl "$*" | open -fa "Preview" +} From 86aa9ff36a3f5e9ab3fcdf79b2da23d1b10cae75 Mon Sep 17 00:00:00 2001 From: Ryan Kanno Date: Thu, 7 Jul 2011 22:13:29 -1000 Subject: [PATCH 08/33] ip address can be enabled/disabled (default is enabled) --- themes/hawaii50/hawaii50.theme.bash | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/themes/hawaii50/hawaii50.theme.bash b/themes/hawaii50/hawaii50.theme.bash index 21c0b413..1b0a5998 100644 --- a/themes/hawaii50/hawaii50.theme.bash +++ b/themes/hawaii50/hawaii50.theme.bash @@ -75,6 +75,9 @@ MAX_GIT_HEX_LENGTH=5 # IP address IP_SEPARATOR=', ' +# Show IP +IP_ENABLED=1 + # FUNCS ======================================================================= function ip { @@ -82,6 +85,13 @@ function ip { echo -e "$(ips | sed -e :a -e '$!N;s/\n/${IP_SEPARATOR}/;ta' | sed -e 's/127\.0\.0\.1\${IP_SEPARATOR}//g'), ${myip}" } +# Displays ip prompt +function ip_prompt_info() { + if [[ $IP_ENABLED == 1 ]]; then + echo -e " ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR})" + fi +} + # Displays virtual info prompt (virtualenv/rvm) function virtual_prompt_info() { local virtual_env_info=$(virtualenv_prompt) @@ -176,9 +186,9 @@ function prompt() { [ $UID -eq "0" ] && UC=$SUPERUSER_COLOR if [[ $VIRTUAL_PROMPT_ENABLED == 1 ]]; then - PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR}) in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info)${reset_color} \$ " + PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h$(ip_prompt_info) ${DEFAULT_COLOR}in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info)${reset_color} \$ " else - PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR}) in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(scm_prompt_info)${reset_color} \$ " + PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h$(ip_prompt_info) ${DEFAULT_COLOR}in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(scm_prompt_info)${reset_color} \$ " fi PS2='> ' PS4='+ ' From 3cd70de071ed3b5bf875e8c51759f218d97e802d Mon Sep 17 00:00:00 2001 From: Travis Swicegood Date: Sat, 9 Jul 2011 17:38:37 -0500 Subject: [PATCH 09/33] adds a tmuxinator plugin --- plugins/available/tmuxinator.plugin.bash | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 plugins/available/tmuxinator.plugin.bash diff --git a/plugins/available/tmuxinator.plugin.bash b/plugins/available/tmuxinator.plugin.bash new file mode 100644 index 00000000..d8236fc5 --- /dev/null +++ b/plugins/available/tmuxinator.plugin.bash @@ -0,0 +1,3 @@ +#!/bin/bash + +[[ -s $HOME/.tmuxinator/scripts/tmuxinator ]] && . $HOME/.tmuxinator/scripts/tmuxinator From caa1bba1298a7dd35b5844e4b18ddb538bd52b7d Mon Sep 17 00:00:00 2001 From: Ryan Kanno Date: Sat, 9 Jul 2011 14:04:08 -1000 Subject: [PATCH 10/33] Moved IP and virtualenv variables to top of file --- themes/hawaii50/hawaii50.theme.bash | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/themes/hawaii50/hawaii50.theme.bash b/themes/hawaii50/hawaii50.theme.bash index 1b0a5998..93cef469 100644 --- a/themes/hawaii50/hawaii50.theme.bash +++ b/themes/hawaii50/hawaii50.theme.bash @@ -30,6 +30,15 @@ # specific like getting ip, etc. # +# IMPORTANT THINGS TO CHANGE ================================================== + +# Show IP in prompt +# One thing to be weary about if you have slow Internets +IP_ENABLED=1 + +# virtual prompts +VIRTUAL_PROMPT_ENABLED=1 + # COLORS ====================================================================== ORANGE='\[\e[0;33m\]' @@ -60,9 +69,6 @@ RVM_THEME_PROMPT_SUFFIX='' VIRTUALENV_THEME_PROMPT_PREFIX='' VIRTUALENV_THEME_PROMPT_SUFFIX='' -# virtual prompts -VIRTUAL_PROMPT_ENABLED=1 - VIRTUAL_THEME_PROMPT_PREFIX=' using ' VIRTUAL_THEME_PROMPT_SUFFIX='' @@ -75,9 +81,6 @@ MAX_GIT_HEX_LENGTH=5 # IP address IP_SEPARATOR=', ' -# Show IP -IP_ENABLED=1 - # FUNCS ======================================================================= function ip { From 8c7b8f26c8ae77a41946c254d9a29f3f542a6d91 Mon Sep 17 00:00:00 2001 From: Antono Vasiljev Date: Sun, 17 Jul 2011 06:52:27 +0300 Subject: [PATCH 11/33] Node version manager as plugin --- plugins/available/nvm.plugin.bash | 251 ++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 plugins/available/nvm.plugin.bash diff --git a/plugins/available/nvm.plugin.bash b/plugins/available/nvm.plugin.bash new file mode 100644 index 00000000..a02722e1 --- /dev/null +++ b/plugins/available/nvm.plugin.bash @@ -0,0 +1,251 @@ +# Node Version Manager +# Implemented as a bash function +# To use source this file from your bash profile +# +# Implemented by Tim Caswell +# with much bash help from Matthew Ranney +# https://github.com/creationix/nvm + +export NVM_DIR=$HOME/.nvm + +if [ ! -d "$NVM_DIR" ]; then + mkdir $NVM_DIR +fi + +# Auto detect the NVM_DIR +if [ ! -d "$NVM_DIR" ]; then + export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}); pwd) +fi + +# Emulate curl with wget, if necessary +if [ ! `which curl` ]; then + if [ `which wget` ]; then + curl() { + ARGS="$* " + ARGS=${ARGS/-s /-q } + ARGS=${ARGS/-\# /} + ARGS=${ARGS/-C - /-c } + ARGS=${ARGS/-o /-O } + + wget $ARGS + } + else + NOCURL='nocurl' + curl() { echo 'Need curl or wget to proceed.' >&2; } + fi +fi + +# Expand a version using the version cache +nvm_version() +{ + PATTERN=$1 + VERSION='' + if [ -f "$NVM_DIR/alias/$PATTERN" ]; then + nvm_version `cat $NVM_DIR/alias/$PATTERN` + return + fi + # If it looks like an explicit version, don't do anything funny + if [[ "$PATTERN" == v*.*.* ]]; then + VERSION="$PATTERN" + fi + # The default version is the current one + if [ ! "$PATTERN" -o "$PATTERN" = 'current' ]; then + VERSION=`node -v 2>/dev/null` + fi + if [ "$PATTERN" = 'stable' ]; then + PATTERN='*.*[02468].' + fi + if [ "$PATTERN" = 'latest' ]; then + PATTERN='*.*.' + fi + if [ "$PATTERN" = 'all' ]; then + (cd $NVM_DIR; \ls -dG v* 2>/dev/null || echo "N/A") + return + fi + if [ ! "$VERSION" ]; then + VERSION=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1` + fi + if [ ! "$VERSION" ]; then + echo "N/A" + return 13 + elif [ -e "$NVM_DIR/$VERSION" ]; then + (cd $NVM_DIR; \ls -dG "$VERSION") + else + echo "$VERSION" + fi +} + +nvm() +{ + if [ $# -lt 1 ]; then + nvm help + return + fi + case $1 in + "help" ) + echo + echo "Node Version Manager" + echo + echo "Usage:" + echo " nvm help Show this message" + echo " nvm install Download and install a " + echo " nvm use Modify PATH to use " + echo " nvm ls List versions (installed versions are blue)" + echo " nvm ls List versions matching a given description" + echo " nvm deactivate Undo effects of NVM on current shell" + echo " nvm sync Update the local cache of available versions" + echo " nvm alias [] Show all aliases beginning with " + echo " nvm alias Set an alias named pointing to " + echo + echo "Example:" + echo " nvm install v0.4.0 Install a specific version number" + echo " nvm use stable Use the stable release" + echo " nvm install latest Install the latest, possibly unstable version" + echo " nvm use 0.2 Use the latest available 0.2.x release" + echo " nvm alias default v0.4.0 Set v0.4.0 as the default" + echo + ;; + "install" ) + if [ $# -ne 2 ]; then + nvm help + return + fi + [ "$NOCURL" ] && curl && return + VERSION=`nvm_version $2` + if ( + mkdir -p "$NVM_DIR/src" && \ + cd "$NVM_DIR/src" && \ + curl -C - -# "http://nodejs.org/dist/node-$VERSION.tar.gz" -o "node-$VERSION.tar.gz" && \ + tar -xzf "node-$VERSION.tar.gz" && \ + cd "node-$VERSION" && \ + ./configure --prefix="$NVM_DIR/$VERSION" && \ + make && \ + rm -f "$NVM_DIR/$VERSION" 2>/dev/null && \ + make install + ) + then + nvm use $VERSION + if ! which npm ; then + echo "Installing npm..." + # TODO: if node version 0.2.x add npm_install=0.2.19 before sh + curl http://npmjs.org/install.sh | clean=yes sh + fi + else + echo "nvm: install $VERSION failed!" + fi + ;; + "deactivate" ) + if [[ $PATH == *$NVM_DIR/*/bin* ]]; then + export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:} + hash -r + echo "$NVM_DIR/*/bin removed from \$PATH" + else + echo "Could not find $NVM_DIR/*/bin in \$PATH" + fi + if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then + export MANPATH=${MANPATH%$NVM_DIR/*/share/man*}${MANPATH#*$NVM_DIR/*/share/man:} + echo "$NVM_DIR/*/share/man removed from \$MANPATH" + else + echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" + fi + ;; + "use" ) + if [ $# -ne 2 ]; then + nvm help + return + fi + VERSION=`nvm_version $2` + if [ ! -d $NVM_DIR/$VERSION ]; then + echo "$VERSION version is not installed yet" + return; + fi + if [[ $PATH == *$NVM_DIR/*/bin* ]]; then + PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$VERSION/bin${PATH#*$NVM_DIR/*/bin} + else + PATH="$NVM_DIR/$VERSION/bin:$PATH" + fi + if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then + MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$VERSION/share/man${MANPATH#*$NVM_DIR/*/share/man} + else + MANPATH="$NVM_DIR/$VERSION/share/man:$MANPATH" + fi + export PATH + hash -r + export MANPATH + export NVM_PATH="$NVM_DIR/$VERSION/lib/node" + export NVM_BIN="$NVM_DIR/$VERSION/bin" + echo "Now using node $VERSION" + ;; + "ls" ) + if [ $# -ne 1 ]; then + nvm_version $2 + return + fi + nvm_version all + for P in {stable,latest,current}; do + echo -ne "$P: \t"; nvm_version $P + done + nvm alias + echo "# use 'nvm sync' to update from nodejs.org" + ;; + "alias" ) + mkdir -p $NVM_DIR/alias + if [ $# -le 2 ]; then + (cd $NVM_DIR/alias && for ALIAS in `\ls $2* 2>/dev/null`; do + DEST=`cat $ALIAS` + VERSION=`nvm_version $DEST` + if [ "$DEST" = "$VERSION" ]; then + echo "$ALIAS -> $DEST" + else + echo "$ALIAS -> $DEST (-> $VERSION)" + fi + done) + return + fi + if [ ! "$3" ]; then + rm -f $NVM_DIR/alias/$2 + echo "$2 -> *poof*" + return + fi + mkdir -p $NVM_DIR/alias + VERSION=`nvm_version $3` + if [ $? -ne 0 ]; then + echo "! WARNING: Version '$3' does not exist." >&2 + fi + echo $3 > "$NVM_DIR/alias/$2" + if [ ! "$3" = "$VERSION" ]; then + echo "$2 -> $3 (-> $VERSION)" + echo "! WARNING: Moving target. Aliases to implicit versions may change without warning." + else + echo "$2 -> $3" + fi + ;; + "sync" ) + [ "$NOCURL" ] && curl && return + LATEST=`nvm_version latest` + STABLE=`nvm_version stable` + (cd $NVM_DIR + rm -f v* 2>/dev/null + printf "# syncing with nodejs.org..." + for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`; do + touch $VER + done + echo " done." + ) + [ "$STABLE" = `nvm_version stable` ] || echo "NEW stable: `nvm_version stable`" + [ "$LATEST" = `nvm_version latest` ] || echo "NEW latest: `nvm_version latest`" + ;; + "clear-cache" ) + rm -f $NVM_DIR/v* 2>/dev/null + echo "Cache cleared." + ;; + "version" ) + nvm_version $2 + ;; + * ) + nvm help + ;; + esac +} + +nvm ls default >/dev/null 2>&1 && nvm use default >/dev/null From 35df3d6a579f53579d072013771d967742363419 Mon Sep 17 00:00:00 2001 From: Antono Vasiljev Date: Sun, 17 Jul 2011 07:17:56 +0300 Subject: [PATCH 12/33] Just extract() --- lib/extract.bash | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/extract.bash diff --git a/lib/extract.bash b/lib/extract.bash new file mode 100644 index 00000000..1c55928a --- /dev/null +++ b/lib/extract.bash @@ -0,0 +1,20 @@ +extract () { + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xvjf $1 ;; + *.tar.gz) tar xvzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xvf $1 ;; + *.tbz2) tar xvjf $1 ;; + *.tgz) tar xvzf $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 +} From 561c4d60a0a149367e35aa460f09dd3035ad0abc Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sun, 17 Jul 2011 13:21:38 -0500 Subject: [PATCH 13/33] Move extract.bash to a proper location --- lib/extract.bash => plugins/available/extract.plugin.bash | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/extract.bash => plugins/available/extract.plugin.bash (100%) diff --git a/lib/extract.bash b/plugins/available/extract.plugin.bash similarity index 100% rename from lib/extract.bash rename to plugins/available/extract.plugin.bash From 105172025742cf32734825c7d446250332627d55 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sun, 17 Jul 2011 13:22:49 -0500 Subject: [PATCH 14/33] Add error throw for no file specified --- plugins/available/extract.plugin.bash | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/available/extract.plugin.bash b/plugins/available/extract.plugin.bash index 1c55928a..1c3e9b1a 100644 --- a/plugins/available/extract.plugin.bash +++ b/plugins/available/extract.plugin.bash @@ -1,4 +1,9 @@ extract () { + if [ $# -ne 1 ] + then + echo "Error: No file specified." + return 1 + fi if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; @@ -12,7 +17,7 @@ extract () { *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; - *) echo "'$1' cannot be extracted via >extract<" ;; + *) echo "'$1' cannot be extracted via extract" ;; esac else echo "'$1' is not a valid file" From ec3158908b943ff34cdbf0eb2dfe94fb453ad070 Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Tue, 19 Jul 2011 07:31:49 -0700 Subject: [PATCH 15/33] Fixed installation paths in docs. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a529e3a..0c9c303f 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ Includes autocompletion, themes, aliases, custom functions, a few stolen pieces ## Install -1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git bash_it` -2. Run `install.sh` (it automatically backs up your `~/.bash_profile`) +1. Check a clone of this repo: `git clone http://github.com/revans/bash-it.git ~/.bash_it` +2. Run `~/.bash_it/install.sh` (it automatically backs up your `~/.bash_profile`) 3. Edit your `~/.bash_profile` file in order to customize bash-it. **NOTE:** From aa56e2ad01977a4bf1237721a7aa089b1990e3bd Mon Sep 17 00:00:00 2001 From: Travis Swicegood Date: Sat, 23 Jul 2011 21:42:02 -0500 Subject: [PATCH 16/33] ditch custom virtualenv_prompt in favor of one in base --- themes/doubletime/doubletime.theme.bash | 7 ------- 1 file changed, 7 deletions(-) diff --git a/themes/doubletime/doubletime.theme.bash b/themes/doubletime/doubletime.theme.bash index e16ba66c..997b3f24 100644 --- a/themes/doubletime/doubletime.theme.bash +++ b/themes/doubletime/doubletime.theme.bash @@ -26,13 +26,6 @@ doubletime_scm_prompt() { fi } -virtualenv_prompt() { - if [ ! -z "$VIRTUAL_ENV" ] - then - echo "(`basename $VIRTUAL_ENV`) " - fi -} - function prompt_setter() { # Save history history -a From 1251c20a5825a6fa9461a03b42ec27d2ddc8491d Mon Sep 17 00:00:00 2001 From: Travis Swicegood Date: Sat, 23 Jul 2011 21:42:22 -0500 Subject: [PATCH 17/33] add rvm to prompt --- themes/doubletime/doubletime.theme.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/doubletime/doubletime.theme.bash b/themes/doubletime/doubletime.theme.bash index 997b3f24..0ec8497c 100644 --- a/themes/doubletime/doubletime.theme.bash +++ b/themes/doubletime/doubletime.theme.bash @@ -38,7 +38,7 @@ function prompt_setter() { clock=$THEME_PROMPT_CLOCK_FORMAT fi PS1=" -$clock $(scm_char) [$THEME_PROMPT_HOST_COLOR\u@${THEME_PROMPT_HOST}$reset_color] $(virtualenv_prompt)\w +$clock $(scm_char) [$THEME_PROMPT_HOST_COLOR\u@${THEME_PROMPT_HOST}$reset_color] $(virtualenv_prompt)$(rvm_version_prompt)\w $(doubletime_scm_prompt)$reset_color $ " PS2='> ' PS4='+ ' From 11995c1c1d6623c8aabbce356988e9f7bcec5fba Mon Sep 17 00:00:00 2001 From: Travis Swicegood Date: Sat, 23 Jul 2011 21:42:48 -0500 Subject: [PATCH 18/33] make sure its obvious which is ruby and which is python --- themes/doubletime/doubletime.theme.bash | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/themes/doubletime/doubletime.theme.bash b/themes/doubletime/doubletime.theme.bash index 0ec8497c..17def320 100644 --- a/themes/doubletime/doubletime.theme.bash +++ b/themes/doubletime/doubletime.theme.bash @@ -6,8 +6,10 @@ SCM_SVN_CHAR="${bold_cyan}⑆${normal}" SCM_HG_CHAR="${bold_red}☿${normal}" SCM_THEME_PROMPT_PREFIX="" SCM_THEME_PROMPT_SUFFIX="" -RVM_THEME_PROMPT_PREFIX=" (" -RVM_THEME_PROMPT_SUFFIX=")" +RVM_THEME_PROMPT_PREFIX="(rb: " +RVM_THEME_PROMPT_SUFFIX=") " +VIRTUALENV_THEME_PROMPT_PREFIX="(py: " +VIRTUALENV_THEME_PROMPT_SUFFIX=") " if [ ! -z $THEME_PROMPT_HOST_COLOR ]; then THEME_PROMPT_HOST_COLOR=$(eval echo $`echo ${THEME_PROMPT_HOST_COLOR}`); From 41ca567f95496d290b3fc3311c2220975ae47731 Mon Sep 17 00:00:00 2001 From: Travis Swicegood Date: Sat, 23 Jul 2011 21:48:07 -0500 Subject: [PATCH 19/33] add color to the prefix --- themes/doubletime/doubletime.theme.bash | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/themes/doubletime/doubletime.theme.bash b/themes/doubletime/doubletime.theme.bash index 17def320..c3bf453d 100644 --- a/themes/doubletime/doubletime.theme.bash +++ b/themes/doubletime/doubletime.theme.bash @@ -6,9 +6,19 @@ SCM_SVN_CHAR="${bold_cyan}⑆${normal}" SCM_HG_CHAR="${bold_red}☿${normal}" SCM_THEME_PROMPT_PREFIX="" SCM_THEME_PROMPT_SUFFIX="" -RVM_THEME_PROMPT_PREFIX="(rb: " +if [ ! -z $RVM_THEME_PROMPT_COLOR ]; then + RVM_THEME_PROMPT_COLOR=$(eval echo $`echo ${RVM_THEME_PROMPT_COLOR}`); +else + RVM_THEME_PROMPT_COLOR="${red}" +fi +RVM_THEME_PROMPT_PREFIX="(${RVM_THEME_PROMPT_COLOR}rb${normal}: " RVM_THEME_PROMPT_SUFFIX=") " -VIRTUALENV_THEME_PROMPT_PREFIX="(py: " +if [ ! -z $VIRTUALENV_THEME_PROMPT_COLOR ]; then + VIRTUALENV_THEME_PROMPT_COLOR=$(eval echo $`echo ${VIRTUALENV_THEME_PROMPT_COLOR}`); +else + VIRTUALENV_THEME_PROMPT_COLOR="${green}" +fi +VIRTUALENV_THEME_PROMPT_PREFIX="(${VIRTUALENV_THEME_PROMPT_COLOR}py${normal}: " VIRTUALENV_THEME_PROMPT_SUFFIX=") " if [ ! -z $THEME_PROMPT_HOST_COLOR ]; then From 80ec9c06bae86a0f51b155a3e7298d2c869f6acd Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sun, 24 Jul 2011 13:35:43 -0500 Subject: [PATCH 20/33] Remove automatic creation of enabled plugins/aliases/completion --- bash_it.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bash_it.sh b/bash_it.sh index 7734c10c..c7cbaa73 100644 --- a/bash_it.sh +++ b/bash_it.sh @@ -22,8 +22,7 @@ for file_type in "aliases" "completion" "plugins" do if [ ! -d "${BASH}/${file_type}/enabled" ] then - mkdir "${BASH}/${file_type}/enabled" - ln -s ${BASH}/${file_type}/available/* "${BASH}/${file_type}/enabled" + break fi FILES="${BASH}/${file_type}/enabled/*.bash" for config_file in $FILES From 3eff6b2d3838b4b566f8e311f929f078469afba4 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sun, 24 Jul 2011 13:36:07 -0500 Subject: [PATCH 21/33] Add ability to choose what plugins/aliases/completion to install at install time --- install.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/install.sh b/install.sh index 3fc647b4..4affdbaf 100755 --- a/install.sh +++ b/install.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +BASH="$HOME/.bash_it" cp $HOME/.bash_profile $HOME/.bash_profile.bak @@ -26,3 +27,62 @@ do echo "Please enter Y or N" esac done + +function load_all() { + for file_type in "aliases" "completion" "plugins" + do + [ ! -d "$BASH/$file_type/enabled" ] && mkdir "$BASH/${file_type}/enabled" + ln -s $BASH/${file_type}/available/* "${BASH}/${file_type}/enabled" + done +} + +function load_some() { + for file_type in "aliases" "completion" "plugins" + do + for file in `ls $BASH/${file_type}/available` + do + if [ ! -d "$BASH/$file_type/enabled" ] + then + mkdir "$BASH/$file_type/enabled" + fi + while true + do + read -p "Would you like to enable the ${file%.*.*} $file_type? [Y/N] " RESP + case $RESP in + [yY]) + ln -s "$BASH/$file_type/available/$file" "$BASH/$file_type/enabled" + ;; + [nN]) + break + ;; + *) + echo "Please choose y or n." + ;; + esac + done + done + done +} + +while true +do + read -p "Would you like to enable all, some, or no plugins/aliases/tab-completion plugins? Some of these may make bash slower to start up. (all/some/none) " RESP + case $RESP + in + some) + load_some + break + ;; + all) + load_all + break + ;; + none) + break + ;; + *) + echo "Unknown choice. Please enter some, all, or none" + continue + ;; + esac +done From 159e1e42fa7019471f8763a2dc0ba5f55d82c378 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Sun, 24 Jul 2011 15:01:07 -0500 Subject: [PATCH 22/33] More granular enabling of plugins/completion/aliases --- install.sh | 55 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index 4affdbaf..74ff6979 100755 --- a/install.sh +++ b/install.sh @@ -29,16 +29,13 @@ do done function load_all() { - for file_type in "aliases" "completion" "plugins" - do - [ ! -d "$BASH/$file_type/enabled" ] && mkdir "$BASH/${file_type}/enabled" - ln -s $BASH/${file_type}/available/* "${BASH}/${file_type}/enabled" - done + file_type=$1 + [ ! -d "$BASH/$file_type/enabled" ] && mkdir "$BASH/${file_type}/enabled" + ln -s $BASH/${file_type}/available/* "${BASH}/${file_type}/enabled" } function load_some() { - for file_type in "aliases" "completion" "plugins" - do + file_type=$1 for file in `ls $BASH/${file_type}/available` do if [ ! -d "$BASH/$file_type/enabled" ] @@ -61,28 +58,30 @@ function load_some() { esac done done - done } -while true +for type in "aliases" "plugins" "completion" do - read -p "Would you like to enable all, some, or no plugins/aliases/tab-completion plugins? Some of these may make bash slower to start up. (all/some/none) " RESP - case $RESP - in - some) - load_some - break - ;; - all) - load_all - break - ;; - none) - break - ;; - *) - echo "Unknown choice. Please enter some, all, or none" - continue - ;; - esac + while true + do + read -p "Would you like to enable all, some, or no $type? Some of these may make bash slower to start up (especially completion). (all/some/none) " RESP + case $RESP + in + some) + load_some $type + break + ;; + all) + load_all $type + break + ;; + none) + break + ;; + *) + echo "Unknown choice. Please enter some, all, or none" + continue + ;; + esac + done done From 55c32cc3e910022cfef08ed827b9d15f86dbbb21 Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Mon, 25 Jul 2011 13:34:39 +0200 Subject: [PATCH 23/33] Break needed in load_some Y case --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 74ff6979..f84c097b 100755 --- a/install.sh +++ b/install.sh @@ -48,6 +48,7 @@ function load_some() { case $RESP in [yY]) ln -s "$BASH/$file_type/available/$file" "$BASH/$file_type/enabled" + break ;; [nN]) break From 484c57b7d22bad8797f073951c5f0682bb1c5921 Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Mon, 25 Jul 2011 13:47:03 +0200 Subject: [PATCH 24/33] Refactored gem completion to load gem lists on demand intead of on load --- completion/available/gem.completion.bash | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash index 7231eef0..de986e08 100644 --- a/completion/available/gem.completion.bash +++ b/completion/available/gem.completion.bash @@ -1,22 +1,22 @@ #!/usr/bin/env bash # Completion for gem -if [ -z "$REMOTE_GEMS" ] -then - REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') ) -fi - -if [ -z "$LOCAL_GEMS" ] -then - LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') ) -fi - _installcomp() { + if [ -z "$REMOTE_GEMS" ] + then + REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') ) + fi + local cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) ) } _uninstallcomp() { + if [ -z "$LOCAL_GEMS" ] + then + LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') ) + fi + local cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) ) } From c6e096e35d43fd3ecaaadad5ff92fee2d37a0922 Mon Sep 17 00:00:00 2001 From: Yakkala Yagnesh Raghava Date: Sat, 6 Aug 2011 00:14:15 +0900 Subject: [PATCH 25/33] Add BOOKMARKing functionality to dirs plugin --- plugins/available/dirs.plugins.bash | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) mode change 100644 => 100755 plugins/available/dirs.plugins.bash diff --git a/plugins/available/dirs.plugins.bash b/plugins/available/dirs.plugins.bash old mode 100644 new mode 100755 index dfa9a323..a9f59749 --- a/plugins/available/dirs.plugins.bash +++ b/plugins/available/dirs.plugins.bash @@ -50,3 +50,35 @@ function dirs-help() { echo "8 : Chance to stack location 8." echo "9 : Chance to stack location 9." } + + +# ADD BOOKMARKing functionality +# usage: + +if [ ! -f ~/.dirs ]; then # if doesn't exist, create it + touch ~/.dirs +else + source ~/.dirs +fi + +alias L='cat ~/.dirs' + +G () { # goes to distination dir otherwise , stay in the dir + cd ${1:-$(pwd)} ; +} + +S () { # SAVE a BOOKMARK + /bin/sed "/$@/d" ~/.dirs > ~/.dirs1; + \mv ~/.dirs1 ~/.dirs; + echo "$@"=\"`pwd`\" >> ~/.dirs; + source ~/.dirs ; +} + +R () { # remove a BOOKMARK + /bin/sed "/$@/d" ~/.dirs > ~/.dirs1; + \mv ~/.dirs1 ~/.dirs; +} + +alias U='source ~/.dirs' # Update BOOKMARK stack +# set the bash option so that no '$' is required when using the above facility +shopt -s cdable_vars From dcdfd66d2a566dc637f916486e5622b651cc095f Mon Sep 17 00:00:00 2001 From: Yakkala Yagnesh Raghava Date: Sat, 6 Aug 2011 01:01:17 +0900 Subject: [PATCH 26/33] BOOKMARKing:remove absolute path of sed, to make compatible with OS X --- plugins/available/dirs.plugins.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/available/dirs.plugins.bash b/plugins/available/dirs.plugins.bash index a9f59749..9353c5b5 100755 --- a/plugins/available/dirs.plugins.bash +++ b/plugins/available/dirs.plugins.bash @@ -68,14 +68,14 @@ G () { # goes to distination dir otherwise , stay in the dir } S () { # SAVE a BOOKMARK - /bin/sed "/$@/d" ~/.dirs > ~/.dirs1; + sed "/$@/d" ~/.dirs > ~/.dirs1; \mv ~/.dirs1 ~/.dirs; echo "$@"=\"`pwd`\" >> ~/.dirs; source ~/.dirs ; } R () { # remove a BOOKMARK - /bin/sed "/$@/d" ~/.dirs > ~/.dirs1; + sed "/$@/d" ~/.dirs > ~/.dirs1; \mv ~/.dirs1 ~/.dirs; } From e964c029aa5cf6a0a45a6a34eb7f8149f1feed69 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Wed, 10 Aug 2011 18:49:07 -0500 Subject: [PATCH 27/33] Add alias for shuf -> gshuf --- aliases/available/general.aliases.bash | 53 ++++++++++++++------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash index 79bd7aa0..74f54280 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -12,7 +12,12 @@ alias _="sudo" if [ $(uname) = "Linux" ] then - alias ls="ls --color=always" + alias ls="ls --color=always" +fi + +if [ ! -z "$(which gshuf)" ] +then + alias shuf=gshuf fi alias c='clear' @@ -47,27 +52,27 @@ alias md='mkdir -p' alias rd=rmdir function aliases-help() { - echo "Generic Alias Usage" - echo - echo " sl = ls" - echo " ls = ls -G" - echo " la = ls -AF" - echo " ll = ls -al" - echo " l = ls -a" - echo " c/k/cls = clear" - echo " .. = cd .." - echo " ... = cd ../.." - echo " - = cd -" - echo " h = history" - echo " md = mkdir -p" - echo " rd = rmdir" - echo " editor = $EDITOR" - echo " pager = $PAGER" - echo " piano = pianobar" - echo " q = exit" - echo " irc = $IRC_CLIENT" - echo " md = mkdir -p" - echo " rd = rmdir" - echo " rb = ruby" - echo +echo "Generic Alias Usage" +echo +echo " sl = ls" +echo " ls = ls -G" +echo " la = ls -AF" +echo " ll = ls -al" +echo " l = ls -a" +echo " c/k/cls = clear" +echo " .. = cd .." +echo " ... = cd ../.." +echo " - = cd -" +echo " h = history" +echo " md = mkdir -p" +echo " rd = rmdir" +echo " editor = $EDITOR" +echo " pager = $PAGER" +echo " piano = pianobar" +echo " q = exit" +echo " irc = $IRC_CLIENT" +echo " md = mkdir -p" +echo " rd = rmdir" +echo " rb = ruby" +echo } From 576434048bf58bbab1c527d08e8eb3b6dfbe29c0 Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Wed, 10 Aug 2011 18:49:20 -0500 Subject: [PATCH 28/33] Add simple password generator --- plugins/available/base.plugin.bash | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/available/base.plugin.bash b/plugins/available/base.plugin.bash index e361e04a..cccd956c 100644 --- a/plugins/available/base.plugin.bash +++ b/plugins/available/base.plugin.bash @@ -15,6 +15,18 @@ function myip { echo "Your public IP is: ${bold_green} $res ${normal}" } +pass() { + if [ -z "$(which gshuf)" ] + then + echo "Error: shuf isn't installed!" + return 1 + fi + + pass=$(shuf -n4 /usr/share/dict/words | tr '\n' ' ') + echo "With spaces (easier to memorize): $pass" + echo "Without (use this as the pass): $(echo $pass | tr -d ' ')" +} + # Function for previewing markdown files in the browser function pmdown() { From 818e687790ecca69102268f17c5798acae2d7ee0 Mon Sep 17 00:00:00 2001 From: Antono Vasiljev Date: Fri, 12 Aug 2011 04:07:12 +0300 Subject: [PATCH 29/33] Detect OS in emacs.aliases.bash --- aliases/available/emacs.aliases.bash | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/aliases/available/emacs.aliases.bash b/aliases/available/emacs.aliases.bash index 5b328768..5042b17e 100644 --- a/aliases/available/emacs.aliases.bash +++ b/aliases/available/emacs.aliases.bash @@ -1,3 +1,11 @@ #!/bin/bash -alias em="open -a emacs" \ No newline at end of file +case $OSTYPE in + linux*) + alias em='emacs' + alias e='emacsclient -n' + ;; + darwin*) + alias em="open -a emacs" + ;; +esac From 89da5f9ceccc5667ff4d946d25d4d4a5b2b98698 Mon Sep 17 00:00:00 2001 From: Antono Vasiljev Date: Fri, 12 Aug 2011 04:08:11 +0300 Subject: [PATCH 30/33] general.aliases.bash: use native tree if [ -x ] .... --- aliases/available/general.aliases.bash | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash index 74f54280..457d6b5b 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -37,15 +37,19 @@ alias rb="ruby" alias piano="pianobar" -alias ..='cd ..' # Go up one directory -alias ...='cd ../..' # Go up two directories -alias -- -="cd -" # Go back +alias ..='cd ..' # Go up one directory +alias ...='cd ../..' # Go up two directories +alias ....='cd ../../..' # Go up two directories +alias -- -="cd -" # Go back # Shell History alias h='history' # Tree -alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'" +if [ ! -x "$(which tree)" ] +then + alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'" +fi # Directory alias md='mkdir -p' From 380a4a6c0e482a6f8f139d3cc8fc3daa8023f63a Mon Sep 17 00:00:00 2001 From: Antono Vasiljev Date: Fri, 12 Aug 2011 04:12:07 +0300 Subject: [PATCH 31/33] Alias for textmate only on darwin* --- aliases/available/textmate.aliases.bash | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/aliases/available/textmate.aliases.bash b/aliases/available/textmate.aliases.bash index ecd616ff..4e696a55 100644 --- a/aliases/available/textmate.aliases.bash +++ b/aliases/available/textmate.aliases.bash @@ -1,5 +1,9 @@ #!/bin/bash -# Textmate -alias e='mate . &' -alias et='mate app config db lib public script test spec config.ru Gemfile Rakefile README &' \ No newline at end of file +case $OSTYPE in + darwin*) + # Textmate + alias e='mate . &' + alias et='mate app config db lib public script test spec config.ru Gemfile Rakefile README &' + ;; +esac From ba8fde85ebbc59e4440dfe45834c8da78671811f Mon Sep 17 00:00:00 2001 From: Mark Szymanski Date: Fri, 12 Aug 2011 16:30:55 -0500 Subject: [PATCH 32/33] Make gshuf alias checker work on other bash versions --- aliases/available/general.aliases.bash | 4 ++-- plugins/available/base.plugin.bash | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash index 74f54280..4f49a6a8 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -14,8 +14,8 @@ if [ $(uname) = "Linux" ] then alias ls="ls --color=always" fi - -if [ ! -z "$(which gshuf)" ] +which gshuf &> /dev/null +if [ $? -eq 1 ] then alias shuf=gshuf fi diff --git a/plugins/available/base.plugin.bash b/plugins/available/base.plugin.bash index cccd956c..7a6dc80f 100644 --- a/plugins/available/base.plugin.bash +++ b/plugins/available/base.plugin.bash @@ -16,7 +16,8 @@ function myip { } pass() { - if [ -z "$(which gshuf)" ] + which gshuf &> /dev/null + if [ $? -eq 1 ] then echo "Error: shuf isn't installed!" return 1 From 8e0b66899dc1fcc818c45f925a14fea36cd5e279 Mon Sep 17 00:00:00 2001 From: Noorul Islam K M Date: Mon, 22 Aug 2011 12:35:00 +0530 Subject: [PATCH 33/33] Do not break out of the loop instead continue with other items in the list. --- bash_it.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bash_it.sh b/bash_it.sh index c7cbaa73..fd7b546d 100644 --- a/bash_it.sh +++ b/bash_it.sh @@ -22,7 +22,7 @@ for file_type in "aliases" "completion" "plugins" do if [ ! -d "${BASH}/${file_type}/enabled" ] then - break + continue fi FILES="${BASH}/${file_type}/enabled/*.bash" for config_file in $FILES