summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 {{{