# Aliases ## Variables de ambiente VENV=.venv LENGTH=79 FONT_DIR=$HOME/.fonts OZSH_ALIAS=$HOME/.oh-my-zsh/custom/aliases.zsh BASH_ALIAS=$HOME/.bash_aliases RLOC_ALIAS=$HOME/Repositorios/aliases/aliases.sh REPO_ALIAS=https://gitlab.com/perritotuerto/codigo/aliases/-/raw/no-masters/aliases.sh ## Eliminación de alias previos unalias -a ## Atajos alias .1='cd ..' alias .2='cd ../..' alias .3='cd ../../..' alias c='cat' alias e='v' alias g='geany' alias l='lsd -al --permission octal' alias o='okular' alias s='scribus' alias t='tree' alias v='vim' alias ls='ls -1' alias cpd='docker cp' alias cdr='cd ~/Repositori*' alias docs='cd ~/Document*' alias repos='cdr' alias clouds='nubes' alias descargas='cdd' alias documentos='docs' alias permisos='stat -c "Permiso %a | Creación %w | Modificación %y | %n" *' alias stats='zsh_stats' ## Atajos SSH alias agroteso='ssh agroteso' alias aml='ssh aml' alias aml-stats='ssh aml "docker stats -a"' alias cel='ssh cel' alias cuates='ssh cuates' alias de='ssh -X de' alias pc='ssh -X pc' alias perro='ssh -X perro' alias ppp='ssh ppp' alias prolibreros='ssh prolibreros' alias prolibreros-stats='ssh prolibreros "docker stats -a"' alias prolibreros-tunel='ssh prolibreros -D 1234 "docker stats -a"' alias vpn='ssh vpn' alias vpn-stats='ssh vpn "docker stats -a"' ## Personalizaciones alias mv='mv -v' alias rm='rm -v' alias cp='cp -rv' alias df='df -hT' alias du='du -sh' alias sed='sed -zr' alias ssh='ssh -o ServerAliveInterval=30' alias free='free -h' alias diff='diff --color' alias mkdir='mkdir -p' alias rsync='rsync -varuch --progress' alias perl-rename='perl-rename -v' alias pip='pip3' alias python='python3' alias ipython='ipython3' ## Acciones alias buscar="grep -REin --color=always --exclude-dir={.git,.venv,.pytest_cache,__pycache__,\*egg-info}" alias search="buscar" alias rastrear='fd' alias trace='rastrear' alias rastrear-todo='find / -iname' alias trace-all='rastrear-todo' alias copiar='xclip -selection clipboard <' alias copy='copiar' alias refresh='recargar' alias install='instalar' alias uninstall='desinstalar' alias remove='desinstalar' alias update='actualizar' alias upgrade='actualizar' ## A modo de programitas alias alv='rm -rf' alias doc2md='pandoc --markdown-headings=atx -V lang=es' alias mi-ip='curl https://ipapi.co/json' alias my-ip='mi-ip' alias pecas-legacy="sudo docker start pecas && sudo docker exec -it pecas /bin/zsh -l" alias pacman-limpiar='echo "Limpiando caché…" && sudo pacman -Scc && echo "\nEliminando paquetes huérfanos…" && sudo pacman -Rs $(pacman -Qqdt)' alias pacman-clean='pacman-limpiar' alias docker-limpiar='sudo docker system prune -a' alias docker-clean='docker-limpiar' alias añadir-fuentes='font-add' alias tiempo='/usr/bin/t' alias untar='tar -xvf' alias untargz='tar -xvzf' ## Monerías alias arcoiris='journalctl --no-pager | dotacat' alias matrix='tmatrix --mode=dense -f 0,5 -C magenta' alias acuario='asciiquarium' alias tren='sl' alias fantasma='oneko &' ## Funciones ### Detecta tipo de distribución distro-name () { echo $(awk -F= '/^NAME/{print $2}' /etc/os-release) | sed 's/"//g' } ### Imprime errores echo-error () { echo "ERROR: $1" return 1 } ### Actualizador actualizar () { case $1 in alias | aliases) echo "Actualizando alias" curl -o $BASH_ALIAS $REPO_ALIAS if [ -f "$OZSH_ALIAS" ]; then cp $BASH_ALIAS $OZSH_ALIAS fi recargar ;; paquetes | packages) echo "Actualizando paquetes" if [[ $(distro-name) = "Arch Linux" ]]; then sudo pacman -Syy sudo pacman -S archlinux-keyring else sudo apt update fi ;; todo | sistema | all | system) echo "Actualizando sistema" if [[ $(distro-name) = "Arch Linux" ]]; then yay -Su else sudo apt upgrade fi ;; -h | --help | help | ayuda) actualizar-help ;; *) actualizar alias actualizar paquetes actualizar sistema ;; esac } actualizar-help () { echo "actualizar: utilidad para hacer actualizaciones. Uso: actualizar [OPT] Opciones: alias | aliases Actualiza alias. paquetes | packages Actualiza repositorio de paquetes. -h | --help | help | ayuda Despliega esta ayuda. todo | sistema | all | system Actualiza el sistema. vacío Actualiza el sistema con actualización previa de paquetes. Ejemplos: actualizar alias actualizar paquetes actualizar -h actualizar todo actualizar" } ### Instalador instalar (){ if [[ $(distro-name) = "Arch Linux" ]]; then yay -Syy $@ else sudo apt install $@ fi } ### Desinstalador desinstalar (){ if [[ $(distro-name) = "Arch Linux" ]]; then yay -Rss $@ else sudo apt purge $@ sudo apt clean sudo apt autoremove fi } ### Gestión de alias aliases () { case $1 in actualizar | update) actualizar aliases ;; ver | see) echo $OZSH_ALIAS c $OZSH_ALIAS ;; editar | edit) v $OZSH_ALIAS ;; enlazar | link) if [ -f "$RLOC_ALIAS" ]; then if [ -f "$OZSH_ALIAS" ]; then ln -fs $RLOC_ALIAS $OZSH_ALIAS else ln -fs $RLOC_ALIAS $BASH_ALIAS fi recargar else echo-error "no se encontró archivo '$RLOC_ALIAS' para copia." fi ;; -h | --help | help | ayuda) aliases-help ;; *) alias ;; esac } aliases-help () { echo "aliases: utilidad para hacer gestionar alias. Uso: aliases [OPT] Opciones: actualizar | update Actualiza aliases. ver | see Muestra contenido de archivo de aliases. editar | edit Edita aliases. enlazar | link Genera enlace simbólico entre repo 'aliases' y archivo de aliases. -h | --help | help | ayuda Despliega esta ayuda. vacío Uso regular de 'alias'. Ejemplos: aliases ver aliases editar aliases -h aliases" } ### Recarga aliases recargar () { if [ -f "$OZSH_ALIAS" ]; then source $HOME/.zshrc else source $HOME/.bashrc fi } ### Entra a descargas cdd () { if [ -d "$HOME/Descargas" ]; then cd $HOME/Descargas else cd $HOME/Downloads fi } ### Entra a nubes nubes () { if [ -d "$HOME/Nubes" ]; then cd $HOME/Nubes else cd $HOME/Clouds fi } ## Instalador de fuentes font-add () { if [ ! -d "$FONT_DIR" ]; then mkdir $FONT_DIR fi cp $@ $FONT_DIR fc-cache -fv } ## Conversor de imágenes o documentos con ImageMagick o Pandoc convertir () { echo "convertir FORMATO1 a FORMATO2 [con pandoc]" for file in *.$1; do echo "$file => $file.$3" if [ "$#" -eq 5 ]; then doc2md $file -o $file.$3 else convert -flatten $file $file.$3 fi done } ## Gestiona archivos MD md () { case $1 in formatear | format | f) pandoc --reference-links --reference-location=document \ --columns=$LENGTH -o $2 $2 ;; convertir | convert) pandoc --markdown-headings=atx --standalone \ -V lang=es -o $4 $2 ;; leer | read | ver | cat | c) glow -w $LENGTH -p $2 ;; editar | edit | e) $EDITOR $2 ;; -h | --help | help | ayuda) md-help ;; esac } md-help () { echo "md: utilidad para hacer gestionar archivos Markdown. Uso: md [OPT] Opciones: formatear | format | f Da formato al archivo. convertir | convert Convierte el archivo. leer | read | ver | cat | c Muestra el archivo. editar | edit | e Edita el archivo con $EDITOR. -h | --help | help | ayuda Despliega esta ayuda. Ejemplos: md formatear archivo.md md convertir archivo.md a archivo.html md leer archivo.md md editar archivo.md md ayuda" } # Obtiene directorio padre parent () { if [ $# -eq 0 ]; then curr="$PWD" else curr=$1 fi echo $(python3 -c """ from pathlib import Path print(Path('$curr').resolve().parent) """) unset curr } ## Desactiva o activa virtualenv check-venv () { if [ $# -eq 0 ]; then curr="$PWD" else curr=$1 fi if [ -f "$curr/$VENV/bin/activate" ]; then source $curr/$VENV/bin/activate elif [[ $(parent $1) != "/" ]]; then check-venv $(parent $1) else type deactivate &>/dev/null && deactivate fi unset curr } check-venv # Ejecuta cuando se carga ## Agrega y arranca virtualenv venv () { virtualenv $VENV check-venv } ## Modifica comportamiento de cd cd () { builtin cd $1 check-venv } ## Embellece y verifica código pymp () { case $1 in -f | formatear | format) black --line-length $LENGTH ${@:$#} ;; -h | --help | help | ayuda) pymp-help ;; esac if [ ! -d "${@:$#}" ] && [ ! -f "${@:$#}" ]; then echo-error "último argumento debe ser un fichero existente." fi flake8 --max-line-length $LENGTH ${@:$#} vulture ${@:$#} } pymp-help () { echo "pymp: utilidad para enchular código de Python. Uso: pymp [OPT] [FILE|DIR] Opciones: -f | formatear | format Da formato a los archivos. -h | --help | help | ayuda Despliega esta ayuda. Ejemplos: pymp archivo.py pymp formatear . pymp ayuda" return 0 }