Directory aliases and quick directory navigation

`diralias` allows you to map a symbolic name to an absolute path.

`j` takes an alias name, and jumps (cd) to it.
This commit is contained in:
Adolfo Perez Alvarez 2022-05-25 16:04:40 +02:00
parent 9cffb845c4
commit 7d2f340758
2 changed files with 49 additions and 0 deletions

35
diralias Normal file
View File

@ -0,0 +1,35 @@
#!/bin/ksh
diralias()
{
typeset -i i
case $# in
0)
let i=0
while (( i < ${#DIRALIASNAM[@]} ))
do
printf "%s\t%s\n" ${DIRALIASNAM[i]} "${DIRALIASVAL[i]}"
let i++
done
;;
1)
let i=0
while [[ i -lt ${#DIRALIASNAM[@]} && $1 != ${DIRALIASNAM[i]} ]]
do
let i++
done
(( i == ${#DIRALIASNAM[@]} )) && echo $1 || echo ${DIRALIASVAL[i]}
;;
2)
let i=0
while [[ i -lt ${#DIRALIASNAM[@]} && $1 != ${DIRALIASNAM[i]} ]]
do
let i++
done
DIRALIASNAM[i]=$1
DIRALIASVAL[i]="$2"
;;
*)
exit 64
;;
esac
}

14
j Normal file
View File

@ -0,0 +1,14 @@
#!/bin/ksh
j()
{
local da
da=$(diralias $1)
if echo $da | grep '^!' >/dev/null
then
if ! da=$(eval $(echo "$da" | sed 's/^!//') 2>/dev/null)
then
return 65
fi
fi
'cd' "$da"
}