X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=scripts.git;a=blobdiff_plain;f=bashrc;h=5066b31279fe15c052e62282d8d71c953db6947d;hp=cb98ffa989b7737ef22149af1ec80ec77853a34a;hb=c4d6a634221e8835fc27e3f0f3aded2d7a49a9fd;hpb=2ef9154eec1d4732fc9bbad47b66f48854fa3ce6 diff --git a/bashrc b/bashrc index cb98ffa..5066b31 100644 --- a/bashrc +++ b/bashrc @@ -23,11 +23,11 @@ PRIVATE_BASHRC="${HOME}/private/bashrc.perso" # If the MANPATH is not set, set it -[ "${MANPATH}" ] || MANPATH=$(manpath) +[[ "${MANPATH}" ]] || MANPATH=$(manpath) # If the private bashrc exists, execute it -[ -f "${PRIVATE_BASHRC}" ] && source "${PRIVATE_BASHRC}" +[[ -f "${PRIVATE_BASHRC}" ]] && source "${PRIVATE_BASHRC}" # !!! THIS HAS TO BE HERE EVEN IN THE NON-INTERACTIVE PART OR YOU WILL # LOSE YOU PREVIOUS HISTORY !!! @@ -52,7 +52,9 @@ shopt -s histappend # Remove the annoying beeps in console -setterm -blength 0 +# setterm -blength 0 + +# || setterm --blength 0 # Seriously? ###################################################################### ## The interactive part @@ -90,6 +92,10 @@ export LESS_TERMCAP_ue=${VT_RESET} export LESS_TERMCAP_md=${VT_BLUE_FG}${VT_BOLD} export LESS_TERMCAP_me=${VT_RESET} +# I do not like to clutter my home with history files + +export LESSHISTFILE=/dev/null + # export LESS_TERMCAP_md=$'\e[1;34;40m' # This prevents ^S from freezing the shell @@ -115,12 +121,21 @@ alias pd=pushd alias val='valgrind --leak-check=full --show-reachable=yes --db-attach=yes ' alias s='screen -d -R -U && clear' +alias p='feh --force-aliasing -d --full-screen --auto-zoom' function nh () { export HISTFILE=/dev/null unalias cd } +function select-tz () { + # Select a value for TZ + TMP=$(mktemp /tmp/select-tz.XXXXXX) + selector -o "${TMP}" <(grep -v ^# /usr/share/zoneinfo/zone.tab | awk '{print $3}' | sort -u) + cat "${TMP}" + \rm -f "${TMP}" +} + function ding () { if [[ $1 ]] && which winshepherd.sh; then play -q ~/local/sounds/deskbell.wav & @@ -161,14 +176,16 @@ function latexdiff () { wdiff -n \ -w $'\033[30;41m' -x $'\033[0m' \ -y $'\033[30;42m' -z $'\033[0m' \ - $* + "$@" } # Looks for the most recent .log and pdflatex + bibtex the # corresponding tex file function rl () { - RECENT_LOG=$(ls -t $(find -maxdepth 1 -name "*.log" -type f) | head -1) + # RECENT_LOG=$(ls -t $(find -maxdepth 1 -name "*.log" -type f) | head -1) + + RECENT_LOG=$(ls -t *.log | head -1) if [[ ${RECENT_LOG} ]]; then FILEBASE="${RECENT_LOG/.log/}" @@ -238,10 +255,49 @@ function bak () { done } -# Password generator +function scan () { + n=1 + + while [[ -f "${HOME}/scan-${n}.jpg" ]]; do + n=$((n+1)) + done + + while [[ "$1" ]]; do + if [[ "$1" == "color" ]]; then + OPTS+=" --mode Color" + elif [[ "$1" == "gray" ]]; then + OPTS+=" --mode Gray" + elif [[ "$1" == "a4crop" ]]; then + OPTS+=" -l 5 -t 0 -x 200 -y 290" + else + echo "Unknown argument \`$1'" + fi + shift + done + + echo "**" + echo "** Scanning to ${HOME}/scan-${n}.jpg" + echo "**" + + SCANNER=$(scanimage -L | grep "Canon LiDE 60" | sed -e "s/^.*\`\(.*\)'.*$/\1/") + + scanimage -d ${SCANNER} \ + --format=pnm \ + --mode=color \ + --depth=8 \ + -v \ + --resolution=300 \ + ${OPTS} | \ + convert -rotate 180 - "${HOME}/scan-${n}.jpg" + + echo "** Done". +} + +# A password generator -function pwgen () { +function genpw () { tr -dc A-Za-z0-9 < /dev/urandom | head -c16 + # tr -dc [:graph:] < /dev/urandom | head -c16 echo } @@ -321,9 +377,10 @@ function cdt () { } alias t='cd /tmp' +alias a='cd /tmp/at' function trash () { - TRASH=$(date +/tmp/trash-%Y-%b-%d-%Hh) + TRASH=$(date +/tmp/trash-${USER}-%Y-%b-%d-%Hh) LINK=/tmp/trash mkdir -p ${TRASH} @@ -362,11 +419,9 @@ function pho () { ## A version of date that shows the time at home if TZ is set function dt () { - echo "Local: $(date)" - if [[ ${TZ} ]]; then - unset TZ - echo "Home: $(date)" - fi + echo "Local - $(date)" + unset TZ + echo "Home - $(date)" } ###################################################################### @@ -517,8 +572,8 @@ KEPT_COMMANDS=${HOME}/.kept_bash_commands function keep () { if [[ ${KEPT_COMMANDS} ]]; then TOKEEP=$(mktemp /tmp/keep.XXXXXX) - if [[ "$*" ]]; then - echo "$*" > ${TOKEEP} + if [[ "$@" ]]; then + echo "$@" > ${TOKEEP} else selector -b -i -d -l ${HISTSIZE} -o "${TOKEEP}" <(history) fi @@ -540,12 +595,12 @@ function keep () { # I sometime burn CDs and DVDs function burn () { - DEVICE="/dev/cdrw1" + [[ "${DEV_BURNER}" ]] || DEV_BURNER="/dev/sr0" if [[ ! "$1" ]]; then echo "burn " >&2 elif [[ -f "$1" ]]; then if [[ $(file "$1" | \grep -E 'ISO 9660|UDF filesystem data') ]]; then - wodim -eject -v dev=${DEVICE} "$1" + wodim -eject -v dev=${DEV_BURNER} "$1" else echo "Do not know what to do with $1" >&2 fi @@ -554,7 +609,7 @@ function burn () { echo "Using ${TMP_ROOT} as temporary directory." TMP=$(mktemp ${TMP_ROOT}/cdimage.XXXXXX) && \ genisoimage -input-charset iso8859-1 -r -o ${TMP} "$1" && \ - wodim -eject -v dev=${DEVICE} ${TMP} + wodim -eject -v dev=${DEV_BURNER} ${TMP} rm -f ${TMP} else echo "Can not find $1" >&2 @@ -613,7 +668,7 @@ function ripdvd () { mkdir -p ${HOME}/dvds cd ${HOME}/dvds - time dvdbackup -i ${DVD_DEVICE} -v -M $* && eject + time dvdbackup -i ${DVD_DEVICE} -v -M "$@" && eject } alias ripcd=abcde @@ -623,7 +678,13 @@ alias ripcd=abcde function mksmall () { - [[ "${PARAMS}" ]] || PARAMS="-geometry 800x600" + if [[ "$1" == "--params" ]]; then + shift + PARAMS="$1" + shift + fi + + [[ "${PARAMS}" ]] || PARAMS="-geometry 1280x1024" # Auto-orient does not seem to work at all, hence the ugly hack # with exif below @@ -690,7 +751,9 @@ function mvtoconfig () { export PS1 if [[ "${CONSOLE}" == "yes" ]]; then + PS1="" + else # If the login is a standard one (as specified in @@ -725,6 +788,8 @@ else fi +PS1="${PSCUE}${PS1}" + ###################################################################### # This implements a local history. If we are in a directory containing # a writable local history file, we add the last line of the global @@ -750,7 +815,7 @@ function keep_local_history () { PS1="\[${VT_WHITE_BG}\]\${LOCAL_HISTORY_HINT}\[${VT_RESET}\]${PS1}" ###################################################################### -# Switch off the history +# Show the history path if it is unusual function histfile_cue () { if [[ ! "${HISTFILE}" == "${HOME}/.bash_history" ]]; then @@ -781,6 +846,8 @@ alias finddup='finddup -p' # # git clone http://fleuret.org/git/selector/ +export SELECTOR_CD_HISTORY_SIZE=10000 + source bash-selector.sh --hist --cd ###################################################################### @@ -805,11 +872,11 @@ function selector-printer () { # the current directory function lsn () { - LSN_MEMORY=".lsn-state" + [[ "${LSN_STATE_FILE}" ]] || LSN_STATE_FILE=".lsn-state" if [[ $1 == "--mem" ]] || [[ "$1" == "-m" ]]; then - \ls -pa | sort > ${LSN_MEMORY} + \ls -pa | sort > "${LSN_STATE_FILE}" echo "State updated." >&2 elif [[ $1 == "+" ]]; then @@ -817,32 +884,49 @@ function lsn () { shift TMP=$(mktemp /tmp/lsn.XXXXXX) - \ls -d $* > ${TMP} - cat ${LSN_MEMORY} >> ${TMP} - sort -u ${TMP} > ${LSN_MEMORY} + \ls -d "$@" > ${TMP} + cat "${LSN_STATE_FILE}" >> ${TMP} + sort ${TMP} | uniq -u > "${LSN_STATE_FILE}" \rm ${TMP} elif [[ "$1" ]]; then + cat >&2 < ...] - echo "lsn [--mem|-m] [+ ...]" >&2 - return 1 +Where + + --help|-h + prints this help + + --mem|-m + stores the current state of the directory + + + [ ...] + switches the presence/absence of the indicated files in the + stored state + +EOF + if [[ ! "$1" == "-h" ]] && [[ ! "$1" == "--help" ]]; then + echo >&2 "Unknown option \`\`$1''." + return 1 + fi else - if [[ -f ${LSN_MEMORY} ]]; then + if [[ -f "${LSN_STATE_FILE}" ]]; then TMP=$(mktemp /tmp/lsn.XXXXXX) \ls -pa | sort > ${TMP} - if diff > /dev/null ${TMP} ${LSN_MEMORY}; then - echo "${VT_GREEN_FG}${VT_BOLD}No change (since $(date +"%b %d, %Y" -r ${LSN_MEMORY}))${VT_RESET}" + if diff > /dev/null ${TMP} "${LSN_STATE_FILE}"; then + echo "${VT_GREEN_FG}${VT_BOLD}No change (since $(date +"%b %d, %Y" -r "${LSN_STATE_FILE}"))${VT_RESET}" else - \comm -1 -3 ${LSN_MEMORY} ${TMP} - \comm -2 -3 ${LSN_MEMORY} ${TMP} | while read line; do + \comm -1 -3 "${LSN_STATE_FILE}" ${TMP} + \comm -2 -3 "${LSN_STATE_FILE}" ${TMP} | while read line; do echo "${VT_RED_FG}${VT_BOLD}${line}${VT_RESET} (missing)" done fi \rm ${TMP} else - echo "No lsn state here." >&2 + echo "${VT_RED_FG}${VT_BOLD}No lsn state here.${VT_RESET}" >&2 return 1 fi @@ -852,6 +936,14 @@ function lsn () { ###################################################################### function prompt_command () { + # if [[ ! "${CORE_CHECK_PWD}" == ${PWD} ]] && [[ $(find . -maxdepth 1 -name "core__*" -print -quit) ]]; then + + [[ "${CORE_CHECK_PWD}" == ${PWD} ]] || find . -maxdepth 1 -name "core__*" + CORE_CHECK_PWD=${PWD} + + # if [[ $(umask) != 0022 ]]; then + # echo "Umask changed to $(umask)" + # fi # save the history after every command to avoid loosing some when # multiple shells are open history -a @@ -869,8 +961,6 @@ PROMPT_COMMAND="prompt_command" # Displaying the timezone if it is set -if [[ ${TZ} ]]; then - echo "${VT_BOLD}${VT_GREEN_FG}Time zone is ${TZ}.${VT_RESET}" -fi +[[ ${TZ} ]] && echo "${VT_BLUE_FG}Time zone is ${TZ}.${VT_RESET}" ######################################################################