]> git.phdru.name Git - dotfiles.git/blob - .shellrc
7c0748000784c407bc3f4b020209100341caa8e1
[dotfiles.git] / .shellrc
1 #
2 # $HOME/.shellrc
3 #
4
5 OPS1="$OPS1\\$"
6 PS1="$OPS1 "
7
8
9 case "$HOME" in
10    /home/*)
11       if [ -L /home ]; then
12          START_DIR="`pwd`" &&
13          cd "$HOME" &&
14          HOME="`pwd`" &&
15          cd "$START_DIR"
16       fi
17    ;;
18 esac
19
20 case "$SHELL" in
21 */bash)
22    [ "`type -t ls`" = alias ] && unalias ls
23    [ "`type -t ll`" = alias ] && unalias ll
24    [ "`type -t mc`" = alias ] && unalias mc
25
26    back() { cd - ${1:+"$@"}; }
27    clo() { clear; logout; }
28    eval 'functions() { typeset -f ${1:+"$@"}; }'
29    j() { jobs; }
30
31    if [ -z "$BASH_COMPLETION_COMPAT_DIR" ]; then
32       if [ "$SHELL" = /bin/bash ]; then
33          if [ -f /etc/bash_completion ]; then
34             . /etc/bash_completion
35          elif [ -d /etc/bash_completion.d ]; then
36             . /etc/bash_completion.d/*
37          fi
38       elif [ "$SHELL" = /usr/local/bin/bash ]; then
39          if [ -d /usr/local/etc/bash_completion.d ]; then
40             . /usr/local/etc/bash_completion.d/*
41          fi
42       else
43          echo "Unknown OS type, canot source bash_completion" >&2
44       fi
45    fi
46
47    has_completion() { return 0; }
48    if [ "$SHELL" = /bin/bash ]; then
49       if [ -d /etc/bash_completion.d -o -d /usr/share/bash-completion/completions ]; then
50          has_completion() { [ -r /etc/bash_completion.d/$1 -o -r /usr/share/bash-completion/completions/$1 ]; }
51       fi
52    elif [ "$SHELL" = /usr/local/bin/bash ]; then
53       if [ -d /usr/local/etc/bash_completion.d ]; then
54          has_completion() { [ -r /usr/local/etc/bash_completion.d/$1 ]; }
55       fi
56    fi
57
58    for cmd in builtin cgmem_nice command dbus-launch exec \
59       killall man nice nohup pidof pidOf KillAll pgrep pkill psg pswg su sudo \
60       time whence whereis which xargs; do
61          ! has_completion $cmd && complete -o default -A command $cmd
62    done
63
64    for cmd in dig host nslookup nc netcat nmap p ping ping6 socat \
65       telnet t tt \
66       tcptraceroute tcptraceroute6 tracert tracert6 traceroute traceroute6 \
67       whois wget wget-m wget-wrapper ww; do
68          ! has_completion $cmd && complete -A hostname $cmd
69    done
70
71    for cmd in distribute ftp lftp r rsync \
72       s scp ssh smbclient tcpdump tshark wireshark; do
73          ! has_completion $cmd && complete -o default -A hostname $cmd;
74    done
75    unset has_completion
76
77    complete -A job bg fg j jobs wait
78    complete -A variable unset
79
80    if [ -d "$HOME/lib/config" ]; then
81       complete -W "`cd \"$HOME/lib/config\" && echo *`" include
82    fi
83    complete -W "`echo $BROWSER | sed 's/:/ /g'`" start-browser
84    ;;
85
86 */ksh)
87    back() { cd - ${1:+"$@"}; }
88    clo() { clear; exit; }
89    j() { jobs; }
90    ;;
91
92 */sh)
93    clo() { clear; exit; }
94    ;;
95 esac
96
97
98 # clear history, clear screen and logout
99 #chlo() { cd; unset HISTFILE; rm -f .sh_history; history -c; clo; }
100
101
102 #Pwd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)\/\(.*\)\/\(.*\)/...\/\2\/\3\/\4/"; }
103 #PWd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)/...\/\2/"; }
104
105
106 psg()   { ps auxw   | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\)'; }
107 pswg()  { ps auxwww | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\)'; }
108
109 # Like pgrep -f
110 pidOf() { ps auxwww | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\|pidOf\|KillAll\)' | awk '{print $2}'; }
111
112 # A kind of pkill/killall
113 KillAll() {
114    if [ -z "$2" ]; then
115       kill `pidOf "$1"`
116    else
117       kill "$1" `pidOf "$2"`
118    fi
119 }
120
121
122 x() { exit; }
123 X() { startx >> .Xserver.log 2>&1; cyr; }
124
125
126 include()
127 {
128    cfg="$1"
129    if [ -f "./$cfg" -a -r "./$cfg" ]; then
130       echo "Reading config file \`$cfg'" 1>&2
131       . "./$cfg"
132    elif [ -f "$HOME/lib/config/$cfg" -a -r "$HOME/lib/config/$cfg" ]; then
133       echo "Reading config file \`$HOME/lib/config/$cfg'" 1>&2
134       . "$HOME/lib/config/$cfg"
135    else
136       echo "Cannot find config file \`$cfg'" 1>&2
137    fi
138 }
139
140
141 mc() {
142    case "$SHELL" in
143       */bash)
144          MC_SAVE_OPS1="$OPS1"
145          OPS1="\u@\h "
146       ;;
147    esac
148
149    if [ -n "$SLOWTERM" ]; then
150       MC_SLOW="--slow"
151    fi
152
153    case "$TERM" in
154       screen*) # screen, screen.rxvt
155          if [ "$TERM" = screen.rxvt ]; then
156             MC_SAVE_TERM="$TERM"
157             TERM=rxvt
158          fi
159          MC_XTERM="-x"
160       ;;
161    esac
162
163    #TMPDIR="$HOME"/tmp
164    #export TMPDIR
165
166    MC_FOUND=NO
167
168    for wrapper in \
169          /usr/local/share/mc/bin/mc-wrapper.sh \
170          /usr/local/libexec/mc/mc-wrapper.sh \
171          /usr/share/mc/bin/mc-wrapper.sh; do
172       if [ -r $wrapper ]; then
173          . $wrapper $MC_SLOW $MC_XTERM "$@"
174          rc=$?
175          MC_FOUND=YES
176          break
177       fi
178    done
179
180    if [ $MC_FOUND = NO ]; then
181       for mc in /usr/local/bin/mc /usr/bin/mc; do
182          if [ -x $mc ]; then
183             MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER"
184             if [ ! -d MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER" ]; then
185                MC_TMP_DIR="${TMPDIR-/tmp}"
186             fi
187             MC_PWD_FILE="$MC_TMP_DIR/mc.pwd.$$"
188             mc_type="`mc_type.py $mc`"
189             if [ "$mc_type" = old ]; then
190                $mc -P $MC_SLOW $MC_XTERM "$@" > "$MC_PWD_FILE"
191             elif [ "$mc_type" = new ]; then
192                $mc -P "$MC_PWD_FILE" $MC_SLOW $MC_XTERM "$@"
193             else
194                continue
195             fi
196             rc=$?
197             MC_FOUND=YES
198             cd "`cat \"$MC_PWD_FILE\"`" && /bin/rm "$MC_PWD_FILE"
199             break
200          fi
201       done
202    fi
203
204    if [ $MC_FOUND = NO ]; then
205       echo "Cannot find mc-wrapper.sh or mc" >&2
206       rc=1
207    fi
208
209    [ -n "$MC_SAVE_OPS1" ] && OPS1="$MC_SAVE_OPS1"
210    [ -n "$MC_SAVE_TERM" ] && TERM="$MC_SAVE_TERM"
211    unset MC_FOUND MC_PWD_FILE MC_SAVE_OPS1 MC_SAVE_TERM \
212          MC_SLOW MC_TMP_DIR MC_XTERM
213
214    return $rc
215 }
216
217
218 mkcd() {
219    if [ $# -ne 1 ]; then
220       echo "Usage: mkcd directory_name" >&2
221    elif [ -d "$1" ]; then
222       cd "$1"
223    elif [ -e "$1" ]; then
224       echo "Error: $1 is a file" >&2
225    else
226       mkdir -p "$1" && cd "$1"
227    fi
228 }
229
230
231 tmux() {
232    case "$TERM" in
233       rxvt)
234          TERM=rxvt-unicode command tmux "$@"
235       ;;
236
237       *)
238          command tmux "$@"
239       ;;
240    esac
241 }