X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=bash-selector.sh;h=661d4f0215da4feff9aea7ad38d7d65f021567d3;hb=d611b4c925dfabc7427a9e161c30b97575d1acd1;hp=ac094c82ff23d84e071f864d1bcc1dd9acd6c275;hpb=496ff801c25b7be6c45b97e141f4890809f4fd08;p=selector.git diff --git a/bash-selector.sh b/bash-selector.sh index ac094c8..661d4f0 100755 --- a/bash-selector.sh +++ b/bash-selector.sh @@ -20,14 +20,14 @@ # You should have received a copy of the GNU General Public License # along with selector. If not, see . -# This script installs two key-bindings: +# This bash script adds two key bindings: # -# Alt-r for selector-based command history +# Alt-r to access a selector-based command history # -# Alt-c for selector-based directoy history +# Alt-c to access a selector-based directory history # # Note that you have to call it with "source bash-selector.sh" -# otherwise the key-bindings will not be effective in your current +# otherwise the key bindings will not be effective in your current # bash if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then @@ -61,6 +61,7 @@ export SELECTOR_CD_HISTORY_SIZE # The function to use in place of the standard "cd" function selector-cd () { + local UMASK=$(umask) umask 077 if [[ -z "$1" ]]; then @@ -71,15 +72,17 @@ function selector-cd () { if [[ -f "${SELECTOR_CD_HISTORY}" ]]; then TMP=$(mktemp /tmp/selector-cd.XXXXXX) - tail -$((SELECTOR_CD_HISTORY_SIZE-1)) < "${SELECTOR_CD_HISTORY}" > "${TMP}" - cat "${TMP}" > "${SELECTOR_CD_HISTORY}" - rm -f "${TMP}" + tail -$((SELECTOR_CD_HISTORY_SIZE-1)) < "${SELECTOR_CD_HISTORY}" >| "${TMP}" && \ + cat "${TMP}" >| "${SELECTOR_CD_HISTORY}" + \rm -f "${TMP}" fi echo "${PWD}" | sed -e "s!^${HOME}!~!" >> "${SELECTOR_CD_HISTORY}" + umask ${UMASK} } function selector-cd-search () { + local UMASK=$(umask) umask 077 if [[ -f "${SELECTOR_CD_HISTORY}" ]]; then @@ -93,16 +96,17 @@ function selector-cd-search () { else echo "No cd history file '${SELECTOR_CD_HISTORY}'." >&2 fi + umask ${UMASK} } alias cd=selector-cd ###################################################################### -# The key-bindings themselves +# The key bindings themselves ###################################################################### - # M-t appends the selected history line and the end of the current - # one bind '"\C-[t":"\C-a\C-kselector-history\C-m\C-a\C-y\C-e"' +# M-t appends the selected history line and the end of the current +# one bind '"\C-[t":"\C-a\C-kselector-history\C-m\C-a\C-y\C-e"' if [[ "$1" ]]; then @@ -131,9 +135,9 @@ if [[ "$1" ]]; then else - echo "source bash-selector.sh <--hist|--cd> [...]" + echo "source bash-selector.sh [--hist] [--cd]" echo - echo "Defines bash functions, and installs key-bindings and aliases to use selector" + echo "Defines bash functions, and installs key bindings and aliases to use selector" echo "for history search with M-r and/or intelligent cd history with M-c." fi