From 496ff801c25b7be6c45b97e141f4890809f4fd08 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Sat, 18 Oct 2014 12:25:31 +0200 Subject: [PATCH] Cosmetics + a bit of paranoia regarding the created files. --- bash-selector.sh | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/bash-selector.sh b/bash-selector.sh index 05bd892..ac094c8 100755 --- a/bash-selector.sh +++ b/bash-selector.sh @@ -47,44 +47,51 @@ function selector-history () { # Selector-based directory history ###################################################################### -# The file where we will keep track of the directories +# The file where we will keep track of the directories and how many +# lines to keep in there export SELECTOR_CD_HISTORY [[ "${SELECTOR_CD_HISTORY}" ]] || SELECTOR_CD_HISTORY=${HOME}/.selector-cd-history -# The function to use in place of the standard "cd" +export SELECTOR_CD_HISTORY_SIZE [[ "${SELECTOR_CD_HISTORY_SIZE}" ]] || SELECTOR_CD_HISTORY_SIZE=1000 +# The function to use in place of the standard "cd" + function selector-cd () { + umask 077 + if [[ -z "$1" ]]; then cd else cd "$@" fi - if [[ -f ${SELECTOR_CD_HISTORY} ]]; then + 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} + echo "${PWD}" | sed -e "s!^${HOME}!~!" >> "${SELECTOR_CD_HISTORY}" } function selector-cd-search () { - if [[ -f ${SELECTOR_CD_HISTORY} ]]; then + umask 077 + + if [[ -f "${SELECTOR_CD_HISTORY}" ]]; then PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX) - selector -j -y -u -t "cd" -l ${SELECTOR_CD_HISTORY_SIZE} -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY} - NEW_PATH="$(cat ${PATH_TEMP} | sed -e 's!~!'${HOME}'!')" + selector -j -y -u -t "cd" -l "${SELECTOR_CD_HISTORY_SIZE}" -d -i -c 7,2,0,3 -o "${PATH_TEMP}" -q "${SELECTOR_CD_HISTORY}" + NEW_PATH="$(cat "${PATH_TEMP}" | sed -e 's!~!'${HOME}'!')" if [[ -d "${NEW_PATH}" ]]; then - selector-cd "$(cat ${PATH_TEMP} | sed -e 's!^~!'${HOME}'!')" + selector-cd "$(cat "${PATH_TEMP}" | sed -e 's!^~!'${HOME}'!')" fi - \rm ${PATH_TEMP} + \rm "${PATH_TEMP}" else - echo "No cd history file ${SELECTOR_CD_HISTORY}." >&2 + echo "No cd history file '${SELECTOR_CD_HISTORY}'." >&2 fi } -- 2.39.5