-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.functions
107 lines (93 loc) · 2.8 KB
/
.functions
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
# Create a new directory and enter it
function md() {
mkdir -p "$@" && cd "$@"
}
# `sublthis` with no arguments opens the current directory in Sublime Text,
# otherwise opens the given location
function sublthis() {
if [ $# -eq 0 ]; then
subl .;
else
subl "$@";
fi;
}
# Run `dig` and display the most useful info
function digga() {
dig +nocmd "$1" any +multiline +noall +answer;
}
# `tre` is a shorthand for `tree` with hidden files and color enabled, ignoring
# the `.git` directory, listing directories first. The output gets piped into
# `less` with options to preserve color and line numbers, unless the output is
# small enough for one screen.
function tre() {
tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
}
# blast me with all 256 colors
colorblast () {
( x=`tput op` y=`printf %$((${COLUMNS}-6))s`;
for i in {0..256}; do
o=00$i;
echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;
done )
}
# Create a .tar.gz archive, using `zopfli`, `pigz` or `gzip` for compression
function targz() {
local tmpFile="${@%/}.tar";
tar -cvf "${tmpFile}" --exclude=".DS_Store" "${@}" || return 1;
size=$(
stat -f"%z" "${tmpFile}" 2> /dev/null; # OS X `stat`
stat -c"%s" "${tmpFile}" 2> /dev/null # GNU `stat`
);
local cmd="";
if (( size < 52428800 )) && hash zopfli 2> /dev/null; then
# the .tar file is smaller than 50 MB and Zopfli is available; use it
cmd="zopfli";
else
if hash pigz 2> /dev/null; then
cmd="pigz";
else
cmd="gzip";
fi;
fi;
echo "Compressing .tar using \`${cmd}\`…";
"${cmd}" -v "${tmpFile}" || return 1;
[ -f "${tmpFile}" ] && rm "${tmpFile}";
echo "${tmpFile}.gz created successfully.";
}
# Use Git’s colored diff when available
hash git &>/dev/null;
if [ $? -eq 0 ]; then
function diff() {
git diff --no-index --color-words "$@";
}
fi;
# Syntax highlight JSON strings or files
# Better version since it can actually accept valid files
# Usage: json filename.json OR json '{"foo":"bar"}' OR echo '{"foo":"bar"}' | json
function json() {
# file
if [ -e "$*" ]; then
python -mjson.tool $* | pygmentize -l json;
# pipe
elif [ -p /dev/stdin ]; then
python -mjson.tool | pygmentize -l json;
# string
else
python -mjson.tool <<< "$*" | pygmentize -l json;
fi;
}
# Automatically pygmentize 'more' output
function moar() {
local file=$1;
local ext=${file##*.};
# if it’s a dotfile, treat it as shell script
if [[ $file == .* ]]; then
more $file | pygmentize -l sh;
# if a lexer exists for the file ext, use that
elif pygmentize -L lexers | grep -q "\.${ext}"; then
more $file | pygmentize -l $ext;
# otherwise just let pygmentize figure it out
else
more $file | pygmentize;
fi;
}