2a63b88b60778b1d8f7de8c3f518dd5df6f23f78
[shellsnippets/shellsnippets.git] / posix / profile-funcs
1 # Copyright (c) 2011, 2012
2 #       Thorsten Glaser <tg@mirbsd.org>
3 #
4 # Provided that these terms and disclaimer and all copyright notices
5 # are retained or reproduced in an accompanying document, permission
6 # is granted to deal in this work without restriction, including un-
7 # limited rights to use, publicly perform, distribute, sell, modify,
8 # merge, give away, or sublicence.
9 #
10 # This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
11 # the utmost extent permitted by applicable law, neither express nor
12 # implied; without malicious intent or gross negligence. In no event
13 # may a licensor, author or contributor be held liable for indirect,
14 # direct, other damage, loss, or other issues arising in any way out
15 # of dealing in the work, even if advised of the possibility of such
16 # damage or existence of a defect, except proven that it results out
17 # of said person's immediate fault when using the work as intended.
18 #-
19 # Collection of functions for ~/.profile or similar. POSIX shell, or
20 # compatible, required; workarounds for older shells' bugs included.
21 # Support of 'local' and 'echo -n' required.
22
23 # convenience
24 test -n "$BASH_VERSION" && shopt -s extglob
25
26 # speedup
27 test -n "$KSH_VERSION" && alias which='whence -p'
28
29 # clear screen
30 cls() {
31         local esc='\e'
32
33         echo -n "${esc}c"
34 }
35 # clear screen, kill ssh-agent, logout
36 bye() {
37         local M='\e'
38         M=${M}c
39
40         if test x"$1" = x"k"; then
41                 ssh-agent -k || M="$M Warning: ssh-agent returned error!
42 "
43         fi
44         echo -n "$M"
45         exit 0
46         logout
47 }
48
49 # date -R (RFC 2822)
50 dateR() {
51         date +"%a, %d %b %Y %H:%M:%S %z" "$@"
52 }
53
54 # print disc free stats in a more handy format for terminals
55 # wider than 80 columns, but deal well with LVM
56 df() {
57         command df -P "$@" | sed 's/Mounted on/Mountpoint/' | column -t
58 }
59
60 # various web-calling things
61
62 # pipe into pastebin
63 sprunge() {
64         curl -F 'sprunge=<-' http://sprunge.us
65 }
66
67 # DuckDuckGo search
68 ddg() {
69         ${BROWSER:-lynx} "https://duckduckgo.com/?kp=-1&kl=wt-wt&kb=t&kh=1&kj=g2&km=l&ka=monospace&ku=1&ko=s&k1=-1&kv=1&t=debian&q=$*"
70 }
71
72 # GooGle Search
73 ggs() {
74         ${BROWSER:-lynx} "http://www.google.com/search?hl=la&pws=0&num=100&safe=off&q=$*"
75 }
76 # Google GRoups
77 ggr() {
78         ${BROWSER:-lynx} "http://groups.google.com/groups?hl=la&pws=0&num=100&safe=off&as_umsgid=$*"
79 }
80
81 # dict.leo.org German English
82 ge() {
83         ${BROWSER:-lynx} "http://dict.leo.org/?search=$*"
84 }
85 # dict.leo.org German FRench
86 gfr() {
87         ${BROWSER:-lynx} "http://dict.leo.org/frde?search=$*"
88 }
89 # dict.leo.org German ESpa~nol
90 ges() {
91         ${BROWSER:-lynx} "http://dict.leo.org/esde?search=$*"
92 }
93 # explica palabras en espa~nol
94 espanol() {
95         lynx -dump --nolist "http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&LEMA=$*"
96 }
97
98 # call xloadimage by URI
99 if /usr/bin/ftp -h 2>&1 | fgrep http:// >/dev/null 2>&1; then
100         loadfile() {
101                 /usr/bin/ftp -Vo - "$@"
102         }
103 elif which curl >/dev/null 2>&1; then
104         loadfile() {
105                 curl "$@"
106         }
107 elif which wget >/dev/null 2>&1; then
108         loadfile() {
109                 wget -qO - "$@"
110         }
111 else
112         loadfile() {
113                 fetch -o - "$@"
114         }
115 fi
116 loadimage() {
117         local f
118
119         for f in "$@"; do
120                 if test -s "$f"; then
121                         xloadimage "$f"
122                 else
123                         loadfile "$f" | xloadimage stdin
124                 fi
125         done
126 }
127
128 # man with gnroff on MirPorts
129 gman() {
130         man -C /usr/mpkg/share/groff/man_utf8.conf "$@"
131 }
132
133 # hexdump -C in look-better
134 which hd >/dev/null 2>&1 || hd() {
135         hexdump -e '"%08.8_ax  " 8/1 "%02X " " - " 8/1 "%02X "' \
136             -e '"  |" "%_p"' -e '"|\n"' "$@"
137 }
138
139 # rot13 for those who do not have it
140 which rot13 >/dev/null 2>&1 || rot13() {
141         tr \
142             abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \
143             nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM
144 }
145
146 # csh like setenv
147 setenv() {
148         eval $1=\$2
149         eval export $1
150 }