Files
lnx-arch/dots/bash/.bashrc
committer@tuxwarrior bc3f8f7394 cleanup
2026-04-04 17:21:01 -05:00

594 lines
19 KiB
Bash

#
# ~/.bashrc :: by frode klevstul
#
# ---
# special stuff
# ---
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# https://github.com/gsamokovarov/jump
eval "$(jump shell --bind=j)"
# https://github.com/ajeetdsouza/zoxide
eval "$(zoxide init bash)"
# ---
# environment variables
# ---
# see `dots/environment/environment`
# ---
# miscellaneous aliases
# ---
alias azurevpnclient="/opt/microsoft/microsoft-azurevpnclient/microsoft-azurevpnclient"
alias biggestfiles="find ~ -type f -exec du -h {} + 2>/dev/null | sort -hr | head -n 20"
alias cp="cp -i" # confirm before overwriting something
alias ct="sudo ct"
alias decrypt="gpg --decrypt"
alias df='df -h' # human-readable sizes
alias diskusage="ncdu -x"
alias dragon="dragon-drop --and-exit --all --print-path"
alias du="du --summarize --human-readable"
alias dus="du --summarize --human-readable * | sort -h"
alias encrypt="gpg --encrypt --sign --recipient frode@klevstul.com"
alias extract="extract.sh"
alias gparted="sudo gparted"
alias grep='grep --color=auto'
alias hyprRld="hyprctl reload"
alias hyprUpd="ct d h && hyprRld"
alias ipadr='ip -br a'
alias ipcam="ffplay rtsp://192.168.31.220:554/1"
alias ipify='http https://api.ipify.org?format=json'
alias journal='journalctl --since "1 hour ago"'
alias keyringreset="trash-put /home/poq/.local/share/keyrings/*.keyrings"
alias ls='ls --color=auto'
alias myip="echo $(wget http://ipinfo.io/ip -qO -)"
alias neofetch='fastfetch'
alias quantumfix="pw-metadata -n settings 0 clock.force-quantum 1024"
alias sb="unalias -a; source ~/.bashrc"
alias sbr="unalias -a; source /home/poq/syncDir/gitRepos/gi.op.fo/lnx-arch/dots/bash/.bashrc" # source bash (from) repo
alias sizeInBytes="stat -c %s"
alias ssh_weba_r="ssh -v -t root@weba -p 1808 'export TERM=xterm; cd /tmp; bash -l'"
alias ssh_weba_u="ssh -v -t usr@weba -p 1808 'export TERM=xterm; cd /tmp; bash -l'"
alias ssh="ssh -v"
alias tp-empty="trash-empty && gio trash --empty"
alias tp-list="tree ~/.local/share/Trash/"
alias tp-restore="trash-restore"
alias tp="tp.sh"
alias trash-empty="trash-empty && gio trash --empty"
alias tree="tree --du -h"
# app images
alias pgmodeler2="/home/poq/syncDir/swas/portableApps/pgmodeler_plus-2*"
alias pgmodeler="/home/poq/syncDir/swas/portableApps/pgmodeler_plus-1*"
# ---
# terminal
# ---
# x terminal shell start string | https://askubuntu.com/questions/1340319/ps1-string-full-documentation-and-reference-page
# https://bash-prompt-generator.org/
# https://askubuntu.com/questions/193416/adding-timestamps-to-terminal-prompts
PS1='\n⚙[\D{%y%m%d%H%M}|\u@\h|\w]\$ '
#PS1='\[\e[01;32m\]\u@\h \[\e[01;34m\]\w\[\e[00m\]\$ '
# change the window title of x terminals
case ${TERM} in
xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
;;
screen*)
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"'
;;
esac
# ---
# lf & superfile
# ---
# lf (change directory on quit)
# ---
lf() {
local tmp=$(mktemp)
command foot lf -last-dir-path="$tmp" "$@" &>/dev/null &
if [[ -f "$tmp" ]]; then
local dir=$(cat "$tmp")
rm -f "$tmp"
if [[ -d "$dir" && "$dir" != "$(pwd)" ]]; then
cd "$dir"
fi
fi
}
# superfile (change directory on quit)
# ---
spf() {
os=$(uname -s)
# Linux
if [[ "$os" == "Linux" ]]; then
export SPF_LAST_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/superfile/lastdir"
fi
command spf "$@"
[ ! -f "$SPF_LAST_DIR" ] || {
. "$SPF_LAST_DIR"
rm -f -- "$SPF_LAST_DIR" > /dev/null
}
}
# ---
# misc
# ---
gpxImporter() {
cd /home/poq/syncDir/gitRepos/gi.op.fo/gpx-importer/go/src/
go run main.go
cd -
}
randoms() {
echo "----------"
ranwrd1=$(shuf -n 1 /usr/share/dict/cracklib-small)
ranwrd1="${ranwrd1//[^[:alpha:]]/}"
ranwrd2=$(shuf -n 1 /usr/share/dict/cracklib-small)
ranwrd2="${ranwrd2//[^[:alpha:]]/}"
rancmd=$(compgen -ac | shuf -n 1)
randnum=$(( 1000 + SRANDOM % 9000 ))
randalp=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10)
echo "w1: ${ranwrd1} | w2: ${ranwrd2} | c: ${rancmd} | n: ${randnum} | a: ${randalp}"
randstr0="${randnum} ${ranwrd1} ${ranwrd2} ${rancmd}_${randalp}"
randstr1="${randnum}_${ranwrd1}_${ranwrd2}_${rancmd}${randalp}"
randstr2="${randnum}${ranwrd1}${ranwrd2}${rancmd//[^[:alpha:]]/}${randalp}"
echo "s0: ${randstr0}"
echo "s1: ${randstr1}"
echo "s2: ${randstr2}"
echo "----------"
}
# ---
# mounting
# ---
alias nas-mount="nas mount 192.168.31.77"
alias nas-umount="nas umount"
nas() {
if [[ ! -e "/mnt/nas" ]] ; then
sudo mkdir -p "/mnt/nas"
sudo mkdir -p "/mnt/nas-fam"
elif [[ ! -d "/mnt/nas" ]] || [[ ! -d "/mnt/nas-fam" ]] ; then
echo "'/mnt/nas' and/or '/mnt/nas-fam' exist, but is not a directory" 1>&2
fi
if [[ -n $1 ]] ; then
if [[ $1 == "umount" ]] || [[ $1 == "unmount" ]] ; then
echo "umount /mnt/nas & /mnt/nas-fam"
sudo umount -l /mnt/nas
sudo umount -l /mnt/nas-fam
elif [[ $1 == "mount" ]] && [[ -n $2 ]]; then
echo "mount /mnt/nas & /mnt/nas-fam"
sudo mount -t cifs -o credentials=/home/poq/syncDir/secrets/nas/lillesorteboks.txt,iocharset=utf8,noperm //$2/fro /mnt/nas
sudo mount -t cifs -o credentials=/home/poq/syncDir/secrets/nas/lillesorteboks.txt,iocharset=utf8,noperm //$2/fam /mnt/nas-fam
tree -L 2 /mnt/nas
tree -L 2 /mnt/nas-fam
else
echo "missing the ip when doing a mount? or, just trying a weird command? try: 'nas {mount,umount} {ip?}'"
fi
else
echo "sry, bud! try: 'nas {mount,umount} {ip?}'"
fi
}
# ---
# multimedia
# ---
#alias videoCompressor="/home/poq/syncDir/gitRepos/gi.op.fo/miniProjects/2104_videoCompressor/src/vc_v2.sh"
#alias videoWatermark="/home/poq/syncDir/gitRepos/gi.op.fo/miniProjects/2104_videoCompressor/src/vcwm_v1.sh"
#alias toJpg='/home/poq/syncDir/gitRepos/gi.op.fo/miniProjects/2306_toJpg/toJpg.sh'
# https://itsfoss.com/compress-pdf-linux/
pdfCompress() {
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=$1.compressed.pdf $1
}
# https://stackoverflow.com/questions/8933053/check-duration-of-audio-files-on-the-command-line
lengthInSeconds() {
ffprobe -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $1 2>/dev/null
}
# ---
# networking
# ---
nmrestart() {
systemctl restart NetworkManager
systemctl status NetworkManager
}
# ---
# rotate
# ---
# https://boulderappsco.postach.io/post/convert-decimal-to-base-36-alpha-numeric-in-bash-linux
function decimal_to_base36(){
BASE36=($(echo {0..9} {A..Z}));
arg1=$@;
for i in $(bc <<< "obase=36; $arg1"); do
echo -n ${BASE36[$(( 10#$i ))]}
done && echo
}
rot() {
if [[ -n $1 ]] && [[ -n $2 ]] ; then
if [[ $1 == "1" ]] ; then
echo "$2" | tr 'a-z' 'b-za'
elif [[ $1 == "-1" ]] ; then
echo "$2" | tr 'b-za' 'a-z'
elif [[ $1 == "2" ]] ; then
echo "$2" | tr 'a-z' 'c-zab'
elif [[ $1 == "-2" ]] ; then
echo "$2" | tr 'c-zab' 'a-z'
elif [[ $1 == "3" ]] ; then
echo "$2" | tr 'a-z' 'd-zabc'
elif [[ $1 == "-3" ]] ; then
echo "$2" | tr 'd-zabc' 'a-z'
elif [[ $1 == "4" ]] ; then
echo "$2" | tr 'a-z' 'e-zabcd'
elif [[ $1 == "-4" ]] ; then
echo "$2" | tr 'e-zabcd' 'a-z'
elif [[ $1 == "5" ]] ; then
echo "$2" | tr 'a-z' 'f-zabcde'
elif [[ $1 == "-5" ]] ; then
echo "$2" | tr 'f-zabcde' 'a-z'
elif [[ $1 == "6" ]] ; then
echo "$2" | tr 'a-z' 'g-zabcdef'
elif [[ $1 == "-6" ]] ; then
echo "$2" | tr 'g-zabcdef' 'a-z'
elif [[ $1 == "7" ]] ; then
echo "$2" | tr 'a-z' 'h-zabcdefg'
elif [[ $1 == "-7" ]] ; then
echo "$2" | tr 'h-zabcdefg' 'a-z'
elif [[ $1 == "8" ]] ; then
echo "$2" | tr 'a-z' 'i-zabcdefgh'
elif [[ $1 == "-8" ]] ; then
echo "$2" | tr 'i-zabcdefgh' 'a-z'
elif [[ $1 == "9" ]] ; then
echo "$2" | tr 'a-z' 'j-zabcdefghi'
elif [[ $1 == "-9" ]] ; then
echo "$2" | tr 'j-zabcdefghi' 'a-z'
elif [[ $1 == "10" ]] ; then
echo "$2" | tr 'a-z' 'k-zabcdefghij'
elif [[ $1 == "-10" ]] ; then
echo "$2" | tr 'k-zabcdefghij' 'a-z'
elif [[ $1 == "11" ]] ; then
echo "$2" | tr 'a-z' 'l-zabcdefghijk'
elif [[ $1 == "-11" ]] ; then
echo "$2" | tr 'l-zabcdefghijk' 'a-z'
elif [[ $1 == "12" ]] ; then
echo "$2" | tr 'a-z' 'm-zabcdefghijkl'
elif [[ $1 == "-12" ]] ; then
echo "$2" | tr 'm-zabcdefghijkl' 'a-z'
elif [[ $1 == "13" ]] ; then
echo "$2" | tr 'a-z' 'n-zabcdefghijklm'
elif [[ $1 == "-13" ]] ; then
echo "$2" | tr 'n-zabcdefghijklm' 'a-z'
elif [[ $1 == "14" ]] ; then
echo "$2" | tr 'a-z' 'o-zabcdefghijklmn'
elif [[ $1 == "-14" ]] ; then
echo "$2" | tr 'o-zabcdefghijklmn' 'a-z'
elif [[ $1 == "15" ]] ; then
echo "$2" | tr 'a-z' 'p-zabcdefghijklmno'
elif [[ $1 == "-15" ]] ; then
echo "$2" | tr 'p-zabcdefghijklmno' 'a-z'
elif [[ $1 == "16" ]] ; then
echo "$2" | tr 'a-z' 'q-zabcdefghijklmnop'
elif [[ $1 == "-16" ]] ; then
echo "$2" | tr 'q-zabcdefghijklmnop' 'a-z'
elif [[ $1 == "17" ]] ; then
echo "$2" | tr 'a-z' 'r-zabcdefghijklmnopq'
elif [[ $1 == "-17" ]] ; then
echo "$2" | tr 'r-zabcdefghijklmnopq' 'a-z'
elif [[ $1 == "18" ]] ; then
echo "$2" | tr 'a-z' 's-zabcdefghijklmnopqr'
elif [[ $1 == "-18" ]] ; then
echo "$2" | tr 's-zabcdefghijklmnopqr' 'a-z'
elif [[ $1 == "19" ]] ; then
echo "$2" | tr 'a-z' 't-zabcdefghijklmnopqrs'
elif [[ $1 == "-19" ]] ; then
echo "$2" | tr 't-zabcdefghijklmnopqrs' 'a-z'
elif [[ $1 == "20" ]] ; then
echo "$2" | tr 'a-z' 'u-zabcdefghijklmnopqrst'
elif [[ $1 == "-20" ]] ; then
echo "$2" | tr 'u-zabcdefghijklmnopqrst' 'a-z'
elif [[ $1 == "21" ]] ; then
echo "$2" | tr 'a-z' 'v-zabcdefghijklmnopqrstu'
elif [[ $1 == "-21" ]] ; then
echo "$2" | tr 'v-zabcdefghijklmnopqrstu' 'a-z'
elif [[ $1 == "22" ]] ; then
echo "$2" | tr 'a-z' 'w-zabcdefghijklmnopqrstuv'
elif [[ $1 == "-22" ]] ; then
echo "$2" | tr 'w-zabcdefghijklmnopqrstuv' 'a-z'
elif [[ $1 == "23" ]] ; then
echo "$2" | tr 'a-z' 'x-zabcdefghijklmnopqrstuvw'
elif [[ $1 == "-23" ]] ; then
echo "$2" | tr 'x-zabcdefghijklmnopqrstuvw' 'a-z'
elif [[ $1 == "24" ]] ; then
echo "$2" | tr 'a-z' 'y-zabcdefghijklmnopqrstuvwx'
elif [[ $1 == "-24" ]] ; then
echo "$2" | tr 'y-zabcdefghijklmnopqrstuvwx' 'a-z'
elif [[ $1 == "25" ]] ; then
echo "$2" | tr 'a-z' 'z-zabcdefghijklmnopqrstuvwxy'
elif [[ $1 == "-25" ]] ; then
echo "$2" | tr 'z-zabcdefghijklmnopqrstuvwxy' 'a-z'
fi
fi
}
rotl() {
if [[ -n $1 ]] ; then
size=${#1}
if [[ "$size" > 25 ]] && [[ "$size" < 51 ]] ; then
echo "reduce size by 25"
size=$((size - 25))
fi
# if there is a second argument, only the rotation will be printed
if [[ -n $2 ]] ; then
rot $size $1
else
# https://stackoverflow.com/questions/20871534/concatenate-in-bash-the-output-of-two-commands-without-newline-character
{ echo "rot +$size: "; rot $size $1; } | tr "\n" " "
echo
{ echo "rot -$size: "; rot -$size $1; } | tr "\n" " "
echo
fi
fi
}
rote() {
rote36 $1
}
rote10() {
if [[ -n $1 ]] ; then
datestamp=$(date +%y%m%d)_
rotl=$(rotl $1 0)
# ${param/pattern/replacement}
rotl="${rotl/./}"
emailaddress=$datestamp$rotl"@reduxmail.com"
echo $emailaddress
fi
}
rote36() {
if [[ -n $1 ]] ; then
datestamp=$(date +%y%m%d)_
year=$(decimal_to_base36 $(date +%y))
month=$(decimal_to_base36 $(date +%m))
day=$(decimal_to_base36 $(date +%d))
datestamp=${year}${month}${day}_
datestamp=`echo "${datestamp}" | tr '[A-Z]' '[a-z]'`
rotl=$(rotl $1 0)
# ${param/pattern/replacement}
rotl="${rotl/./}"
emailaddress=$datestamp$rotl"@reduxmail.com"
echo $emailaddress
fi
}
# ---
# searching
# ---
# find a file (faf)
faf() {
path="."
if [[ -n $2 ]]; then
path=$2
fi
find ${path} -type f -iname ${1} 2>/dev/null
}
# find in file (fif) | https://stackoverflow.com/questions/16956810/find-all-files-containing-a-specific-text-string-on-linux
fif() {
path="."
if [[ -n $2 ]]; then
path=$2
fi
grep -rnw ${path} -e ${1} 2>/dev/null
}
# ---
# web++
# ---
# ajp related
# ---
# ajp-cp2dropbox() {
# "/home/poq/syncDir/gitRepos/gi.op.fo/miniProjects/2106_ajpDropboxDeployer/archi.sh" "$1" "$2"
# }
podigy() {
cd /home/poq/syncDir/gitRepos/gi.op.fo/podigy/src
source venv/bin/activate
python archi.py -s /home/poq/syncDir/gitRepos/gi.op.fo/fiodb/db/podigy/sites
deactivate
}
# podigy-pywsdb() {
# podigy
# /home/poq/syncDir/gitRepos/gi.op.fo/pyws/deploy/deployToBuildServer.sh db
# }
# jeton
# ---
jeton() {
cd /home/poq/syncDir/gitRepos/gi.op.fo/jeton/src/
source venv/bin/activate
python archi.py -s /home/poq/syncDir/gitRepos/gi.op.fo/fiodb/db/jeton/in/sites -r $1
deactivate
}
# misc websites
# ---
alias 00101111.xyz-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/00101111.xyz/www/ usr@178.156.192.201:/var/www/00101111.xyz/"
alias factor.red-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/mini-websites/factor.red/ usr@178.156.192.201:/var/www/factor.red/"
alias op.fo-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/mini-websites/op.fo/ usr@178.156.192.201:/var/www/op.fo/"
alias wa.fo-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/mini-websites/wa.fo/ usr@178.156.192.201:/var/www/wa.fo/"
# jongleur
# ---
jcssbuilder() {
cd /home/poq/syncDir/gitRepos/gi.op.fo/jCssBuilder/src
source venv/bin/activate
python /home/poq/syncDir/gitRepos/gi.op.fo/jCssBuilder/src/archi.py
deactivate
}
jongleur-activate() {
cd /home/poq/syncDir/gitRepos/gitlab.com/jongleur/src
source venv/bin/activate
}
jump-to-downloads() {
cd /home/poq/syncDir/0_downloads
}
ajp.fm-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/ajp.fm/jongleur/run.sh
deactivate
jump-to-downloads
}
ajp.fm-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/ajp.fm/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias ajp.fm-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/ajp.fm/jongleur/html_export/ usr@178.156.192.201:/var/www/ajp.fm/jongleur/"
antijanteboka.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/antijanteboka.com/jongleur/run.sh
deactivate
jump-to-downloads
}
antijanteboka.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/antijanteboka.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias antijanteboka.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/antijanteboka.com/jongleur/html_export/ usr@178.156.192.201:/var/www/antijanteboka.com/jongleur/"
antijantemiriam.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/antijantemiriam.com/jongleur/run.sh
deactivate
jump-to-downloads
}
antijantemiriam.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/antijantemiriam.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias antijantemiriam.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/antijantemiriam.com/jongleur/html_export/ usr@178.156.192.201:/var/www/antijantemiriam.com/jongleur/"
billgoats.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/billgoats.com/jongleur/run.sh
deactivate
jump-to-downloads
}
billgoats.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/billgoats.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias billgoats.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/billgoats.com/jongleur/html_export/ usr@178.156.192.201:/var/www/billgoats.com/jongleur/"
curious.art-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/curious.art/jongleur/run.sh
deactivate
jump-to-downloads
}
curious.art-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/curious.art/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias curious.art-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/curious.art/jongleur/html_export/ usr@178.156.192.201:/var/www/curious.art/jongleur/"
curiouscreators.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/curiouscreators.com/jongleur/run.sh
deactivate
jump-to-downloads
}
curiouscreators.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/curiouscreators.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias curiouscreators.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/curiouscreators.com/jongleur/html_export/ usr@178.156.192.201:/var/www/curiouscreators.com/jongleur/"
frodr.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/frodr.com/jongleur/run.sh
deactivate
jump-to-downloads
}
frodr.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/frodr.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias frodr.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/frodr.com/jongleur/html_export/ usr@178.156.192.201:/var/www/frodr.com/jongleur/"
klevstul.com-build() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/klevstul.com/jongleur/run.sh
deactivate
jump-to-downloads
}
klevstul.com-build-all() {
jongleur-activate
/home/poq/syncDir/gitRepos/gi.op.fo/klevstul.com/jongleur/runAll.sh
deactivate
jump-to-downloads
}
alias klevstul.com-deploy="rsync -v -a --progress --stats --delete-delay -e 'ssh -p 1808' /home/poq/syncDir/gitRepos/gi.op.fo/klevstul.com/jongleur/html_export/ usr@178.156.192.201:/var/www/klevstul.com/jongleur/"