cute bash functions
This commit is contained in:
parent
0d9a365ddc
commit
d644581eb2
124
.zshrc
124
.zshrc
|
@ -1,6 +1,7 @@
|
||||||
### ENVVARS
|
### ENVVARS
|
||||||
# zmodload zsh/zprof # for profiling, also uncomment last line
|
# zmodload zsh/zprof # for profiling, also uncomment last line
|
||||||
|
|
||||||
|
|
||||||
source "$HOME/.zprofile"
|
source "$HOME/.zprofile"
|
||||||
source "$HOME/.config/user-dirs.dirs"
|
source "$HOME/.config/user-dirs.dirs"
|
||||||
export TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S\ncpu\t%P'
|
export TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S\ncpu\t%P'
|
||||||
|
@ -18,6 +19,7 @@ export VISUAL=$(which nvim)
|
||||||
|
|
||||||
|
|
||||||
### Aliases
|
### Aliases
|
||||||
|
alias e="eza -la"
|
||||||
alias l="lsd -lah --date \"$DATEFMT\" --hyperlink=auto"
|
alias l="lsd -lah --date \"$DATEFMT\" --hyperlink=auto"
|
||||||
alias ll="lsd -lh --date \"$DATEFMT\" --hyperlink=auto"
|
alias ll="lsd -lh --date \"$DATEFMT\" --hyperlink=auto"
|
||||||
alias la="lsd -a --date \"$DATEFMT\" --hyperlink=auto"
|
alias la="lsd -a --date \"$DATEFMT\" --hyperlink=auto"
|
||||||
|
@ -50,7 +52,9 @@ alias bell="tput bel"
|
||||||
alias fd=fdfind
|
alias fd=fdfind
|
||||||
alias nobak="touch .nobackup"
|
alias nobak="touch .nobackup"
|
||||||
alias securerm="shred -zun 100"
|
alias securerm="shred -zun 100"
|
||||||
# alias shutdown="confirm shutdown"
|
alias mkpatch="diff -Naru"
|
||||||
|
alias shrug="echo -ne ¯\\\_(ツ)_/¯"
|
||||||
|
alias bak=backup
|
||||||
|
|
||||||
### Functions
|
### Functions
|
||||||
function random() {
|
function random() {
|
||||||
|
@ -128,6 +132,123 @@ function confirm-important() {
|
||||||
echo "aborting"
|
echo "aborting"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
function writepatch() {
|
||||||
|
target=$1
|
||||||
|
fname=$(basename $target)
|
||||||
|
mkdir -p a b
|
||||||
|
cp -r $target a
|
||||||
|
cp -r $target b
|
||||||
|
nvim b/$fname
|
||||||
|
diff -Naru --color='auto' a/$fname b/$fname
|
||||||
|
}
|
||||||
|
backup() {
|
||||||
|
local compress=0
|
||||||
|
local src=""
|
||||||
|
|
||||||
|
# Parse options
|
||||||
|
while getopts "z" opt; do
|
||||||
|
case $opt in
|
||||||
|
z) compress=1 ;;
|
||||||
|
*) echo "Usage: backup [-z] file_or_dir"; return 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
# Get source file/dir after option processing
|
||||||
|
src="$1"
|
||||||
|
if [ -z "$src" ]; then
|
||||||
|
echo "Error: no source specified"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if source exists
|
||||||
|
if [ ! -e "$src" ]; then
|
||||||
|
echo "Error: $src does not exist"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create backup based on type and options
|
||||||
|
if [ $compress -eq 1 ]; then
|
||||||
|
tar -I zstd -cf "${src}.tar.zstd" "$src"
|
||||||
|
elif [ -d "$src" ]; then
|
||||||
|
cp -r "$src" "${src}.bak.d"
|
||||||
|
else
|
||||||
|
cp "$src" "${src}.bak"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
restore() {
|
||||||
|
local remove=0
|
||||||
|
|
||||||
|
# Parse options
|
||||||
|
while getopts "r" opt; do
|
||||||
|
case $opt in
|
||||||
|
r) remove=1 ;;
|
||||||
|
*) echo "Usage: restore [-r] backup_file"; return 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
# Check if argument was provided
|
||||||
|
local src="$1"
|
||||||
|
if [ -z "$src" ]; then
|
||||||
|
echo "Error: no backup file specified"
|
||||||
|
echo "Usage: restore [-r] backup_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if source exists
|
||||||
|
if [ ! -e "$src" ]; then
|
||||||
|
echo "Error: $src does not exist"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to handle overwrite confirmation
|
||||||
|
confirm_overwrite() {
|
||||||
|
echo -n "$1 already exists. Overwrite? [y/N] "
|
||||||
|
read answer
|
||||||
|
[[ $answer =~ ^[Yy] ]]
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine backup type and restore accordingly
|
||||||
|
if [[ "$src" == *.tar.zstd ]]; then
|
||||||
|
local dest="${src%.tar.zstd}"
|
||||||
|
if [ -e "$dest" ]; then
|
||||||
|
if ! confirm_overwrite "$dest"; then
|
||||||
|
echo "Restore cancelled"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
rm -rf "$dest"
|
||||||
|
fi
|
||||||
|
tar -I zstd -xf "$src"
|
||||||
|
[ $remove -eq 1 ] && rm "$src"
|
||||||
|
elif [[ "$src" == *.bak.d ]]; then
|
||||||
|
local dest="${src%.bak.d}"
|
||||||
|
if [ -e "$dest" ]; then
|
||||||
|
if ! confirm_overwrite "$dest"; then
|
||||||
|
echo "Restore cancelled"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
rm -rf "$dest"
|
||||||
|
fi
|
||||||
|
cp -r "$src" "$dest"
|
||||||
|
[ $remove -eq 1 ] && rm -rf "$src"
|
||||||
|
elif [[ "$src" == *.bak ]]; then
|
||||||
|
local dest="${src%.bak}"
|
||||||
|
if [ -e "$dest" ]; then
|
||||||
|
if ! confirm_overwrite "$dest"; then
|
||||||
|
echo "Restore cancelled"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
rm -f "$dest"
|
||||||
|
fi
|
||||||
|
cp "$src" "$dest"
|
||||||
|
[ $remove -eq 1 ] && rm "$src"
|
||||||
|
else
|
||||||
|
echo "Error: $src is not a recognized backup format"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
### ---- zsh options -------------------------------------
|
### ---- zsh options -------------------------------------
|
||||||
|
@ -304,7 +425,6 @@ function load_nvm() {
|
||||||
# gpg is cool actually
|
# gpg is cool actually
|
||||||
|
|
||||||
# crypto stuff with my gpg keys
|
# crypto stuff with my gpg keys
|
||||||
export IDENTITY="Christoph J. Scherr <software@cscherr.de>"
|
|
||||||
export KEY_TYPE=ed25519
|
export KEY_TYPE=ed25519
|
||||||
export KEYID=0E777B31ACC5B69B7096C050A466E5C5D6792EE9
|
export KEYID=0E777B31ACC5B69B7096C050A466E5C5D6792EE9
|
||||||
gpgencrypt() {
|
gpgencrypt() {
|
||||||
|
|
Loading…
Reference in New Issue