######################################################################
## The interactive part
-export VT_RESET=$'\033[0m'
-export VT_BOLD=$'\033[1m'
-export VT_UNDERLINE=$'\033[4m'
-export VT_BLINK=$'\033[5m'
+export VT_RESET=$'\e[0m'
+export VT_BOLD=$'\e[1m'
+export VT_UNDERLINE=$'\e[4m'
+export VT_BLINK=$'\e[5m'
-export VT_SET_TITLE=$'\033]0;'
+export VT_SET_TITLE=$'\e]0;'
export VT_END_TITLE=$'\007'
-export VT_BLACK_FG=$'\033[30m'
-export VT_RED_FG=$'\033[31m'
-export VT_GREEN_FG=$'\033[32m'
-export VT_YELLOW_FG=$'\033[33m'
-export VT_BLUE_FG=$'\033[34m'
-export VT_MAGENTA_FG=$'\033[35m'
-export VT_CYAN_FG=$'\033[36m'
-export VT_WHITE_FG=$'\033[37m'
-
-export VT_BLACK_BG=$'\033[40m'
-export VT_RED_BG=$'\033[41m'
-export VT_GREEN_BG=$'\033[42m'
-export VT_YELLOW_BG=$'\033[43m'
-export VT_BLUE_BG=$'\033[44m'
-export VT_MAGENTA_BG=$'\033[45m'
-export VT_CYAN_BG=$'\033[46m'
-export VT_WHITE_BG=$'\033[47m'
+export VT_BLACK_FG=$'\e[30m'
+export VT_RED_FG=$'\e[31m'
+export VT_GREEN_FG=$'\e[32m'
+export VT_YELLOW_FG=$'\e[33m'
+export VT_BLUE_FG=$'\e[34m'
+export VT_MAGENTA_FG=$'\e[35m'
+export VT_CYAN_FG=$'\e[36m'
+export VT_WHITE_FG=$'\e[37m'
+
+export VT_BLACK_BG=$'\e[40m'
+export VT_RED_BG=$'\e[41m'
+export VT_GREEN_BG=$'\e[42m'
+export VT_YELLOW_BG=$'\e[43m'
+export VT_BLUE_BG=$'\e[44m'
+export VT_MAGENTA_BG=$'\e[45m'
+export VT_CYAN_BG=$'\e[46m'
+export VT_WHITE_BG=$'\e[47m'
+
+# Colorize man pages!
+
+export LESS_TERMCAP_us=${VT_GREEN_FG}
+export LESS_TERMCAP_ue=${VT_RESET}
+export LESS_TERMCAP_md=${VT_BLUE_FG}${VT_BOLD}
+export LESS_TERMCAP_me=${VT_RESET}
+
+# export LESS_TERMCAP_md=$'\e[1;34;40m'
# This prevents ^S from freezing the shell
alias rm='rm -i'
alias mv='mv -i'
-alias chmod='chmod -v'
+# alias chmod='chmod -v'
+alias chmod='chmod -c'
alias cp='cp -i'
alias rd=rmdir
-alias md=mkdir
+alias md='mkdir -v'
alias ps='ps uxaf'
alias df='df -hT --sync'
alias grep='grep -E --mmap'
alias s='screen -d -R -U && clear'
alias mc='echo Try mv ' # I'm fed up with midnight commander
-alias kj="keyjnote -s -D 1000 -t Crossfade -T 100"
+# alias kj="keyjnote -s -D 1000 -t Crossfade -T 100"
+alias impressive="impressive -s -D 1000 -t Crossfade -T 100"
# alias fdupes='fdupes -r .'
eval $(dircolors "${HOME}/.dircolors")
alias ls='ls --color'
# alias ll='ls --color -lth'
+ alias lt='ls --color -gohtr --time-style="+%Y %b %d %H:%M"'
alias ll='ls --color -goh --time-style="+%Y %b %d %H:%M"'
+ alias lll='ls --color -lth'
alias l='ls --color -I "*~" -I "*.o"'
alias less='less -R'
else
# alias ll='ls -lth'
+ alias lt='ls -gohtr --time-style="+%Y %b %d %H:%M"'
alias ll='ls -goh --time-style="+%Y %b %d %H:%M"'
+ alias lll='ls -lth'
alias l='ls -I "*~" -I "*.o"'
fi
function fn () {
name=$1
shift
- find $* -name "*${name}*";
+ find "$@" -name "*${name}*";
+}
+
+# Create a dir and cd there
+
+function mcd () {
+ mkdir -vp $1
+ cd $1
+}
+
+# Capture the screen in a dated png
+
+function cap () {
+ if [[ $2 ]]; then
+ name=$2
+ else
+ name="capture-$(date +%s).png"
+ fi
+ echo "Waiting $1 s and saving to ${name}."
+ [[ $1 ]] && sleep $1
+ echo "Please click on the window to capture."
+ xwd | convert - ${name}
+ \ls -l ${name}
+}
+
+# Create and CD in a /tmp/tmp.XXXXXX directory. With the '-'
+# arguments, do not create one and CD in the most recent instead
+
+function cdt () {
+ if [[ $1 ]]; then
+ if [[ $1 == "-" ]]; then
+ cd $(\ls -td /tmp/tmp.?????? | head -1)
+ else
+ echo "USAGE: cdt [-]" >&2
+ return 1
+ fi
+ else
+ cd $(mktemp -d /tmp/tmp.XXXXXX)
+ fi
+}
+
+alias t='cd /tmp'
+
+function trash () {
+ TRASH=$(find /tmp/ -maxdepth 1 -mmin -15 -type d -name "trash-*" | sort | tail -1)
+
+ if [[ ${TRASH} ]]; then
+ echo "Re-use ${TRASH}"
+ else
+ TRASH=$(date +/tmp/trash-%Y-%b-%d-%H_%M_%S)
+ mkdir ${TRASH}
+ echo "Created ${TRASH}:"
+ fi
+
+ mv "$@" ${TRASH}
+}
+
+alias trash=trash.sh
+
+function mmsget () {
+ mplayer $1 -dumpstream -dumpfile $(basename $1)
}
######################################################################
function pho () {
PHO_BIN=/usr/bin/pho
TEMP=$(mktemp /tmp/pho.XXXXXXX)
- ${PHO_BIN} $* | tee ${TEMP}
+ ${PHO_BIN} "$@" | tee ${TEMP}
PHO_NOTE_1=$(grep ^"Note 1: " ${TEMP} | sed -e "s/^[^:]*: //")
PHO_NOTE_2=$(grep ^"Note 2: " ${TEMP} | sed -e "s/^[^:]*: //")
PHO_NOTE_3=$(grep ^"Note 3: " ${TEMP} | sed -e "s/^[^:]*: //")
function ifup () {
echo "${VT_BOLD}${VT_GREEN_FG}This is the bash function ifup from .bashrc${VT_RESET}"
- if [[ ! $* ]] && [[ -s ${IFUPRC} ]]; then
- # If we have no argument and there is a .ifuprc, use it
- ARGS=$(cat ${IFUPRC})
+ if [[ "$1" == "-s" ]]; then
+ chosen_ifup=$(mktemp /tmp/chosen_ifup.XXXXXX)
+ selector -i -d -o ${chosen_ifup} ${IFUPRC}
+ ARGS=$(cat ${chosen_ifup})
+ rm -f ${chosen_ifup}
+ echo ${ARGS} >> ${IFUPRC}
else
- # Otherwise uses the given arguments, and store them
- ARGS=$*
- echo ${ARGS} > ${IFUPRC}
+ if [[ ! $* ]] && [[ -s ${IFUPRC} ]]; then
+ # If we have no argument and there is a .ifuprc, use it
+ ARGS=$(tail -1 ${IFUPRC})
+ else
+ # Otherwise uses the given arguments, and store them
+ ARGS=$*
+ echo ${ARGS} >> ${IFUPRC}
+ fi
fi
echo "${VT_GREEN_FG}Running [sudo ifup ${ARGS}]${VT_RESET}"
sudo ifup ${ARGS}
if [[ ! $* ]] && [[ -s ${IFUPRC} ]]; then
# If there are no arguments and there is a .ifuprc, get the
# interface from it
- ARGS=$(cat ${IFUPRC} | sed -e "s/=.*$//")
+ ARGS=$(tail -1 ${IFUPRC} | sed -e "s/=.*$//")
else
# Otherwise, use the standard ifdown
ARGS=$*
function lr () {
HEIGHT=$(stty size | awk '{print $1}')
WIDTH=$(stty size | awk '{print $2}')
- \ls -goth --time-style="+%Y %b %d %H:%M" $* | head -$((HEIGHT-2)) | cut -b1-${WIDTH}
- # \ls -lth $* | head -$((HEIGHT-2)) | cut -b1-${WIDTH}
+ \ls -goth --time-style="+%Y %b %d %H:%M" "$@" | \
+ head -$((HEIGHT-2)) | \
+ cut -b1-${WIDTH}
}
######################################################################
# You can change the xterm background color on the fly!
function setxtermbg () {
- echo -n $'\033]11;'$1$'\007'
+ echo -n $'\e]11;'$1$'\007'
}
######################################################################
function ripdvd () {
mkdir -p ${HOME}/dvds
cd ${HOME}/dvds
- dvdbackup -v -M
- eject
+ time dvdbackup -v -M && eject
}
######################################################################
NB=0
for i in $(find -maxdepth 1 -type f); do
- if [[ -e ${DEST_DIR}/$i ]]; then
- echo "The file ${DEST_DIR}/$i already exists."
- else
-
- orientation=$(exif $i \
- | grep ^Orientation \
- | head -1 \
- | sed -e "s/^[^|]*|//" \
- | sed -e "s/ *$//")
-
- case ${orientation} in
- "top - left")
- rotation_cmd=""
- ;;
-
- "right - top")
- rotation_cmd="-rotate 90"
- ;;
-
- "left - bottom")
- rotation_cmd="-rotate 270"
- ;;
+ if [[ $(file $i | grep image) ]]; then
+ if [[ -e ${DEST_DIR}/$i ]]; then
+ echo "The file ${DEST_DIR}/$i already exists."
+ else
- *)
- rotation_cmd=""
- echo "Unknown orientation \"${orientation}\" !"
- ;;
- esac
+ orientation=$(exif $i \
+ | grep ^Orientation \
+ | head -1 \
+ | sed -e "s/^[^|]*|//" \
+ | sed -e "s/ *$//")
+
+ case ${orientation} in
+ ""|"top - left")
+ rotation_cmd=""
+ ;;
+
+ "right - top")
+ rotation_cmd="-rotate 90"
+ ;;
+
+ "left - bottom")
+ rotation_cmd="-rotate 270"
+ ;;
+
+ *)
+ rotation_cmd=""
+ echo "Unknown orientation \"${orientation}\" !"
+ ;;
+ esac
+
+ if [[ $(file ${i/%.*/}.* | grep -E movie) ]] ; then
+ CAPTION_PARAMS="-font FreeSans-Bold -pointsize 32 -fill green -annotate +10+32 Video"
+ else
+ CAPTION_PARAMS=""
+ fi
+
+ convert ${rotation_cmd} $i ${PARAMS} ${CAPTION_PARAMS} ${DEST_DIR}/$i
+ fi
- convert ${rotation_cmd} $i ${PARAMS} ${DEST_DIR}/$i
+ \ls -lt ${DEST_DIR}/$i
fi
- \ls -lt ${DEST_DIR}/$i
+
NB=$((NB+1))
+
echo "$((NB*100/NB_TOTAL))% (${NB}/${NB_TOTAL})"
done
}
######################################################################
# Switch off the history
-alias nh=" export HISTFILE=/dev/null"
-
function histfile_cue () {
if [[ ! "${HISTFILE}" == "${HOME}/.bash_history" ]]; then
HISTORY_CUE="[${HISTFILE}]"
#
# git clone http://fleuret.org/git/dus/
-alias dus='dus -f'
+alias dus='dus -f -i'
######################################################################
# The finddup command is available on my web site
#
# git clone http://fleuret.org/git/finddup/
-alias finddup='finddup -p0d'
+# alias finddup='finddup -p0d'
+alias finddup='finddup -p'
######################################################################
# This script grep messages in my mail archives
# git clone http://fleuret.org/git/selector/
function selector-history () {
- ARGS="-c 7 4 0 3 -q -b -i -d -v -w -l 15000"
- FILES=""
+ selector --bash -c 7,4,0,3 -q <(history)
+}
- # I may have a "local bash history" specific to the current
- # directory, and I also maintain a global "kept command" file. I
- # take all this into account here.
+# Find pathes in the history and make a list of the existing ones
- if [[ ${LOCAL_HISTORY_FILE} ]] && [[ -f ${LOCAL_HISTORY_FILE} ]]; then
- FILES="${FILES} ${LOCAL_HISTORY_FILE}"
- fi
+export CD_HISTORY=${HOME}/.selector-cd-history
- if [[ ${KEPT_COMMANDS} ]] && [[ -f ${KEPT_COMMANDS} ]]; then
- selector ${ARGS} ${FILES} <(sed < ${KEPT_COMMANDS} -e 's/^.*: /0 /') <(history)
+function selector-cd () {
+ if [[ "$1" == "+" ]]; then
+ PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX)
+ selector -d -i -o ${PATH_TEMP} ${CD_HISTORY}
+ cd $(cat ${PATH_TEMP} | sed -e "s|~|${HOME}|")
+ \rm ${PATH_TEMP}
else
- selector ${ARGS} ${FILES} <(history)
+ if [[ -z "$1" ]]; then
+ cd
+ else
+ cd "$1"
+ fi
+ echo $PWD | sed -e "s|${HOME}|~|" >> ${CD_HISTORY}
fi
-
}
+alias cd=selector-cd
+alias cdd="cd $(tail -1 ${CD_HISTORY})"
+
+# M-c provides a dynamic list of directories to cd into
+
+bind '"\C-[c":"\C-a\C-kselector-cd +\C-m"'
+
+# function selector-cd () {
+# LIST_TEMP=$(mktemp /tmp/selector-cd-list.XXXXXX)
+# PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX)
+# for d in $(history | \
+# grep ^" *[0-9]* *cd" | \
+# awk '{ print $3 }' | \
+# grep -v "\.\." | \
+# uniq); do
+# if [[ -d $d ]]; then
+# echo "$d"
+# fi
+# done >> ${LIST_TEMP}
+# selector -d -i -o ${PATH_TEMP} ${LIST_TEMP}
+# cd $(cat ${PATH_TEMP})
+# \rm ${LIST_TEMP}
+# \rm ${PATH_TEMP}
+# }
+
# M-r puts the selected history line in place of the current one
bind '"\C-[r":"\C-a\C-kselector-history\C-m"'
bind '"\C-[t":"\C-a\C-kselector-history\C-m\C-a\C-y\C-e"'
-# Finds path in the history and make a list of the existing ones
-
-function selector-cd () {
- LIST_TEMP=$(mktemp /tmp/cdlist.XXXXXX)
- for d in $(history | \
- grep ^" *[0-9]* *cd" | \
- awk '{ print $3 }' | \
- grep -v "\.\." | \
- uniq); do
- if [[ -d $d ]]; then
- echo "$d!cd $d"
- fi
- done >> ${LIST_TEMP}
- selector -v -x '!' -d -i ${LIST_TEMP}
- \rm ${LIST_TEMP}
-}
-
-alias c=selector-cd
-
-bind '"\C-[c":"\C-a\C-kselector-cd\C-m"'
-
# And we avoid to put in the history the use of the selector, which we
# do too often
HISTIGNORE="${HISTIGNORE}:selector-history"
+function selector-printer () {
+ TMP=$(mktemp /tmp/selector-printer.XXXXXX)
+ selector -o ${TMP} <(lpstat -a | awk '{print $1}')
+ export PRINTER=$(cat ${TMP})
+ echo "PRINTER=${PRINTER}"
+ rm -f ${TMP}
+ lpq
+}
+
######################################################################
function prompt_command () {
history -a
# and the local histories system defined above
keep_local_history
-# and the no-history
+# and the history cue
histfile_cue
}