dotfiles/shell/scripts.zsh
Diogo Cordeiro c6cc2d3f9d first commit
2021-02-18 17:53:07 +00:00

395 lines
8.8 KiB
Bash

screencast() {
if [ ! -z $1 ] ; then
ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2}') -i :0.0 -f pulse -i default $1
else
echo "You need to precise an output file as first argument - eg 'example.mkv'"
fi
}
oscreencast() {
if [ ! -z $1 ] ; then
ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2}') -i :0.0 $1
else
echo "You need to precise an output file as first argument - eg 'example.mkv'"
fi
}
updatesys() {
sh $DOTFILES/update.sh
if hash aurman 2>/dev/null; then
aurman -Syu
elif hash yay 2>/dev/null; then
yay -Syu
else
sudo pacman -Syu
fi
}
extract() {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*) echo "'$1' cannot be extracted" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
compress() {
tar cvzf $1.tar.gz $1
}
screenshot () {
DIR="${HOME}/documents/images/screenshots"
DATE="$(date +%Y%m%d-%H%M%S)"
NAME="${DIR}/screenshot-${DATE}.png"
LOG="${DIR}/screenshots.log"
# Check if the dir to store the screenshots exists, else create it:
if [ ! -d "${DIR}" ]; then mkdir -p "${DIR}"; fi
if [ ! -f "${LOG}" ]; then touch "${LOG}"; fi
# Screenshot a selected window
if [ "$1" = "win" ]; then import -format png "${NAME}"; fi
# Screenshot the entire screen
if [ "$1" = "scr" ]; then import -format png -window root "${NAME}"; fi
# Screenshot a selected area
if [ "$1" = "area" ]; then import -format png "${NAME}"; fi
if [[ $# = 0 ]]; then
# Display a warning if no area defined
echo "No screenshot area has been specified. Please choose a command: win, scr, area. Screenshot not taken."
echo "${DATE}: No screenshot area has been defined. Screenshot not taken." >> "${LOG}"
else
# Save the screenshot in the directory and edit the log
echo "${NAME}" >> "${LOG}"
fi
}
imgsize() {
width=$(identify -format "%w" "$1")> /dev/null
height=$(identify -format "%h" "$1")> /dev/null
echo -e "Size of $1: $width*$height"
}
imgresize() {
filename=${1%\.*}
extension="${1##*.}"
separator="_"
finalName="$filename$separator$2.$extension"
convert $1 -quality 100 -resize $2 $finalName
echo "$finalName"
}
imgresizeall() {
for f in *.${1}; do
imgresize "$f" ${2}
done
}
imgoptimize() {
filename=${1%\.*}
extension="${1##*.}"
separator="_"
suffix="optimized"
finalName="$filename$separator$suffix.$extension"
convert $1 -strip -interlace Plane -quality 85% $finalName
echo "$finalName created"
}
Imgoptimize() {
filename=${1%\.*}
extension="${1##*.}"
separator="_"
suffix="optimized"
finalName="$filename$separator$suffix.$extension"
convert $1 -strip -interlace Plane -quality 85% $1
echo "$1 created"
}
imgoptimizeall() {
for f in *.${1}; do
imgoptimize "$f"
done
}
Imgoptimizeall() {
for f in *.${1}; do
Imgoptimize "$f"
done
}
imgconvjpg() {
if [ ! -z "$1" ];
then
filename=${1%\.*}
magick convert $1 "${filename}.jpg"
else
echo -e "You need to add an image to convert as param!"
fi
}
imgconvpng() {
if [ ! -z "$1" ];
then
filename=${1%\.*}
magick convert $1 "${filename}.png"
else
echo -e "You need to add an image to convert as param!"
fi
}
gtD() {
git tag -d $1
if [ ! -z "$2" ];
then
git push $2 :refs/tags/$1
else
git push origin :refs/tags/$1
fi
}
sshcreate() {
if [ ! -z "$1" ];
then
ssh-keygen -f $HOME/.ssh/$1 -t rsa -N '' -C "$1"
chmod 700 $HOME/.ssh/$1*
fi
}
dback () {
if [ ! -z $1 ] && [ ! -z $2 ];
then
if [ ! -z $3 ];
then
BS=$3
else
BS="512k"
fi
dialog --defaultno --title "Are you sure?" --yesno "This will copy $1 to $2 (bitsize: $BS). Everything on $2 will be deleted.\n\n
Are you sure?" 15 60 || exit
(sudo pv -n $1 | sudo dd of=$2 bs=$BS conv=notrunc,noerror) 2>&1 | dialog --gauge "Backup from disk $1 to disk $2... please wait" 10 70 0
else
echo "You need to provide an input disk as first argument (i.e /dev/sda) and an output disk as second argument (i.e /dev/sdb)"
fi
}
blimg() {
if [ ! -z $1 ] && [ ! -z $2 ] && [ ! -z $3 ];
then
CYEAR=$(date +'%Y')
BASEDIR="${HOME}/workspace/webtechno/static"
#Basedir current year
BASEDIRY="${HOME}/workspace/webtechno/static/${CYEAR}"
if [ ! -d $BASEDIRY ];
then
mkdir $BASEDIRY
fi
#basedir current article
BASEDIRC="${BASEDIRY}/${2}"
if [ ! -d $BASEDIRP ];
then
mkdir $BASEDIRP
fi
IMGRESIZED=imgresize "${1} 780"
echo "$IMGRESIZED"
fi
}
postgdump() {
USER="postgres"
HOST="localhost"
if [ ! -z $1 ];
then
if [ -f "${1}.sql" ];
then
rm -i "${1}.sql"
fi
if [ $# = 1 ];
then
pg_dump -c -U $USER -h $HOST $1 | pv --progress > "${1}.sql"
echo $1
fi
if [ $# = 2 ];
then
pg_dump -c -U $2 -h $HOST $1 | pv --progress > "${1}.sql"
echo $1
fi
if [ $# = 3 ];
then
pg_dump -c -U $2 -h $3 $1 | pv --progress > "${1}.sql"
echo $1
fi
fi
if [ $# = 0 ];
then
echo "You need at least to provide the database name"
fi
}
postgimport() {
USER="postgres"
HOST="localhost"
if [ ! -z $1 ];
DB=${1%\.*}
then
# sed -i "1s/^/CREATE DATABASE $DB;\n/" $1
if [ $# = 1 ];
then
pv --progress ${1} | psql -U $USER -h $HOST $1 -d $DB
echo $1
fi
if [ $# = 2 ];
then
pv --progress ${1} | psql -U $1 -h $HOST $1 -d $DB
echo $1
fi
if [ $# = 3 ];
then
pv --progress ${1} | psql -U $1 -h $2 $1 -d $DB
echo $1
fi
fi
if [ $# = 0 ];
then
echo "You need at least to provide the database name"
fi
}
matrix () {
lines=$(tput lines)
cols=$(tput cols)
awkscript='
{
letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"
lines=$1
random_col=$3
c=$4
letter=substr(letters,c,1)
cols[random_col]=0;
for (col in cols) {
line=cols[col];
cols[col]=cols[col]+1;
printf "\033[%s;%sH\033[2;32m%s", line, col, letter;
printf "\033[%s;%sH\033[1;37m%s\033[0;0H", cols[col], col, letter;
if (cols[col] >= lines) {
cols[col]=0;
}
}
}
'
echo -e "\e[1;40m"
clear
while :; do
echo $lines $cols $(( $RANDOM % $cols)) $(( $RANDOM % 72 ))
sleep 0.05
done | awk "$awkscript"
}
pgdump() {
pg_dump -U postgres -h localhost x_loc_0bdf08de > pulsecheck_service_test.sql
}
# Loopline system (my job) related
thriftgen() {
thrift -o . -r --gen php:server -out ./php/gen ./service.thrift
thrift -o . -r --gen go -out ./go/pkg/gen ./service.thrift
}
colorblocks() {
$DOTFILES/bash/scripts/colorblocks.sh
}
colorcards() {
$DOTFILES/bash/scripts/colorcards.sh
}
pipes() {
$DOTFILES/bash/scripts/pipes.sh
}
crypt() {
[ $# -eq 1 ] && set -- "--encrypt" "$1"
usage() { >&2 echo "Usage: crypt {-c,-d} <path>"
exit 1 ; }
case "$1" in
--encrypt|-c)
if [ -d "$2" ] ; then
dash ${HOME}/bin/pack "$2"
set 2 "${2%/}".tar.xz
elif [ -f "$2" ] ; then
xz -9 "$2"
set 2 "$2".xz
else
usage
fi
opts="-salt -e" ;;
--decrypt|-d)
[ ! -e "$2" ] && usage
opts="-d" ;;
*) usage
esac
cat "$2" | openssl aes-256-cbc $opts -a -out "$2" &&
case "$1" in
--decrypt|-d)
xz -d "$2" 2> /dev/null &&
tar xf "${2%.*}" 2> /dev/null &&
rm -rf "${2%.*}" ;;
esac
}
mkcd()
{
dir="$*";
mkdir -p "$dir" && cd "$dir";
}
updatezsh() {
rm -f $DOTFILES/antibody/plugins.sh
antibody bundle < $DOTFILES/antibody/plugins.txt > $DOTFILES/antibody/plugins.sh
antibody update
}
promptspeed() {
for i in $(seq 1 10); do /usr/bin/time zsh -i -c exit; done
}
ports() {
sudo netstat -tulpn | grep LISTEN | fzf;
}