-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctions.sh
More file actions
49 lines (44 loc) · 965 Bytes
/
functions.sh
File metadata and controls
49 lines (44 loc) · 965 Bytes
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
function dir_menu {
res=($(ls -td $1/*/ | head -40))
len=${#res[@]}
for i in $(seq $len); do
echo $i ${res[$(($i-1))]} $i
done
echo 'q quit'
read -p 'selection: ' i
if [[ "$i" -eq 'q' ]]; then
return
fi
cd ${res[$(($i-1))]}
}
# examples
# alias d='dir_menu ~/dev'
# alias n='dir_menu ~/projects/notebooks'
function file_menu {
res=($(ls -t $1/* | head -40))
len=${#res[@]}
for i in $(seq $len); do
echo $i ${res[$(($i-1))]} $i
done
echo 'q quit'
read -p 'selection: ' i
if [[ "$i" -eq 'q' ]]; then
return
fi
filename=${res[$(($i-1))]}
dir=$(dirname $filename)
filename=$(basename $filename)
cd $dir
vi $filename
cd -
}
function assert_defined {
var=$1
if [ -z ${!var+x} ]; then
echo "$var is unset"
else
echo "$var is set to '${!var}'"
fi
}
# examples
# alias no='file_menu ~/projects/notes.hugo/content/post'