X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=.shellrc;h=6e2fa0532e4fd55ade495f8137b556b25e1dc78a;hb=201cec894446caedb826806dce9d6234c0705e64;hp=e43c215913f3778b697c0804991596ffb8d6a761;hpb=6781dcaee2933ce190024915917015726662d50b;p=dotfiles.git diff --git a/.shellrc b/.shellrc index e43c215..6e2fa05 100644 --- a/.shellrc +++ b/.shellrc @@ -9,11 +9,11 @@ # If not running interactively, don't do anything case $- in *i*) ;; - *) return;; + *) return ;; esac # Stop if non-interactive shell -# [ -z "$PS1" ] && return +[ -z "$PS1" ] && return if test -n "$BASH_VERSION"; then # append to the history file, don't overwrite it @@ -68,7 +68,6 @@ if test -n "$BASH_VERSION"; then [ "`type -t mc`" = alias ] && unalias mc back() { cd - "$@"; } - clo() { clear; logout; } functions() { typeset -f "$@"; } j() { jobs; } @@ -112,45 +111,37 @@ if test -n "$BASH_VERSION"; then ! has_completion $cmd && complete -A hostname $cmd done - if has_completion wget; then - _wget_completion_loader() { - _completion_loader wget - complete -F _wget wget-m wget-wrapper ww - unset _wget_completion_loader - return 124 - } - complete -F _wget_completion_loader wget-m wget-wrapper ww - fi - for cmd in distribute ftp lftp r rsync \ s scp ssh smbclient tcpdump tshark wireshark; do ! has_completion $cmd && complete -o default -A hostname $cmd; done - if has_completion rsync; then - _rsync_completion_loader() { - _completion_loader rsync - complete -F _rsync r - unset _rsync_completion_loader - return 124 - } - complete -F _rsync_completion_loader r - fi + delegate_completion() { + local prog completion_f programs + prog="$1" + completion_f="$2" + shift; shift + programs="$@" + if has_completion "$prog"; then + eval "_${prog}_completion_loader() { + _completion_loader $prog + complete -F $completion_f $programs + unset _${prog}_completion_loader + return 124 + }" + complete -F _"$prog"_completion_loader $programs + fi + } - if has_completion ssh; then - _ssh_completion_loader() { - _completion_loader ssh - complete -F _ssh s - unset _ssh_completion_loader - return 124 - } - complete -F _ssh_completion_loader s - fi + delegate_completion make _make m + delegate_completion rsync _rsync r + delegate_completion ssh _ssh s + delegate_completion wget _wget wget-m wget-wrapper ww - unset has_completion + unset has_completion delegate_completion complete -A job bg fg j jobs wait - complete -A variable unset + complete -A variable -A function unset if [ -d "$HOME/lib/config" ]; then complete -W "`cd \"$HOME/lib/config\" && echo *`" include @@ -164,40 +155,12 @@ if test -n "$BASH_VERSION"; then elif test -n "$KSH_VERSION" -o -n "$FCEDIT"; then back() { cd - "$@"; } - clo() { clear; exit; } j() { jobs; } - -else - clo() { clear; exit; } fi -# clear history, clear screen and logout -#chlo() { cd; unset HISTFILE; rm -f .sh_history; history -c; clo; } - - -#Pwd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)\/\(.*\)\/\(.*\)/...\/\2\/\3\/\4/"; } -#PWd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)/...\/\2/"; } - - -psg() { ps auxw | grep -i "$@" | grep -v '\(ps auxw\|grep\)'; } -pswg() { ps auxwww | grep -i "$@" | grep -v '\(ps auxw\|grep\)'; } - -# Like pgrep -f -pidOf() { ps auxwww | grep -i "$@" | grep -v '\(ps auxw\|grep\|pidOf\|KillAll\)' | awk '{print $2}'; } - -# A kind of pkill/killall -KillAll() { - if [ -z "$1" -o -n "$3" ]; then - echo "Usage: KillAll [-signal] proc_regexp" >&2 - return 1 - fi - if [ -z "$2" ]; then - kill `pidOf "$1"` - else - kill "$1" `pidOf "$2"` - fi -} +# clear screen and history, logout +chlo() { clear; cd; >$HISTFILE; unset HISTFILE; history -c; logout || exit; } if test -x /usr/bin/git >/dev/null 2>&1; then