-
Notifications
You must be signed in to change notification settings - Fork 1
/
.alias_ext
46 lines (43 loc) · 1.55 KB
/
.alias_ext
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
docker_run()
{
# Here we capture the last argument which is the docker image name FIXME May be not the last one
local img="${!#}"
# local args=("${@:1:$#-1}")
set -- "${@:1:$#-1}"
docker run --rm -it -u $(id -u):$(id -g) -v"$HOME":"$HOME":ro -v"$PWD":"$PWD" -w"$PWD" -e DOCKER=1 -h "$img" "$@" "$img"
}
alias dr=docker_run
tzs()
{
local CLEVEL=${ZSTD_CLEVEL:-12}
if type pv >&/dev/null; then
tar -cpP "${1%/}" | pv -s $(du -sk "${1%/}" | cut -f1)K | zstd -${CLEVEL:-3} -T0 > "${1%/}.tar.zst"
else
tar -cpP "$1" | zstd -${CLEVEL:-3} -T0 > "$1.tar.zst"
fi
}
filext() {
filename="${1##*/}" # Strip longest match of */ from start
dir="${fullpath%$filename}" # Substring from 0 thru pos of filename
base="${filename%.[^.]*}" # Strip shortest match of . plus at least one non-dot char from end
ext="${filename:${#base} + 1}" # Substring from len of base thru end
if [[ -z "$base" && -n "$ext" ]]; then # If we have an extension and no base, it's really the base
base=".$ext"
ext=""
fi
echo "$ext"
# echo -e "$fullpath:\n\tdir = \"$dir\"\n\tbase = \"$base\"\n\text = \"$ext\""
}
git_find_blob() {
obj_name="$1"
shift
git log "$@" --pretty=tformat:'%T %h %s' \
| while read tree commit subject ; do
if git ls-tree -r $tree | grep -q "$obj_name" ; then
echo $commit "$subject"
# print branches containing the blob / commit
git branch -a --contains $commit
fi
done
}
alias git-find=git_find_blob