From: Ian Kelling Date: Thu, 12 Jun 2014 22:47:05 +0000 (-0700) Subject: various updates X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=commitdiff_plain;h=42fab04c82857dc195382179aecdcf414686f1dc various updates --- diff --git a/.bashrc b/.bashrc index 287b148..fcaa4b6 100644 --- a/.bashrc +++ b/.bashrc @@ -88,6 +88,7 @@ shopt -s histappend shopt -s checkwinsize # attempt to save multiline single commands as single history entries. shopt -s cmdhist +shopt -s globstar # inside emacs fixes @@ -105,6 +106,7 @@ if [[ $- == *i* ]]; then if [[ $INSIDE_EMACS ]]; then bind 'set horizontal-scroll-mode on' bind 'set print-completions-horizontally on' + bind '"\C-i": self-insert' else # arrow keys. for other terminals, see http://unix.stackexchange.com/questions/10806/how-to-change-previous-next-word-shortcut-in-bash if [[ $TERM == "xterm" ]]; then @@ -217,7 +219,29 @@ fi ### functions #### ##################### - +# netselect-apt finds a fast mirror. +# but we need to replace the mirrors ourselves, +# because it doesn't do that. best it can do is +# output a basic sources file +# here we get the server it found, get the main server we use +# then substitute all instances of one for the other in the sources file +# and backup original to /etc/apt/sources.list-original. +# this is idempotent +debian_pick_mirror () { + local x=$(mktemp -d)/f # safe way to get file name without creating one + sudo netselect-apt -o $x || return 1 + x=$(_debian_pick_mirror_grep stable $x) + sudo cp -f /etc/apt/sources.list /etc/apt/sources.list-original + sudo sed -i "s/$(_debian_pick_mirror_grep wheezy)/$x/" /etc/apt/sources.list +} + +_debian_pick_mirror_grep () { + local x="$(grep -oP "^deb [^ ]+ $1 " ${2-/etc/apt/sources.list})" + x="${x#deb }" + x="${x% $1 }" + # replace / with \/ so we can use it with sed + echo "${x//\//\\/}" +} a() { beet "${@}" @@ -435,38 +459,6 @@ despace() { done } -# force symbolic link creation. -# trash-put any existing files where links would be created. -# mkdir -p the directory containing the link(s) if needed. -# then do ln -s -- "$@" -lnf() { - if [[ $# -gt 2 && ! -d ${!#} ]]; then - mkdir -p "${!#}" - fi - if [[ $# -gt 1 && -d ${!#} ]]; then - local oldcwd=$PWD - cd ${!#} # last arg - for x in "${@:1:$(($#-1))}"; do # all but last arg - # remove any trailing slashes - x="${x%%+(/)}" - # remove any leading directory components - x="${x##*/}" - te "$x" && trash-put "$x" - done - cd "$oldcwd" - elif [[ $# -eq 2 ]]; then - if te "$2"; then - trash-put "$2" - elif [[ ! -d $(getdir "$2") ]]; then - mkdir -p $(getdir "$2") - fi - else - te "${1##*/}" && rm "${1##*/}" - fi - ln -s -- "$@" -} - - # package manager # aliases would be much more compact, but they can't be used as ssh commands @@ -676,7 +668,7 @@ splay() { # script replay # timer in minutes tm() { - (sleep $(calc "$@ * 60") && mpv /a/bin/data/alarm.mp3) > /dev/null 2>&1 & + (sleep $(calc "$@ * 60") && mpv --volume 50 /a/bin/data/alarm.mp3) > /dev/null 2>&1 & } @@ -780,8 +772,10 @@ hl() { # history limit. Write extra history to archive file. fi } -# commands to run when bash exits normally -trap "hl; smh" EXIT +if [[ $- == *i* ]]; then + # commands to run when bash exits normally + trap "hl; smh" EXIT +fi # temporary variables to test colorization @@ -873,18 +867,15 @@ if [[ $- == *i* ]]; then fi # this needs to come before next ps1 stuff - if [[ $BASH_VERSION == [456789]* ]]; then - shopt -s autocd - shopt -s globstar - shopt -s dirspell - PS1='\w' - if [[ $- == *i* ]] && [[ ! $INSIDE_EMACS ]]; then - PROMPT_DIRTRIM=2 - bind -m vi-command B:shell-backward-word - bind -m vi-command W:shell-forward-word - fi - else - PS1='\W' + # this stuff needs bash 4, feb 2009, + # old enough to no longer condition on $BASH_VERSION anymore + shopt -s autocd + shopt -s dirspell + PS1='\w' + if [[ $- == *i* ]] && [[ ! $INSIDE_EMACS ]]; then + PROMPT_DIRTRIM=2 + bind -m vi-command B:shell-backward-word + bind -m vi-command W:shell-forward-word fi if [[ $SSH_CLIENT ]]; then