blob: 1491d8298679f2e8f32f9907a0c2a6a97fbb0ff9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# .bashrc
# Some minimal API expected by sourced files
# XXX: check for alias collision
_diralias () {
local target=$(echo $* | sed -s "s| |/|g")
test "$(pwd)" = "$(eval echo "$(dirs +1 2>/dev/null)")" && popd -n &>/dev/null
test "${target}" = "$(eval echo "$(dirs +0)")" || pushd "${target}" >/dev/null
pwd
}
diralias () {
alias "$(basename "$1")=_diralias $1"
# using loose depth from the beginning unnecessarily clutter the offer,
# so this way, albeit complicated, convenient traversal is achieved
# XXX could -G be used instead?
complete -o nospace -C \
"f(){ test \"\$3\" != \"$(basename "$1")\" || \
find \"${1%%* }/\${2%\${2##*/}}\" -mindepth 1 -maxdepth 1 -type d \
-name \"\${2##*/}*\" -printf \"\${2%\${2##*/}}%P\\n\"; }; f" \
"$(basename "$1")"
}
_linkalias () {
gnome-open "$(printf "$1" "${@:2}")"
}
linkalias () { alias "$1=_linkalias $2"; }
# Source the other common definitions
for f in /etc/bashrc ~/.bashrc-dotfiles ~/.bashrc-fedora ~/.bashrc-work ~/.bashrc-xml ~/.bashrc-priv; do
[ -f "${f}" ] && source "${f}" || :
done
# User specific aliases and functions
set -o vi
shopt -s histappend
HISTSIZE=60000
HISTCONTROL=ignoreboth
# subshell to avoid triggering DEBUG. (src: http://stuff.lhunath.com/.bashrc)
PROMPT_COMMAND='(history -a)'
PS1='\[\033[01;34m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
# http://ruslanspivak.com/2010/11/25/bash-history-incremental-search-forward/
stty stop ^X
# op(t)inioned commands
alias tree='tree -a'
alias mc='LESS="-RSX" mc'
alias tmux='tmux -2'
alias acka='ack -a --follow'
# internal, debug, etc.
alias hist-del-last='history -d $(history 1 | cut -d" " -f2)' # historical NOOP
alias int-usage='echo "usage: $FUNCNAME "'
# dir aliases (use either as "gmy" or "cd $(gmy)" or, e.g., "gmy dotfiles")
diralias ~/wrkspc
diralias ~/wrkspc/gmy
diralias ~/wrkspc/gwork
# internal, debug, etc.
debug-argsep () {
while [ $# -ne 0 ]; do
echo $1;
shift
done
}
# proper functions
cdup () {
local up="."
for i in $(seq 1 $1); do up+="/.."; done
cd "${up}" 2>/dev/null && pwd || :
unset up
}
cdmk () {
cd "$1" 2>/dev/null || { mkdir "$1"; cd "$1";}
}
# Jim Meyring's take on "display the programs with W and X memory"
# http://lists.fedoraproject.org/pipermail/devel/2013-April/181747.html
sec-wx-mem () {
grep -lE '^[0-9a-f-]+ .wx' /proc/*/maps 2>/dev/null \
| perl -ne 'm!^(/proc/(\d+))/.*! and printf qq(%5d %s\n), $2, `cat $1/cmdline`' \
| tr '\0' ' '
}
ack-intersection () {
[ $# -ne 2 ] && int-usage "1st-regexp" "2nd-regexp" && return
comm <(ack -al --follow "$1" | sort) <(ack -al --follow "$2" | sort) -12
}
hist-grep () {
hist-del-last # omit hist-grep invocation
grep $* -- ~/.bash_history
}
img-diff () {
[ $# -ne 2 ] && int-usage "1st-img" "2nd-img" && return
#xloadimage <(gm compare "$1" "$2" -highlight-color red -highlight-style threshold -file -)
#xloadimage <(compare "$1" "$2" -highlight-color violet -lowlight-color darkgray -compose threshold -)
#xloadimage <(compare "$1" "$2" -highlight-color violet -lowlight-color darkgray \
# -compose threshold jpg:- | convert jpg:- -fuzz 2% -fill red -opaque '#915e99' png:-)
xloadimage <(compare "$1" "$2" -highlight-color violet -lowlight-color darkgray -compose threshold -)
}
img-qr () {
local title="Piped: "
[ $# -ge 1 ] \
&& { input="$1"; title="$1"; } \
|| { input=$(</dev/stdin); title+="$(echo "${input}" | head -n1)"; }
xloadimage -fit -shrink -title "${title}" <(qrencode -m0 -s40 -o- "${input}" )
}
|