Shell/Scripts: moved all useful functions (for whom it makes sense to call them
from Emacs or Ranger) to separate scripts.master
parent
524aaf9042
commit
ea81531077
|
@ -39,7 +39,7 @@ while getopts ":hfy" opt; do
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
echo "Missing argument."
|
echo "Missing argument."
|
||||||
echo "Use $0 -h for help."
|
_printhelp "$0"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -49,7 +49,7 @@ shift $(($OPTIND - 1))
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
echo "Missing argument."
|
echo "Missing argument."
|
||||||
echo "Use $0 -h for help."
|
_printhelp "$0"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
#!/usr/bin/zsh
|
||||||
|
## We need zsh because of array use here.
|
||||||
|
|
||||||
|
_printhelp()
|
||||||
|
{
|
||||||
|
cat <<EOF
|
||||||
|
Usage: ${1##*/} [-m METHOD] [-v] FILES|FOLDERS
|
||||||
|
|
||||||
|
Create an archive from a single or multiples files/folders.
|
||||||
|
|
||||||
|
-h: Display this help.
|
||||||
|
-m: Choose compression method.
|
||||||
|
* gz: gzip (default).
|
||||||
|
* xz: LZMA.
|
||||||
|
-v: Exclude VCS data. (GNU tar only.)
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
OPTION_VCS=""
|
||||||
|
OPTION_METHOD=""
|
||||||
|
|
||||||
|
while getopts ":hm:v" opt; do
|
||||||
|
case $opt in
|
||||||
|
h)
|
||||||
|
_printhelp "$0"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
m)
|
||||||
|
OPTION_METHOD="${OPTARG}"
|
||||||
|
;;
|
||||||
|
v)
|
||||||
|
OPTION_VCS="--exclude-vcs"
|
||||||
|
;;
|
||||||
|
?)
|
||||||
|
_printhelp "$0"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "Missing argument."
|
||||||
|
_printhelp "$0"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
ARCEXT=""
|
||||||
|
ARCOPT=""
|
||||||
|
|
||||||
|
case $OPTION_METHOD in
|
||||||
|
"gz")
|
||||||
|
ARCEXT="tar.gz"
|
||||||
|
ARCOPT="z"
|
||||||
|
;;
|
||||||
|
"xz")
|
||||||
|
ARCEXT="tar.xz"
|
||||||
|
ARCOPT="J"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ARCEXT="tar.gz"
|
||||||
|
ARCOPT="z"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
ARCPATH=""
|
||||||
|
ARCSOURCE=""
|
||||||
|
ARCNAME=""
|
||||||
|
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
ARCPATH="$(dirname $(readlink -f "$1"))"
|
||||||
|
ARCSOURCE="$(basename $(readlink -f "$1"))"
|
||||||
|
ARCNAME="${ARCSOURCE}-$(date +%y-%m-%d-%H%M%S).${ARCEXT}"
|
||||||
|
|
||||||
|
(cd "$ARCPATH" && \
|
||||||
|
tar -${ARCOPT} -cf "$ARCNAME" "$ARCSOURCE" ${OPTION_VCS})
|
||||||
|
|
||||||
|
else
|
||||||
|
ARCSOURCE="$(basename $PWD)"
|
||||||
|
ARCNAME="$(basename "$ARCSOURCE")-$(date +%y-%m-%d-%H%M%S).${ARCEXT}"
|
||||||
|
|
||||||
|
if [ $# = 0 ];then
|
||||||
|
|
||||||
|
(cd "$PWD/.." && \
|
||||||
|
tar -${ARCOPT} -cf "$ARCNAME" "$ARCSOURCE" ${OPTION_VCS})
|
||||||
|
|
||||||
|
else
|
||||||
|
## Note for zsh: do NOT initialize an array with "myarray=()".
|
||||||
|
|
||||||
|
for i; do
|
||||||
|
FILELIST=(${FILELIST[*]} "$i")
|
||||||
|
done
|
||||||
|
|
||||||
|
tar -${ARCOPT} -cf "$ARCNAME" ${FILELIST[*]} ${OPTION_VCS}
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -eq 0 ] || [ "$1" = "-h" ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: ${0##*/} FILES
|
||||||
|
|
||||||
|
Convert non-ASCII characters to their ASCII equivalent.
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i; do
|
||||||
|
sed -i \
|
||||||
|
-e 's/[áàâä]/a/g' \
|
||||||
|
-e 's/[éèêë]/e/g' \
|
||||||
|
-e 's/[íìîï]/i/g' \
|
||||||
|
-e 's/[óòôö]/o/g' \
|
||||||
|
-e 's/[úùûü]/u/g' \
|
||||||
|
-e 's/[ýỳŷÿ]/y/g' \
|
||||||
|
-e 's/[ÁÀÂÄ]/A/g' \
|
||||||
|
-e 's/[ÉÈÊË]/E/g' \
|
||||||
|
-e 's/[ÍÌÎÏ]/I/g' \
|
||||||
|
-e 's/[ÓÒÔÖ]/O/g' \
|
||||||
|
-e 's/[ÚÙÛÜ]/U/g' \
|
||||||
|
-e 's/[ÝỲŶŸ]/Y/g' \
|
||||||
|
-e 's/[ñ]/n/g' \
|
||||||
|
-e 's/[œ]/oe/g' \
|
||||||
|
-e 's/[Œ]/Oe/g' \
|
||||||
|
-e 's/[æ]/ae/g' \
|
||||||
|
-e 's/[Æ]/Ae/g' \
|
||||||
|
-e 's/[ç]/c/g' \
|
||||||
|
-e 's/[Ç]/C/g' \
|
||||||
|
-e 's/[ß]/ss/g' \
|
||||||
|
-e 's/[«»„“”‚‘’]/"/g' \
|
||||||
|
-e 's/[©]/(C)/g' \
|
||||||
|
-e 's/[®]/(R)/g' \
|
||||||
|
-e 's/[™]/(TM)/g' \
|
||||||
|
-e 's/[¥]/Y/g' \
|
||||||
|
-e 's/[Ð]/D/g' \
|
||||||
|
-e 's/[ŀ]/l/g' \
|
||||||
|
-e 's/[Ŀ]/L/g' \
|
||||||
|
-e 's/[€]/euro/g' \
|
||||||
|
-e 's/[¢]/cent/g' \
|
||||||
|
-e 's/[£]/pound/g' \
|
||||||
|
-e 's/[µ]/mu/g' \
|
||||||
|
-e 's/[²]/^2/g' \
|
||||||
|
-e 's/[³]/^3/g' \
|
||||||
|
-e 's/[¡]/!/g' \
|
||||||
|
-e 's/[¿]/?/g' \
|
||||||
|
-e 's/[–‑]/-/g' \
|
||||||
|
-e 's/[…]/.../g' \
|
||||||
|
-e 's/[≤]/<=/g' \
|
||||||
|
-e 's/[≥]/>=/g' \
|
||||||
|
-e 's/[±]/+\/-/g' \
|
||||||
|
-e 's/[≠]/!=/g' \
|
||||||
|
-e 's/[⋅]/./g' \
|
||||||
|
-e 's/[×]/x/g' \
|
||||||
|
-e 's/[÷]/\//g' \
|
||||||
|
-e 's/[↓]/|/g' \
|
||||||
|
-e 's/[↑]/^/g' \
|
||||||
|
-e 's/[←]/<=/g' \
|
||||||
|
-e 's/[→]/=>/g' \
|
||||||
|
"$i"
|
||||||
|
done;
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
if [ $# -gt 2 ] || [ $# -lt 1 ] || [ "$1" = "-h" ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: ${1##*/} FILE [STRING]
|
||||||
|
|
||||||
|
Append to all STRING found in FILE a secret phrase being prompted. If STRING is
|
||||||
|
omitted, secret phrase will be appended to the end of the file. If FILE does
|
||||||
|
not exist, it will be created and secret phrase will be inserted. STRING will be
|
||||||
|
ignored.
|
||||||
|
|
||||||
|
This requires 'read -s'. It will not work for Bourne Shell.
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
FILE="$1"
|
||||||
|
STRING=""
|
||||||
|
DUMMY=""
|
||||||
|
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
STRING="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Secret: "
|
||||||
|
read -s DUMMY
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ ! -e "$FILE" ] || [ -z "$STRING" ]; then
|
||||||
|
echo "$DUMMY" >> "$FILE"
|
||||||
|
echo "Secret appended to ${FILE} at the end."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
echo "$DUMMY" >> "$FILE"
|
||||||
|
else
|
||||||
|
sed -i "s/${STRING}/${STRING}${DUMMY}/g" "${FILE}"
|
||||||
|
fi
|
||||||
|
echo "Secret appended to ${FILE}."
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
echo "Usage: ${0##*/} FILE [GCC_OPTS]"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUT="$1"
|
||||||
|
|
||||||
|
shift
|
||||||
|
GCC_OPTS="-O0 -Wall -Wextra -Wshadow -pthread"
|
||||||
|
if [ $# -ne 0 ]; then
|
||||||
|
GCC_OPTS="$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
FILE=$(mktemp)
|
||||||
|
echo "==> gcc \"$INPUT\" -o \"$FILE\" $GCC_OPTS"
|
||||||
|
|
||||||
|
## Zsh compatibility. We need it otherwise word splitting of parameter GCC_OPTS
|
||||||
|
## will not work.
|
||||||
|
STATUS="$(set -o | grep 'shwordsplit' | awk '{print $2}')"
|
||||||
|
[ "$STATUS" = "off" ] && set -o shwordsplit
|
||||||
|
|
||||||
|
gcc "$INPUT" -o "$FILE" $GCC_OPTS
|
||||||
|
|
||||||
|
## Restore Zsh previous options. This will not turn off shwordsplit if it
|
||||||
|
## was on before calling the function.
|
||||||
|
[ "$STATUS" = "off" ] && set +o shwordsplit
|
||||||
|
|
||||||
|
echo "==> $FILE"
|
||||||
|
"$FILE"
|
||||||
|
rm "$FILE"
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
emacs -q -l ~/.emacs-light --eval "(ediff \"$1\" \"$2\")"
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -n "$(command -v atool)" ] && echo "You should use atool instead."
|
||||||
|
|
||||||
|
if [ -f "$1" ] ; then
|
||||||
|
case "$1" in
|
||||||
|
*.tar.bz2) tar xvjf "$1" ;;
|
||||||
|
*.tar.gz) tar xvzf "$1" ;;
|
||||||
|
*.tar.xz) tar xvJf "$1" ;;
|
||||||
|
*.bz2) bunzip2 "$1" ;;
|
||||||
|
*.rar) unrar x "$1" ;;
|
||||||
|
*.gz) gunzip "$1" ;;
|
||||||
|
*.tar) tar xvf "$1" ;;
|
||||||
|
*.tbz2) tar xvjf "$1" ;;
|
||||||
|
*.tgz) tar xvzf "$1" ;;
|
||||||
|
*.txz) tar xvJf "$1" ;;
|
||||||
|
*.zip) unzip "$1" ;;
|
||||||
|
*.Z) uncompress "$1" ;;
|
||||||
|
*.7z) 7z x "$1" ;;
|
||||||
|
*.xz) unxz "$1" ;;
|
||||||
|
*.exe) cabextract "$1" ;;
|
||||||
|
*) echo "[$1]: unrecognized file compression" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "[$1] is not a valid file"
|
||||||
|
fi
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
## Format C using 'indent'. Alternative to indent: astyle, uncrustify.
|
||||||
|
if [ -z "$(command -v indent)" ]; then
|
||||||
|
echo "Please install 'indent'"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
_formatc_dir()
|
||||||
|
{
|
||||||
|
find "$1" -type f \
|
||||||
|
-name "*.[ch]" \
|
||||||
|
-print \
|
||||||
|
-exec indent -i4 -ppi4 -bli0 -cli4 -nut {} \;
|
||||||
|
|
||||||
|
## Remove backup files.
|
||||||
|
find "$1" -type f \( \
|
||||||
|
-name "*.[ch]~" -o \
|
||||||
|
-name "*.[ch]~[0-9]*~" \) \
|
||||||
|
-delete
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "Working on current dir"
|
||||||
|
_formatc_dir "$PWD"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i ; do
|
||||||
|
echo "[$i]"
|
||||||
|
|
||||||
|
if [ -d "$i" ]; then
|
||||||
|
_formatc_dir "$i"
|
||||||
|
else
|
||||||
|
indent -i4 -ppi4 -bli0 -cli4 -nut "$i"
|
||||||
|
rm -f "$i~" "$i~[0-9]*~"
|
||||||
|
fi
|
||||||
|
done
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while IFS= read -r FOLDER; do
|
||||||
|
if [ -z "$(cd "${FOLDER%/*}" && git status -uno | grep "nothing to commit")" ]; then
|
||||||
|
echo "${FOLDER%/*}"
|
||||||
|
fi
|
||||||
|
done <<EOF
|
||||||
|
$(find . -type d -name ".git")
|
||||||
|
EOF
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: ${0##*/} FOLDER."
|
||||||
|
echo "Compare current git repo with FOLDER."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPO="$(mktemp)"
|
||||||
|
FOLDER="$(mktemp)"
|
||||||
|
git ls-files | sort > "$REPO"
|
||||||
|
find "$1" -type f ! -path "*.git/*" | sed 's/^[^\/]*\///g' | sort > "$FOLDER"
|
||||||
|
rm -f "$REPO" "$FOLDER"
|
||||||
|
|
||||||
|
## Zsh version.
|
||||||
|
# comm -3 <(git ls-files | sort) <(find "$1" -type f ! -path "*.git/*" | sed 's/^[^\/]*\///g' | sort)
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: ${0##*/} FILE"
|
||||||
|
|
||||||
|
echo "LaTeX quick compiler. It adds the preambule -- and the
|
||||||
|
\end{document} -- automatically."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
## One line is mandatory.
|
||||||
|
PREAMBLE='\documentclass[10pt,a4paper]{article}\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}\usepackage{amsmath,amssymb,amsfonts}\usepackage{geometry}\usepackage{lmodern}\usepackage{marvosym}\usepackage{textcomp}\DeclareUnicodeCharacter{20AC}{\EUR{}}\DeclareUnicodeCharacter{2264}{\leqslant}\DeclareUnicodeCharacter{2265}{\geqslant}\begin{document}\input'
|
||||||
|
|
||||||
|
END='\end{document}'
|
||||||
|
|
||||||
|
pdflatex -file-line-error-style -interaction nonstopmode -jobname="${1%.tex}" "$PREAMBLE" "$1" "$END"
|
|
@ -50,7 +50,7 @@ shift $(($OPTIND - 1))
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
echo "Missing argument."
|
echo "Missing argument."
|
||||||
echo "Use $0 -h for help."
|
_printhelp "$0"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -lt 1 ] || [ $# -gt 2 ] || [ "$1" = "-h" ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: ${0##*/} PDFFILE [DESTFILE]
|
||||||
|
|
||||||
|
WARNING: use this function with caution. It may drastically improve compression
|
||||||
|
of some PDF files, but in some case, the output filesize will be greater! You
|
||||||
|
should not use it over PDF files embedding pictures as well.
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$1" ]; then
|
||||||
|
echo "$1 is not a valid PDF file!"
|
||||||
|
fi
|
||||||
|
INPUTFILE="$1"
|
||||||
|
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${INPUTFILE%%.*}-COMPRESSED.pdf" "${INPUTFILE}"
|
||||||
|
rm -rf "${INPUTFILE}"
|
||||||
|
mv "${INPUTFILE%%.*}-COMPRESSED.pdf" "${INPUTFILE}"
|
||||||
|
else
|
||||||
|
OUTPUTFILE="$2"
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${OUTPUTFILE}" "${INPUTFILE}"
|
||||||
|
fi
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 4 ]; then
|
||||||
|
echo "Usage: ${0##*/} PDFFILE FIRSTPAGE LASTPAGE DESTFILE"
|
||||||
|
echo "Extract a range of pages from a PDF."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$1" ]; then
|
||||||
|
echo "$1 is not a valid PDF file!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
gs -sDEVICE=pdfwrite -dNOPAUSE -dSAFER -dSAFER -dFirstPage=$2 -dBATCH -dLastPage=$3 -sOutputFile="$4" "$1"
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
echo "Usage: ${0##*/} INPUT OUTPUT"
|
||||||
|
echo "Resize input PDF to an A4 output PDF."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
gs -q -o "$2" -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.4 "$1"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
## Variables
|
## Variables
|
||||||
OLDPATH="$(pwd)"
|
OLDPATH="$(pwd)"
|
||||||
cd "$HOME"
|
cd "$HOME"
|
||||||
SCRIPTPATH="$(readlink -f $(dirname "$0"))"
|
SCRIPTPATH="${0##*/}"
|
||||||
HOST=$(hostname)
|
HOST=$(hostname)
|
||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
## Set file/directory owner and permissions.
|
||||||
|
## Usage: sanitize [FOLDER]
|
||||||
|
WORKDIR="$PWD"
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
WORKDIR="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
FMASK=$(umask -S | sed 's/x//g')
|
||||||
|
DMASK=$(umask -S)
|
||||||
|
|
||||||
|
find "$WORKDIR" -exec chown -R ${UID}:${GID} {} \;
|
||||||
|
find "$WORKDIR" -type d -exec chmod ${DMASK} {} \;
|
||||||
|
find "$WORKDIR" -type f -exec chmod ${FMASK} {} \;
|
|
@ -51,7 +51,7 @@ TC_AUDIO_DEST="/media/data1/Musics/"
|
||||||
_printhelp ()
|
_printhelp ()
|
||||||
{
|
{
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Usage: $1 [OPTIONS] FILE
|
Usage: ${1##*/} [OPTIONS] FILE
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-p : preview (do not change file)
|
-p : preview (do not change file)
|
||||||
|
@ -85,10 +85,10 @@ Default output file:
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
Set the 'artist' tag and reencode:
|
Set the 'artist' tag and reencode:
|
||||||
$1 -a 'Franz Lizst' file.mp3
|
${1##*/} -a 'Franz Lizst' file.mp3
|
||||||
|
|
||||||
Set 'artist' to be 'composer', and 'title' to be preceeded by 'artist', do not reencode:
|
Set 'artist' to be 'composer', and 'title' to be preceeded by 'artist', do not reencode:
|
||||||
$1 -s -a '\$COMPOSER' -t '\$ARTIST - \$TITLE' file.ogg
|
${1##*/} -s -a '\$COMPOSER' -t '\$ARTIST - \$TITLE' file.ogg
|
||||||
|
|
||||||
IMPORTANT: you *must* use single quotes when using variables.
|
IMPORTANT: you *must* use single quotes when using variables.
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ while getopts ":a:b:d:g:l:n:t:hps" opt; do
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
echo "Missing argument."
|
echo "Missing argument."
|
||||||
echo "Use $0 -h for help."
|
_printhelp "$0"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -60,7 +60,7 @@ fi
|
||||||
_printhelp()
|
_printhelp()
|
||||||
{
|
{
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Usage: $1 [OPTIONS] FILES|FOLDERS
|
Usage: ${1##*/} [OPTIONS] FILES|FOLDERS
|
||||||
|
|
||||||
Transcode FILES or files found in FOLDERS to .mkv with x264 and ogg. Output
|
Transcode FILES or files found in FOLDERS to .mkv with x264 and ogg. Output
|
||||||
files are the same as the original, with time appended. You can customize
|
files are the same as the original, with time appended. You can customize
|
||||||
|
@ -97,7 +97,7 @@ while getopts ":fhs" opt; do
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
echo "Missing argument."
|
echo "Missing argument."
|
||||||
echo "Use $0 -h for help."
|
_printhelp "$0"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
## This function will clean TeX/LaTeX project folders recursively.
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
WORKDIR="$PWD"
|
||||||
|
else
|
||||||
|
WORKDIR="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
## WARNING: removing .idx files is messy in a .git folder.
|
||||||
|
find "$WORKDIR" -type f \( \
|
||||||
|
-name "*.aux" -o \
|
||||||
|
-name "*.glg" -o \
|
||||||
|
-name "*.glo" -o \
|
||||||
|
-name "*.gls" -o \
|
||||||
|
-name "*.ilg" -o \
|
||||||
|
-name "*.ind" -o \
|
||||||
|
-name "*.lof" -o \
|
||||||
|
-name "*.log" -o \
|
||||||
|
-name "*.maf" -o \
|
||||||
|
-name "*.mtc" -o \
|
||||||
|
-name "*.mtc?" -o \
|
||||||
|
-name "*.nav" -o \
|
||||||
|
-name "*.out" -o \
|
||||||
|
-name "*.snm" -o \
|
||||||
|
-name "*.synctex" -o \
|
||||||
|
-name "*.synctex.gz" -o \
|
||||||
|
-name "*.tns" -o \
|
||||||
|
-name "*.toc" -o \
|
||||||
|
-name "*.xdy" \) \
|
||||||
|
-print \
|
||||||
|
-delete
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
WORKDIR="$PWD"
|
||||||
|
else
|
||||||
|
WORKDIR="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset CHOICE
|
||||||
|
echo "This will clean current folder from all VCS control files."
|
||||||
|
echo -n "Proceed ? [y/N] "
|
||||||
|
read CHOICE
|
||||||
|
|
||||||
|
CHOICE=$(echo $CHOICE | tr '[:upper:]' '[:lower:]')
|
||||||
|
if [ "$CHOICE" = "y" ]; then
|
||||||
|
|
||||||
|
## First clean the folders.
|
||||||
|
find "$WORKDIR" \( \
|
||||||
|
-path "*/.git/*" -o \
|
||||||
|
-path "*/.bzr/*" -o \
|
||||||
|
-path "*/.cvs/*" -o \
|
||||||
|
-path "*/.hg/*" -o \
|
||||||
|
-path "*/.svn/*" \) \
|
||||||
|
-delete
|
||||||
|
|
||||||
|
## Remove the empty vcs folder.
|
||||||
|
find "$WORKDIR" -type d \( \
|
||||||
|
-name ".bzr" -o \
|
||||||
|
-name ".cvs" -o \
|
||||||
|
-name ".git" -o \
|
||||||
|
-name ".hg" -o \
|
||||||
|
-name ".svn" \) \
|
||||||
|
-delete
|
||||||
|
|
||||||
|
echo "VCS files cleaned."
|
||||||
|
fi
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
echo "Usage: ${0##*/} EXT URI"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -r -l1 --no-parent -A$1 "$2"
|
|
@ -112,6 +112,7 @@ alias xres='xrandr -s $(xrandr | awk '"'"'/^ / {print $1;exit}'"'"')'
|
||||||
if [ -f /bin/em ]; then
|
if [ -f /bin/em ]; then
|
||||||
alias ema='emacs -q -l ~/.emacs-light'
|
alias ema='emacs -q -l ~/.emacs-light'
|
||||||
alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; emacs --daemon"
|
alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; emacs --daemon"
|
||||||
|
[ -f ~/todo.org ] && alias todo='em ~/todo.org'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##==============================================================================
|
##==============================================================================
|
||||||
|
|
538
.shell.d/funs_rc
538
.shell.d/funs_rc
|
@ -1,9 +1,12 @@
|
||||||
## -*- mode:sh -*- #
|
## -*- mode:sh -*- #
|
||||||
################################################################################
|
################################################################################
|
||||||
## Shell -- Functions.
|
## Shell -- Functions.
|
||||||
## Date 2012-12-05
|
## Date 2013-03-03
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
## Functions that can be useful outside a shell (like in Emacs or Ranger) should
|
||||||
|
## be written in stand-alone script instead.
|
||||||
|
|
||||||
## Colored man pager.
|
## Colored man pager.
|
||||||
man()
|
man()
|
||||||
{
|
{
|
||||||
|
@ -171,18 +174,6 @@ cpuusage()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
## Wget batch DL
|
|
||||||
wget_batch ()
|
|
||||||
{
|
|
||||||
if [ $# -ne 2 ]; then
|
|
||||||
echo "Usage: $0 <ext> <uri>"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
wget -r -l1 --no-parent -A$1 $2
|
|
||||||
}
|
|
||||||
|
|
||||||
## Webcam
|
## Webcam
|
||||||
webcam ()
|
webcam ()
|
||||||
{
|
{
|
||||||
|
@ -190,7 +181,6 @@ webcam ()
|
||||||
mplayer -fps 30 -tv driver=v4l2:width=640:height=480:device=/dev/video0 tv:// -flip
|
mplayer -fps 30 -tv driver=v4l2:width=640:height=480:device=/dev/video0 tv:// -flip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
## Vim-only: search the vim reference manual for a keyword.
|
## Vim-only: search the vim reference manual for a keyword.
|
||||||
## Usage: :h <keyword>
|
## Usage: :h <keyword>
|
||||||
if [ -n "$(command -v vim)" ]; then
|
if [ -n "$(command -v vim)" ]; then
|
||||||
|
@ -200,145 +190,6 @@ if [ -n "$(command -v vim)" ]; then
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Set file/directory owner and permissions.
|
|
||||||
## Usage: sanitize [FOLDER]
|
|
||||||
sanitize()
|
|
||||||
{
|
|
||||||
local WORKDIR="$PWD"
|
|
||||||
if [ $# -eq 1 ]; then
|
|
||||||
WORKDIR="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local FMASK=$(umask -S | sed 's/x//g')
|
|
||||||
local DMASK=$(umask -S)
|
|
||||||
|
|
||||||
find "$WORKDIR" -exec chown -R ${UID}:${GID} {} \;
|
|
||||||
find "$WORKDIR" -type d -exec chmod ${DMASK} {} \;
|
|
||||||
find "$WORKDIR" -type f -exec chmod ${FMASK} {} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
asciify()
|
|
||||||
{
|
|
||||||
_printhelp()
|
|
||||||
{
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $1 FILES
|
|
||||||
|
|
||||||
Convert non-ASCII characters to their ASCII equivalent.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
echo "Missing arguments."
|
|
||||||
_printhelp $0
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i; do
|
|
||||||
sed -i \
|
|
||||||
-e 's/[áàâä]/a/g' \
|
|
||||||
-e 's/[éèêë]/e/g' \
|
|
||||||
-e 's/[íìîï]/i/g' \
|
|
||||||
-e 's/[óòôö]/o/g' \
|
|
||||||
-e 's/[úùûü]/u/g' \
|
|
||||||
-e 's/[ýỳŷÿ]/y/g' \
|
|
||||||
-e 's/[ÁÀÂÄ]/A/g' \
|
|
||||||
-e 's/[ÉÈÊË]/E/g' \
|
|
||||||
-e 's/[ÍÌÎÏ]/I/g' \
|
|
||||||
-e 's/[ÓÒÔÖ]/O/g' \
|
|
||||||
-e 's/[ÚÙÛÜ]/U/g' \
|
|
||||||
-e 's/[ÝỲŶŸ]/Y/g' \
|
|
||||||
-e 's/[ñ]/n/g' \
|
|
||||||
-e 's/[œ]/oe/g' \
|
|
||||||
-e 's/[Œ]/Oe/g' \
|
|
||||||
-e 's/[æ]/ae/g' \
|
|
||||||
-e 's/[Æ]/Ae/g' \
|
|
||||||
-e 's/[ç]/c/g' \
|
|
||||||
-e 's/[Ç]/C/g' \
|
|
||||||
-e 's/[ß]/ss/g' \
|
|
||||||
-e 's/[«»„“”‚‘’]/"/g' \
|
|
||||||
-e 's/[©]/(C)/g' \
|
|
||||||
-e 's/[®]/(R)/g' \
|
|
||||||
-e 's/[™]/(TM)/g' \
|
|
||||||
-e 's/[¥]/Y/g' \
|
|
||||||
-e 's/[Ð]/D/g' \
|
|
||||||
-e 's/[ŀ]/l/g' \
|
|
||||||
-e 's/[Ŀ]/L/g' \
|
|
||||||
-e 's/[€]/euro/g' \
|
|
||||||
-e 's/[¢]/cent/g' \
|
|
||||||
-e 's/[£]/pound/g' \
|
|
||||||
-e 's/[µ]/mu/g' \
|
|
||||||
-e 's/[²]/^2/g' \
|
|
||||||
-e 's/[³]/^3/g' \
|
|
||||||
-e 's/[¡]/!/g' \
|
|
||||||
-e 's/[¿]/?/g' \
|
|
||||||
-e 's/[–‑]/-/g' \
|
|
||||||
-e 's/[…]/.../g' \
|
|
||||||
-e 's/[≤]/<=/g' \
|
|
||||||
-e 's/[≥]/>=/g' \
|
|
||||||
-e 's/[±]/+\/-/g' \
|
|
||||||
-e 's/[≠]/!=/g' \
|
|
||||||
-e 's/[⋅]/./g' \
|
|
||||||
-e 's/[×]/x/g' \
|
|
||||||
-e 's/[÷]/\//g' \
|
|
||||||
-e 's/[↓]/|/g' \
|
|
||||||
-e 's/[↑]/^/g' \
|
|
||||||
-e 's/[←]/<=/g' \
|
|
||||||
-e 's/[→]/=>/g' \
|
|
||||||
"$i"
|
|
||||||
done;
|
|
||||||
}
|
|
||||||
|
|
||||||
blind-append()
|
|
||||||
{
|
|
||||||
_printhelp()
|
|
||||||
{
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $1 FILE [STRING]
|
|
||||||
|
|
||||||
Append to all STRING found in FILE a secret phrase being prompted. If STRING is
|
|
||||||
omitted, secret phrase will be appended to the end of the file. If FILE does
|
|
||||||
not exist, it will be created and secret phrase will be inserted. STRING will be
|
|
||||||
ignored.
|
|
||||||
|
|
||||||
This requires 'read -s'. It will not work for Bourne Shell.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ $# -gt 2 ] || [ $# -lt 1 ]; then
|
|
||||||
echo "Wrong number of arguments."
|
|
||||||
_printhelp $0
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local FILE="$1"
|
|
||||||
local STRING=""
|
|
||||||
local DUMMY
|
|
||||||
|
|
||||||
if [ $# -eq 2 ]; then
|
|
||||||
STRING="$2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "Secret: "
|
|
||||||
read -s DUMMY
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
if [ ! -e "$FILE" ] || [ -z "$STRING" ]; then
|
|
||||||
echo "$DUMMY" >> "$FILE"
|
|
||||||
echo "Secret appended to ${FILE} at the end."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ $# -eq 1 ]; then
|
|
||||||
echo "$DUMMY" >> "$FILE"
|
|
||||||
else
|
|
||||||
sed -i "s/${STRING}/${STRING}${DUMMY}/g" "${FILE}"
|
|
||||||
fi
|
|
||||||
echo "Secret appended to ${FILE}."
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
## Term properties
|
## Term properties
|
||||||
termcolors256()
|
termcolors256()
|
||||||
{
|
{
|
||||||
|
@ -432,269 +283,6 @@ EOF
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Extractor -- Useless when using 'atool'.
|
|
||||||
if [ ! -n "$(command -v atool)" ]; then
|
|
||||||
extract ()
|
|
||||||
{
|
|
||||||
if [ -f $1 ] ; then
|
|
||||||
case $1 in
|
|
||||||
*.tar.bz2) tar xvjf $1 ;;
|
|
||||||
*.tar.gz) tar xvzf $1 ;;
|
|
||||||
*.tar.xz) tar xvJf $1 ;;
|
|
||||||
*.bz2) bunzip2 $1 ;;
|
|
||||||
*.rar) unrar x $1 ;;
|
|
||||||
*.gz) gunzip $1 ;;
|
|
||||||
*.tar) tar xvf $1 ;;
|
|
||||||
*.tbz2) tar xvjf $1 ;;
|
|
||||||
*.tgz) tar xvzf $1 ;;
|
|
||||||
*.zip) unzip $1 ;;
|
|
||||||
*.Z) uncompress $1 ;;
|
|
||||||
*.7z) 7z x $1 ;;
|
|
||||||
*.xz) unxz $1 ;;
|
|
||||||
*.exe) cabextract $1 ;;
|
|
||||||
*) echo "\`$1': unrecognized file compression" ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
echo "\`$1' is not a valid file"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
## WARNING: use this function with caution. It may drastically improve
|
|
||||||
## compression of some PDF files, but in some case, the output filesize will be
|
|
||||||
## greater! You should not use it over PDF files embedding pictures as well.
|
|
||||||
pdfcompress ()
|
|
||||||
{
|
|
||||||
if [ $# -lt 1 -o $# -gt 2 ]; then
|
|
||||||
echo "Usage: pdfcompress PDFFILE [DESTFILE]"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$1" ]; then
|
|
||||||
echo "$1 is not a valid PDF file!"
|
|
||||||
fi
|
|
||||||
local INPUTFILE="$1"
|
|
||||||
|
|
||||||
if [ -z "$2" ]; then
|
|
||||||
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${INPUTFILE%%.*}-COMPRESSED.pdf" "${INPUTFILE}"
|
|
||||||
rm -rf "${INPUTFILE}"
|
|
||||||
mv "${INPUTFILE%%.*}-COMPRESSED.pdf" "${INPUTFILE}"
|
|
||||||
else
|
|
||||||
local OUTPUTFILE="$2"
|
|
||||||
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${OUTPUTFILE}" "${INPUTFILE}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
## Extract a range of pages from a PDF.
|
|
||||||
pdfextract ()
|
|
||||||
{
|
|
||||||
if [ $# -ne 4 ]; then
|
|
||||||
echo "Usage: $0 PDFFILE FIRSTPAGE LASTPAGE DESTFILE"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$1" ]; then
|
|
||||||
echo "$1 is not a valid PDF file!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
gs -sDEVICE=pdfwrite -dNOPAUSE -dSAFER -dSAFER -dFirstPage=$2 -dBATCH -dLastPage=$3 -sOutputFile=$4 $1
|
|
||||||
}
|
|
||||||
|
|
||||||
## Resize input PDF to an A4 output PDF.
|
|
||||||
pdfresize ()
|
|
||||||
{
|
|
||||||
if [ $# -ne 2 ]; then
|
|
||||||
echo "Usage: $0 <input> <output>"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
gs -q -o $2 -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.4 $1
|
|
||||||
}
|
|
||||||
|
|
||||||
archive ()
|
|
||||||
{
|
|
||||||
_printhelp()
|
|
||||||
{
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $1 [-m METHOD] [-v] FILES|FOLDERS
|
|
||||||
|
|
||||||
Create an archive from a single or multiples files/folders.
|
|
||||||
|
|
||||||
-h: Display this help.
|
|
||||||
-m: Choose compression method.
|
|
||||||
* gz: gzip (default).
|
|
||||||
* xz: LZMA.
|
|
||||||
-v: Exclude VCS data. (GNU tar only).
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
local OPTION_VCS=""
|
|
||||||
local OPTION_METHOD=""
|
|
||||||
|
|
||||||
while getopts ":hm:v" opt; do
|
|
||||||
case $opt in
|
|
||||||
h)
|
|
||||||
_printhelp "$0"
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
m)
|
|
||||||
OPTION_METHOD="${OPTARG}"
|
|
||||||
;;
|
|
||||||
v)
|
|
||||||
OPTION_VCS="--exclude-vcs"
|
|
||||||
;;
|
|
||||||
?)
|
|
||||||
_printhelp "$0"
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
:)
|
|
||||||
echo "Missing argument."
|
|
||||||
echo "Use $0 -h for help."
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
local ARCEXT
|
|
||||||
local ARCOPT
|
|
||||||
|
|
||||||
case $OPTION_METHOD in
|
|
||||||
"gz")
|
|
||||||
ARCEXT="tar.gz"
|
|
||||||
ARCOPT="z"
|
|
||||||
;;
|
|
||||||
"xz")
|
|
||||||
ARCEXT="tar.xz"
|
|
||||||
ARCOPT="J"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ARCEXT="tar.gz"
|
|
||||||
ARCOPT="z"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
shift $(($OPTIND - 1))
|
|
||||||
|
|
||||||
local ARCPATH
|
|
||||||
local ARCSOURCE
|
|
||||||
local ARCNAME
|
|
||||||
|
|
||||||
if [ $# -eq 1 ]; then
|
|
||||||
ARCPATH="$(dirname $(readlink -f "$1"))"
|
|
||||||
ARCSOURCE="$(basename $(readlink -f "$1"))"
|
|
||||||
ARCNAME="${ARCSOURCE}-$(date +%y-%m-%d-%H%M%S).${ARCEXT}"
|
|
||||||
|
|
||||||
(cd "$ARCPATH" && \
|
|
||||||
tar -${ARCOPT} -cf "$ARCNAME" "$ARCSOURCE" ${OPTION_VCS})
|
|
||||||
|
|
||||||
else
|
|
||||||
ARCSOURCE="$(basename $PWD)"
|
|
||||||
ARCNAME="$(basename "$ARCSOURCE")-$(date +%y-%m-%d-%H%M%S).${ARCEXT}"
|
|
||||||
|
|
||||||
if [ $# = 0 ];then
|
|
||||||
|
|
||||||
(cd "$PWD/.." && \
|
|
||||||
tar -${ARCOPT} -cf "$ARCNAME" "$ARCSOURCE" ${OPTION_VCS})
|
|
||||||
|
|
||||||
else
|
|
||||||
## Note for zsh: do NOT initialize an array with "myarray=()".
|
|
||||||
local FILELIST
|
|
||||||
|
|
||||||
for i; do
|
|
||||||
FILELIST=(${FILELIST[*]} "$i")
|
|
||||||
done
|
|
||||||
|
|
||||||
tar -${ARCOPT} -cf "$ARCNAME" ${FILELIST[*]} ${OPTION_VCS}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
## Git compare
|
|
||||||
git-compare()
|
|
||||||
{
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
echo "Wrong number of argument."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
comm -3 <(git ls-files | sort) <(find "$1" -type f ! -path "*.git/*" | sed 's/^[^\/]*\///g' | sort)
|
|
||||||
}
|
|
||||||
|
|
||||||
## This function will clean TeX/LaTeX project folders recursively.
|
|
||||||
texclean ()
|
|
||||||
{
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
WORKDIR="$PWD"
|
|
||||||
else
|
|
||||||
WORKDIR="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
## WARNING: removing .idx files is messy in a .git folder.
|
|
||||||
find "$WORKDIR" -type f \( \
|
|
||||||
-name "*.aux" -o \
|
|
||||||
-name "*.glg" -o \
|
|
||||||
-name "*.glo" -o \
|
|
||||||
-name "*.gls" -o \
|
|
||||||
-name "*.ilg" -o \
|
|
||||||
-name "*.ind" -o \
|
|
||||||
-name "*.lof" -o \
|
|
||||||
-name "*.log" -o \
|
|
||||||
-name "*.maf" -o \
|
|
||||||
-name "*.mtc" -o \
|
|
||||||
-name "*.mtc?" -o \
|
|
||||||
-name "*.nav" -o \
|
|
||||||
-name "*.out" -o \
|
|
||||||
-name "*.snm" -o \
|
|
||||||
-name "*.synctex" -o \
|
|
||||||
-name "*.synctex.gz" -o \
|
|
||||||
-name "*.tns" -o \
|
|
||||||
-name "*.toc" -o \
|
|
||||||
-name "*.xdy" \) \
|
|
||||||
-print \
|
|
||||||
-delete
|
|
||||||
}
|
|
||||||
|
|
||||||
## Clean current folder
|
|
||||||
vcsclean()
|
|
||||||
{
|
|
||||||
local WORKDIR
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
WORKDIR="$PWD"
|
|
||||||
else
|
|
||||||
WORKDIR="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local CHOICE
|
|
||||||
unset CHOICE
|
|
||||||
echo "This will clean current folder from all VCS control files."
|
|
||||||
echo -n "Proceed ? [y/N] "
|
|
||||||
read CHOICE
|
|
||||||
|
|
||||||
CHOICE=$(echo $CHOICE | tr '[:upper:]' '[:lower:]')
|
|
||||||
if [ "$CHOICE" = "y" ]; then
|
|
||||||
|
|
||||||
## First clean the folders.
|
|
||||||
find "$WORKDIR" \( \
|
|
||||||
-path "*/.git/*" -o \
|
|
||||||
-path "*/.bzr/*" -o \
|
|
||||||
-path "*/.cvs/*" -o \
|
|
||||||
-path "*/.hg/*" -o \
|
|
||||||
-path "*/.svn/*" \) \
|
|
||||||
-delete
|
|
||||||
|
|
||||||
## Remove the empty vcs folder.
|
|
||||||
find "$WORKDIR" -type d \( \
|
|
||||||
-name ".bzr" -o \
|
|
||||||
-name ".cvs" -o \
|
|
||||||
-name ".git" -o \
|
|
||||||
-name ".hg" -o \
|
|
||||||
-name ".svn" \) \
|
|
||||||
-delete
|
|
||||||
|
|
||||||
echo "VCS files cleaned."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
## LSOF stats. Print number of open files per process.
|
## LSOF stats. Print number of open files per process.
|
||||||
lsofstat()
|
lsofstat()
|
||||||
{
|
{
|
||||||
|
@ -763,7 +351,7 @@ bindatasearch()
|
||||||
xmulti ()
|
xmulti ()
|
||||||
{
|
{
|
||||||
if [ $# -ne 1 ]; then
|
if [ $# -ne 1 ]; then
|
||||||
echo "Wrong number of argument."
|
echo "Usage: $0 VIDEOPORT"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -773,127 +361,13 @@ xmulti ()
|
||||||
xmultioff ()
|
xmultioff ()
|
||||||
{
|
{
|
||||||
if [ $# -ne 1 ]; then
|
if [ $# -ne 1 ]; then
|
||||||
echo "Wrong number of argument."
|
echo "Usage: $0 VIDEOPORT"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
xrandr --output "$1" --off
|
xrandr --output "$1" --off
|
||||||
}
|
}
|
||||||
|
|
||||||
## Format C using 'indent'. Alternative to indent: astyle, uncrustify.
|
|
||||||
formatc()
|
|
||||||
{
|
|
||||||
if [ -z "$(command -v indent)" ]; then
|
|
||||||
echo "Please install 'indent'"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
_formatc_dir()
|
|
||||||
{
|
|
||||||
find "$1" -type f \
|
|
||||||
-name "*.[ch]" \
|
|
||||||
-print \
|
|
||||||
-exec indent -i4 -ppi4 -bli0 -cli4 -nut {} \;
|
|
||||||
|
|
||||||
## Remove backup files.
|
|
||||||
find "$1" -type f \( \
|
|
||||||
-name "*.[ch]~" -o \
|
|
||||||
-name "*.[ch]~[0-9]*~" \) \
|
|
||||||
-delete
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
echo "Working on current dir"
|
|
||||||
_formatc_dir "$PWD"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i ; do
|
|
||||||
echo "[$i]"
|
|
||||||
|
|
||||||
if [ -d "$i" ]; then
|
|
||||||
_formatc_dir "$i"
|
|
||||||
else
|
|
||||||
indent -i4 -ppi4 -bli0 -cli4 -nut "$i"
|
|
||||||
rm -f "$i~" "$i~[0-9]*~"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
## LaTeX quick compiler. It adds the preambule -- and the \end{document} --
|
|
||||||
## automatically.
|
|
||||||
ltx()
|
|
||||||
{
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
echo "Usage: $0 FILE"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local PREAMBLE
|
|
||||||
local END
|
|
||||||
|
|
||||||
## One line is mandatory.
|
|
||||||
PREAMBLE='\documentclass[10pt,a4paper]{article}\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}\usepackage{amsmath,amssymb,amsfonts}\usepackage{geometry}\usepackage{lmodern}\usepackage{marvosym}\usepackage{textcomp}\DeclareUnicodeCharacter{20AC}{\EUR{}}\DeclareUnicodeCharacter{2264}{\leqslant}\DeclareUnicodeCharacter{2265}{\geqslant}\begin{document}\input'
|
|
||||||
|
|
||||||
END='\end{document}'
|
|
||||||
|
|
||||||
pdflatex -file-line-error-style -interaction nonstopmode -jobname="${1%.tex}" "$PREAMBLE" "$1" "$END"
|
|
||||||
}
|
|
||||||
|
|
||||||
ediff()
|
|
||||||
{
|
|
||||||
emacs -q -l ~/.emacs-light --eval "(ediff \"$1\" \"$2\")"
|
|
||||||
}
|
|
||||||
|
|
||||||
crun()
|
|
||||||
{
|
|
||||||
if [ $# -lt 1 ]; then
|
|
||||||
echo "Usage: $0 FILE [GCC_OPTS]"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local INPUT
|
|
||||||
local GCC_OPTS
|
|
||||||
local FILE
|
|
||||||
|
|
||||||
INPUT="$1"
|
|
||||||
|
|
||||||
shift
|
|
||||||
GCC_OPTS="-O0 -Wall -Wextra -Wshadow -pthread"
|
|
||||||
if [ $# -ne 0 ]; then
|
|
||||||
GCC_OPTS="$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FILE=$(mktemp)
|
|
||||||
echo "==> gcc \"$INPUT\" -o \"$FILE\" $GCC_OPTS"
|
|
||||||
|
|
||||||
## Zsh compatibility. We need it otherwise word splitting of parameter like
|
|
||||||
## TC_SAMPLE will not work.
|
|
||||||
local STATUS
|
|
||||||
STATUS="$(set -o | grep 'shwordsplit' | awk '{print $2}')"
|
|
||||||
[ "$STATUS" = "off" ] && set -o shwordsplit
|
|
||||||
|
|
||||||
gcc "$INPUT" -o "$FILE" $GCC_OPTS
|
|
||||||
## Restore Zsh previous options. This will not turn off shwordsplit if it
|
|
||||||
## was on before calling the function.
|
|
||||||
[ "$STATUS" = "off" ] && set +o shwordsplit
|
|
||||||
|
|
||||||
echo "==> $FILE"
|
|
||||||
"$FILE"
|
|
||||||
rm "$FILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
git-check()
|
|
||||||
{
|
|
||||||
while IFS= read -r FOLDER; do
|
|
||||||
if [ -z "$(cd "${FOLDER%/*}" && git status -uno | grep "nothing to commit")" ]; then
|
|
||||||
echo "${FOLDER%/*}"
|
|
||||||
fi
|
|
||||||
done <<EOF
|
|
||||||
$(find . -type d -name ".git")
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
## Extended pgrep -a.
|
## Extended pgrep -a.
|
||||||
pgex ()
|
pgex ()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue