summaryrefslogtreecommitdiff
path: root/.bashrc
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2024-11-27 10:41:40 +0200
committerKamen Mladenov <kamen@syndamia.com>2024-11-27 10:41:40 +0200
commit174251ce062e87d792c4c414c4d60f67ed5bec54 (patch)
tree04cb09fc939555c70cc98fe3f3deaf04986917c5 /.bashrc
parent6baa13f6f8ab74fc935baf11865879bb26eddfd6 (diff)
downloaddotfiles-174251ce062e87d792c4c414c4d60f67ed5bec54.tar
dotfiles-174251ce062e87d792c4c414c4d60f67ed5bec54.tar.gz
dotfiles-174251ce062e87d792c4c414c4d60f67ed5bec54.zip
feat(bash): Implement forward directory naviagation
Diffstat (limited to '.bashrc')
-rw-r--r--.bashrc11
1 files changed, 10 insertions, 1 deletions
diff --git a/.bashrc b/.bashrc
index 1b72e84..3a99ecc 100644
--- a/.bashrc
+++ b/.bashrc
@@ -218,11 +218,20 @@
builtin pushd "${1:-$HOME}" >/dev/null
}
popd() {
+ ___dirchanged="$PWD"
+ builtin popd >/dev/null 2>&1 && forward_dirs[${#forward_dirs[@]}]="$___dirchanged" || builtin popd +1
+ }
+ # Huge thanks to: https://tldp.org/LDP/abs/html/arrays.html#EMPTYARRAY
+ repushd() {
___dirchanged="y"
- builtin popd >/dev/null 2>&1 || builtin popd +1
+ [ "${#forward_dirs[@]}" -eq 0 ] && echo "bash: repushd: forward directory stack empty" && return 1
+
+ builtin pushd "${forward_dirs[${#forward_dirs[@]}-1]:-$HOME}" >/dev/null
+ unset forward_dirs[${#forward_dirs[@]}-1]
}
alias cd="pushd" # change directory
alias bd="popd" # back directory
+ alias fd="repushd"
# }}}
# Processes {{{