summaryrefslogtreecommitdiff
path: root/.config/bash/rc.d/10_aliases.sh
blob: f34230ba059da11ea0eca7e51d2b460c9632b69f (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
120
#!/hint/bash

######################################################################
# Set up colors and settings for all the things                      #
######################################################################
if [ -x "`which dircolors`" ]; then
	eval "$(dircolors -p | cat - "${XDG_CONFIG_HOME}/dir_colors" |
		dircolors -b -)"
	alias ls='ls -1v --color=auto'
	alias dir='dir -v --color=auto'
	alias vdir='vdir -v --color=auto'

	for xgrep in ${PATH//:/\/*grep }/*grep; do
		if [ -f "$xgrep" ]; then
			xgrep=$(basename "$xgrep")
			if [ "$xgrep" != pgrep ]; then
				alias $xgrep="$xgrep --color=auto"
			fi
		fi
	done
	unset xgrep

	wdiff() {
		if [[ -t 1 ]]; then
			local red="$(tput setaf 1)"
			local blue="$(tput setaf 4)"
			local bold="$(tput bold)" 
			local reset="$(tput sgr0)"
			command wdiff \
				-w "$bold$red[-" \
				-x "-]$reset" \
				-y "$bold$blue{+" \
				-z "+}$reset" "$@"
		else
			command wdiff "$@"
		fi
	}

	diff() {
		if [[ -t 1 ]]; then
			(
				set -o pipefail
				command diff "$@" | colordiff
			)
		else
			command diff "$@"
		fi
	}
else
	alias ls='ls -1v'
	alias dir='dir -v'
	alias vdir='vdir -v'
fi

######################################################################
# Set up the standard aliases for ls                                 #
######################################################################
alias ll='ls -l'
alias la='ls -a'
alias l='ls -CF'

######################################################################
# Some preferences for miscellaneous stuff                           #
######################################################################
#alias rm='gvfs-trash'
#alias sed='sed --follow-symlinks' # breaks operating on stdio in GNU sed 4.2.2
alias tree='tree --charset utf8'
alias cd=pushd
alias gitk='gitk --all --date-order'
alias userctl='systemctl --user'
alias mv='mv -i'

######################################################################
# These are actually functions :P                                    #
######################################################################
term-title() {
	local fmt=''
	case "$TERM" in
		screen|tmux) fmt='\ek%s\e\\';;
		xterm*|rxvt*) fmt='\e]0;%s\a';;
	esac
	printf "$fmt" "$*"
}
mvln() {
	local target link
	if [[ ! -L "$1" ]]; then
		libremessages error 'Not a soft link: %s' "$1"
		return 1
	fi
	if [[ -d "$2" ]]; then
		link="$2/${1##*/}"
	else
		link="$2"
	fi
	target=$(readlink -f -- "$1") || return 1
	ln -srT -- "$target" "$link"
	if cmp -- "$1" "$link"; then
		rm -f -- "$1"
	else
		libremessages error 'Failed moving link: %s -> %s' "$1" "$link"
		return 1
	fi
}
jarls() {
	jar tf "$1" |
	    sed -n 's/\.class$//p' |
	    LC_ALL=C sort |
	    xargs -r -d $'\n' javap -classpath "$1"
}
tarls() {
	local file
	for file in "$@"; do
		bsdtar tf "$file" | sed "s|^|$file:|"
	done
}
jarmain() {
	jarls "$1" 2>/dev/null |
	    grep -E '(^[a-z]|public static void main\(java\.lang\.String\[\]\))' |
	    grep -B1 '^ '
}