diff options
| author | Mitch Riedstra <mitch@riedstra.us> | 2018-03-13 23:25:30 -0400 |
|---|---|---|
| committer | Mitch Riedstra <mitch@riedstra.us> | 2018-03-13 23:25:30 -0400 |
| commit | f3992cd98d5b2fd7c070fcd8b0edb1fe69ad9d29 (patch) | |
| tree | d8e2a5fa7c87c0018c065fbcd4e432eec164bafe /mkshrc | |
| parent | 8e43e4eaed7d20a7bf80c4255503bdd1dd7dff86 (diff) | |
| download | dotfiles-f3992cd98d5b2fd7c070fcd8b0edb1fe69ad9d29.tar.gz dotfiles-f3992cd98d5b2fd7c070fcd8b0edb1fe69ad9d29.tar.xz | |
Massive changes to mkshrc, switched to ISC license
new file: mtr.misc.subr.sh
removed functions should
be in this file
Diffstat (limited to 'mkshrc')
| -rw-r--r-- | mkshrc | 384 |
1 files changed, 77 insertions, 307 deletions
@@ -1,15 +1,18 @@ -## Mitch's General shell configuration -## MIT LICENSE -# vim: syn=sh - -# How to install: -# For Bash: -# curl https://www.rygel.us/etc/mkshrc > $HOME/.mkshrc && echo '. $HOME/.mkshrc' >> .bashrc -# -# Personally I use this with mksh, .mkshrc is auto loaded by mksh - -# Nifty little line that will force the script to return if it's not runnking KSH -# Automatically uncommented if installed system-wide with "install_mkshrc_system" +# Copyright 2018 Mitchell Riedstra + +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. + +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# If you wish to prevent non KSH shells from running this # [ -z "$KSH_VERSION" ] && return # This will hopefully fix the bullshit with zsh @@ -22,20 +25,6 @@ printf "" else -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -# ____ _ -# | _ \ _ __ ___ _ __ ___ _ __ | |_ -# | |_) | '__/ _ \| '_ ` _ \| '_ \| __| -# | __/| | | (_) | | | | | | |_) | |_ -# |_| |_| \___/|_| |_| |_| .__/ \__| -# |_| -# _____ _ _ -# | ___| _ _ __ ___| |_(_) ___ _ __ ___ -# | |_ | | | | '_ \ / __| __| |/ _ \| '_ \/ __| -# | _|| |_| | | | | (__| |_| | (_) | | | \__ \ -# |_| \__,_|_| |_|\___|\__|_|\___/|_| |_|___/ -# -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% precmd() { typeset e=$? @@ -81,13 +70,13 @@ set_prompt() { # PS1="[1;32m[1;40m${USER:=$(id -un)}@$(hostname)[1;33m \$PWD echo $TERM | grep "256color$" > /dev/null 2>&1 if [ $? -eq 0 ] ; then - BG="[1;40m" + BG="" ACCENT_C="[38;5;21m" ACCENT_P="|" USER_C="[38;5;121m" PATH_C="[38;5;190m" END_C="[38;5;226m" - END_P="≈" + END_P="%" else BG="[1;40m" ACCENT_C="[1;34m" @@ -101,7 +90,7 @@ set_prompt() { fi } set_basic_prompt() { - PS1="$(precmd)${USER:=$(id -un)}@$(hostname) \$PWD $ " + PS1='$(precmd)'"${USER:=$(id -un)}@$(hostname) \$PWD $ " export PS1; } set_super_basic_prompt() { @@ -119,14 +108,6 @@ do_cd() { # ZSH doesn't handle these functions all too well fi -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -# _ _ _ _____ _ _ -# / \ | (_) __ _ ___ | ___| _ _ __ ___| |_(_) ___ _ __ ___ -# / _ \ | | |/ _` / __| | |_ | | | | '_ \ / __| __| |/ _ \| '_ \/ __| -# / ___ \| | | (_| \__ \ | _|| |_| | | | | (__| |_| | (_) | | | \__ \ -# /_/ \_\_|_|\__,_|___/ |_| \__,_|_| |_|\___|\__|_|\___/|_| |_|___/ -# -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% setaliases() { alias ls="ls -F"; alias l="ls -lhF"; @@ -150,10 +131,14 @@ setcoloraliases() { alias lm='CLICOLOR_FORCE="1" ls -l | less -r'; fi - alias grep="grep --color=auto"; - alias egrep='egrep --color=auto' + grep --help | grep fucks - >/dev/null 2>&1 + if [ $? -eq 0 ] ; then + alias grep="grep --color=auto"; + alias egrep='egrep --color=auto' + alias search='egrep --color=auto -rnI'; + fi + alias diff="$(which diff colordiff 2>/dev/null | tail -n 1)"; - alias search='egrep --color=auto -rnI'; alias t='tree -CdL' } @@ -220,10 +205,21 @@ unfuck_steam() { LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /usr/$LIB/libgpg-error.so' /usr/bin/steam } counter_figlet() { -COUNTER="1"; while true ; do figlet "$COUNTER" ; COUNTER="$(echo $COUNTER+1 |bc )" ; sleep 1 ; clear ; done +COUNTER="1"; +while true ; do + figlet "$COUNTER"; + COUNTER="$(echo $COUNTER+1 |bc)"; + sleep 1; + clear; +done } counter_single_line() { -COUNTER="1"; while true ; do sleep 1 ; printf "\t$COUNTER\r" ; COUNTER="$(echo $COUNTER+1 |bc )" ; done +COUNTER="1"; +while true ; do + sleep 1; + printf "\t$COUNTER\r"; + COUNTER="$(echo $COUNTER+1 |bc )"; +done } # First argument is the interface on which to scan ipv6_local_hosts() { @@ -272,108 +268,6 @@ for dirname,subdirs,files in os.walk("."): print max_dir, max_file' } -install_tmx() { -location="/usr/local/bin/tmx" -if ! [ -z $1 ]; then - location="$1" -fi -echo '#!/bin/sh - -# Modified further by Mitchell Riedstra to be compatible with -# /bin/sh - -# -# Modified TMUX start script from: -# http://forums.gentoo.org/viewtopic-t-836006-start-0.html -# -# Store it to `~/bin/tmx` and issue `chmod +x`. -# - -# Works because bash automatically trims by assigning to variables and by -# passing arguments -trim() { echo $1; } - -if [ -z "$1" ]; then - echo "Specify session name as the first argument" - exit -fi - -# Only because I often issue `ls` to this script by accident -if [ "$1" == "ls" ]; then - tmux ls - exit -fi - -base_session="$1" -# This actually works without the trim() on all systems except OSX -tmux_nb=$(trim `tmux ls | grep "^$base_session" | wc -l`) -if [ "$tmux_nb" == "0" ]; then - echo "Launching tmux base session $base_session ..." - tmux new-session -s $base_session -else - # Make sure we are not already in a tmux session - if [ -z "$TMUX" ]; then - # Kill defunct sessions first - old_sessions=$(tmux ls 2>/dev/null | egrep "^[0-9]{14}.*[0-9]+\)$" | cut -f 1 -d:) - for old_session_id in $old_sessions; do - tmux kill-session -t $old_session_id - done - - echo "Launching copy of base session $base_session ..." - # Session is is date and time to prevent conflict - session_id=`date +%Y%m%d%H%M%S` - # Create a new session (without attaching it) and link to base session - # to share windows - tmux new-session -d -t $base_session -s $session_id - # Create a new window in that session - #tmux new-window - # Attach to the new session - tmux attach-session -t $session_id - # When we detach from it, kill the session - tmux kill-session -t $session_id - fi -fi -' > $location && chmod +x $location && echo "Installed to: $location" - -} -find_most_recent() { - if [ "$(uname)" != 'linux'] ; then - path="0" - while [ $# -gt 0 ] ; do - case $1 in - -p) - path="$2"; shift; shift; ;; - esac - done - if [ $path = "0" ] ; then - find "$path" -printf "%T@ %Tc %p\n" | sort -n - else - echo "You need to specify a path with -p" - fi - else - echo "GNU Find only" - fi -} -startup_zram() { - size="512M" - - while [ $# -gt 0 ] ; do - case $1 in - -s) - size="$2" - shift; shift; ;; - *) - echo "Unknown option $1" - shift; ;; - esac - done - - modprobe zram - zramctl --find --size="$size" - mkswap -f /dev/zram0 - swapon /dev/zram0 - -} # System setup `chroot`, useful mainly on Linux syschroot() { CHDIR=$1 @@ -390,77 +284,6 @@ syschroot() { umount $CHDIR/dev $CHDIR/sys $CHDIR/proc PS1="$CUR_PS1" } -# Sometimes useful function for unmounting a chroot dir on Linux -umount_recursive() { - case $1 in - -h|--help|"") - cat <<-EOF - Specifiy the full path to the mountpoint - and this function will do it's best to - unmount all child filesystems and the path - specified - Example: - $0 /path/to/filesystem/with/lots/of/mountpoints - Options: - -f|--force - EOF - ;; - -f|--force) - local _path="$2" - local filesystems=`cat /proc/mounts | grep $_path | awk '{print $2}' | sort -r` - for filesystem in $filesystems ; do - umount -f $filesystem - done - ;; - *) - local _path="$1" - local filesystems=`cat /proc/mounts | grep $_path | awk '{print $2}' | sort -r` - for filesystem in $filesystems ; do - umount $filesystem - done - ;; - esac -} -time_at_yac() { - date --date='September 22 2014' -} -find_php_short_tags() { - egrep --include="*.php" -rniI '<\?[^px=q]' . --color=force -} -gentags() { - options="-R --links --languages=php,-javascript" - dir="." - while [ $# -gt 0 ] ; do - case $1 in - -o) - options="$2" - shift; shift; - ;; - esac - done - - if [ -x $(which exctags 2>/dev/null) ] ; then - $(which exctags 2>/dev/null) $options $dir - elif [ -x $(which ctags 2>/dev/null) ] ; then - $(which ctags 2>/dev/null) $options $dir - fi -} -set_tmux_title() { - text="" - while [ $# -gt 0 ] ; do - text="$( echo $text $1)"; - shift; - done - printf $'\033k'"${text}"$'\033\\'; -} -set_title() { - text="" - while [ $# -gt 0 ] ; do - text="$( echo $text $1)"; - shift; - done - printf $'\033]0;'"$text"$'\007'; -} # Usage: dir_oct:file_oct path setperms() { @@ -475,27 +298,6 @@ timestamp() { } -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -# ____ __ _ _ _ -# / ___|___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __ -# | | / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \ -# | |__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | | -# \____\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_| -# |___/ -# __ __ _ -# | \/ | __ _ _ __ __ _ __ _ ___ _ __ ___ ___ _ __ | |_ -# | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \ '_ ` _ \ / _ \ '_ \| __| -# | | | | (_| | | | | (_| | (_| | __/ | | | | | __/ | | | |_ -# |_| |_|\__,_|_| |_|\__,_|\__, |\___|_| |_| |_|\___|_| |_|\__| -# |___/ -# _____ _ _ -# | ___| _ _ __ ___| |_(_) ___ _ __ ___ -# | |_ | | | | '_ \ / __| __| |/ _ \| '_ \/ __| -# | _|| |_| | | | | (__| |_| | (_) | | | \__ \ -# |_| \__,_|_| |_|\___|\__|_|\___/|_| |_|___/ -# -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - pull() { url="" file="" @@ -554,7 +356,7 @@ updateshell() { updatevimrc() { OLDWD="$(pwd)" cd $HOME - git clone https://git.riedstra.us/mitch/vim-cfg .vim + git clone $VIM_GIT_URL .vim if [ $? -gt 0 ] ; then cd $HOME/.vim git pull origin master @@ -586,12 +388,10 @@ setcolorterminal() { case $TERM in xterm*) export TERM=xterm-256color - set_title $(hostname) # printf $'\033]0;'"$(hostname)"$'\007'; ;; screen*) export TERM=screen-256color - set_tmux_title $(whoami) # printf $'\033k'"$(whoami)"$'\033\\'; ;; esac @@ -618,21 +418,18 @@ colormanpages() { export GROFF_NO_SGR=1 } -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -# __ __ _ _____ _ _ -#| \/ (_)___ ___ | ___| _ _ __ ___| |_(_) ___ _ __ ___ -#| |\/| | / __|/ __| | |_ | | | | '_ \ / __| __| |/ _ \| '_ \/ __| -#| | | | \__ \ (__ | _|| |_| | | | | (__| |_| | (_) | | | \__ \ -#|_| |_|_|___/\___| |_| \__,_|_| |_|\___|\__|_|\___/|_| |_|___/ -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% set_editor() { - # export EDITOR="vi" + if [ -z "$EDITORS" ] ; then + export EDITOR="vi" + else + export EDITOR="$(which $EDITORS 2>/dev/null | tail -n1)" + fi - export EDITOR="$(which ed mg nano vi vim nvim vis-editor 2>/dev/null | tail -n1)" export VISUAL="$EDITOR" # Set an alias for our editor of choice alias vi="$EDITOR" + alias vim="$EDITOR" alias edit="$EDITOR" alias e="$EDITOR" } @@ -643,105 +440,78 @@ set_lang() { export CHARSET="$1"; export LANG="$1"; } -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -# ____ _ _ _ -# / ___|| |__ ___| | | -# \___ \| '_ \ / _ \ | | -# ___) | | | | __/ | | -# |____/|_| |_|\___|_|_| -# -# ____ __ _ _ _ -# / ___|___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __ -# | | / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \ -# | |__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | | -# \____\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_| -# |___/ +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEWLINE='$(printf "\n")' SHELL_CONFIG=".mkshrc" -FANCY_PROMPT=1 COLOR=1 -UPDATE_URL="https://www.rygel.us/etc/" +MY_LANG="en_US.UTF-8" -PRELOAD="$HOME/${SHELL_CONFIG}.pre" -LOCAL="$HOME/${SHELL_CONFIG}.local" - -# For use with SSL functions -# Just use easy-rsa, it's less hassle - -# Do not load our system profile -# . /etc/profile - - -############################################################ -########## Enviroment variables -set_pager -set_editor +export EDITORS="ed vi vim nvim " export PATH="$HOME/bin:$PATH" export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin -set_lang "en_US.UTF-8" +UPDATE_URL="https://www.rygel.us/etc/" +VIM_GIT_URL="https://git.riedstra.us/mitch/vim-cfg" + +PRELOAD="$HOME/${SHELL_CONFIG}.pre" +LOCAL="$HOME/${SHELL_CONFIG}.local" + +# Don't put any variables below this, as they can't be overridden before the +# functions if you do that # Load pre config if [ -e $PRELOAD ] ; then . $PRELOAD fi +set_pager +set_editor +set_lang $MY_LANG + +setaliases +setsudoaliases + +# Nasty conditional for support of many different shells if [ $SHELL = "/bin/ksh" ] || [ $SHELL = "/bin/mksh" ] || [ $SHELL = "/usr/bin/mksh" ] || - [ $SHELL = "/usr/local/bin/mksh" ] + [ $SHELL = "/usr/local/bin/mksh" ] || + ! [ -z "$KSH_VERSION" ] then export HISTFILE="$HOME/.ksh_history" set -o emacs bind ^L=clear-screen - - setaliases - setsudoaliases - if [ $COLOR -eq 1 ] ; then set_prompt - colormanpages - setcolorterminal - setcoloraliases - setlscolors + else + set_basic_prompt fi elif [ $SHELL = "/bin/zsh" ] || [ $SHELL = "/usr/bin/zsh" ] || [ $SHELL = "/usr/local/bin/zsh" ] ; then set -o emacs - setaliases - setsudoaliases - - if [ $COLOR -eq 1 ] ; then - colormanpages - setcolorterminal - setcoloraliases - setlscolors - fi else - # Support other shells - setaliases - setsudoaliases - [ $SHELL = "/bin/sh" ] && set_super_basic_prompt +fi - if [ $COLOR -eq 1 ] ; then - colormanpages - setcolorterminal - setcoloraliases - setlscolors - fi +if [ $COLOR -eq 1 ] ; then + colormanpages + setcolorterminal + setcoloraliases + setlscolors fi # Include local configuration options |
