Utilidades para facilitar tu vida.
¡Scripts que uso a diario, o en nuevas instalaciones de sistemas, que mejoran sustancialmente mi experiencia con Linux!
Están ordenados por cuánta utilidad me brindan.
- [2024-08-24 12:06:32 CDT] [bash-timer] Se agregó el proyecto bash-timer.
- [2024-08-23 07:09:10 CDT] [git-same-sig-time] Se agregó soporte adecuado para zonas horarias diferentes a la de la computadora del usuario.
- [2024-08-12] Se limpió mayormente el README y se tradujo al chino, hindi y español.
- [2024-08-12] [turn-off-monitors] Se agregó soporte completo para apagar monitores en Wayland para Gnome y KDE.
- [2024-08-12] [arch-pacman-dupe-cleaner] Requiere superusuario para ejecutarse.
- [2024-08-12] [gitconfig] Tiempo de espera automático para git cuando los sitios web no son accesibles.
- [2024-08-12] [bash_rc.aliases] Reemplaza ssh con mosh, si está instalado.
- [2024-08-12] [bash_rc.aliases] Se añadió un alias para que
watch
respete los alias de ~/.bashrc. - [2024-08-12] [framework/wait_until_mouse_or_keyboard_event] Bloquea la ejecución hasta que se presione una tecla, se mueva el ratón o se haga clic en un botón del ratón.
- [2024-08-12] [framework/is_root] Se agregó una función para determinar el acceso root.
- [2024-08-12] [launch-browser] Lanza navegadores basados en Chrome en Wayland nativo.
- [2024-08-12] Se añadió un .bash_profile.
-
Super Productividad
- bash_profile —
.bash_profile
y.bashrc
de alta calidad para usuarios avanzados. - bash_rc.aliases — Alias y funciones de .bashrc de alto octanaje para una mejor calidad de vida.
- bash-timer — ¡Agregue fácilmente el tiempo de ejecución legible para humanos para cada comando en bash!
- ssh-autologin — Configura automáticamente los autologins de SSH.
- ssh-keyphrase-only-once — Solo solicita tu frase de contraseña de SSH una vez por arranque.
- gitconfig — Configuración de Git CLI de alto octanaje.
- bash_profile —
-
Calidad de Vida de Git
- git-change-author — Cambia fácilmente el nombre y el correo electrónico del autor en masa en un repositorio git.
- git-commit-at-modded-time — Usa el tiempo modificado de un archivo como el tiempo de git.
- git-mtime — Restaura el tiempo de modificación de cada archivo al del historial del repositorio.
- git-same-sig-time — Unifica el tiempo de la firma GPG con el tiempo del commit.
- git-shallow-pull — Actualiza superficialmente un repositorio
git clone --depth 1
poco profundo.
-
CronTabs
- cron.daily/00_clear-cache — Elimina archivos de caché inútiles cada noche.
- cron.daily/01_purge-locales — Elimina locales internacionales sin valor.
- cron.hourly/btrfs-snapshot — Respalda tu BTRFS / cada hora.
- cron.daily/btrfs-snapshot — Respalda tu BTRFS / diariamente.
- cron.hourly/php-clean-tmp — Limpia archivos temporales de PHP en servidores ocupados.
-
Calidad de Vida
- launch-browser — Script de utilidad para lanzar navegadores que los inicia en modo Wayland completo.
- ls-by-min — Ordena la salida de
ls
por tamaño de archivo, descendente. - random-file — Elige aleatoriamente un archivo o directorio y lo muestra.
- sync-watch — Muestra una pequeña pantalla actualizada de cuántos MB necesitan escribirse en los discos.
- tar-sorted — Crea archivos tar automáticamente ordenados por nombre de archivo.
- turn-off-monitors — Apaga todos los monitores a través de la línea de comandos (CLI).
-
Scripts Fantásticos
- american-date — Una utilidad para imprimir fechas en formato americano.
- changelog-maker-lite — Crea rápidamente un hermoso registro de cambios a partir del historial de commits.
- stream-to-youtube — Transmisión en vivo directamente a YouTube desde la línea de comandos.
- sudoers.d/00_prompt_once — Solo solicita tu contraseña de sudo una vez por arranque.
- watermark.sh — Incrusta fácilmente tu propia marca de agua en videos.
- wifi-autorun-on-connect — Ejecuta automáticamente un script al conectarte a un punto de acceso Wifi.
- x265.sh — Transcodifica a h265 HEVC a través de la tarjeta gráfica Intel usando VAAPI.
-
Utilidades Esotéricas
- arch-pacman-dupe-cleaner — Elimina entradas duplicadas de Arch Linux Pacman.
- init-btrfs-rootfs — Pone todo en subvolúmenes BTRFS organizados + activa las instantáneas.
- clone-github-repos.php — Descarga todos los repositorios de GitHub de un usuario/organización.
-
Framework de Bash
- is_root — Proporciona la función
is_root
para determinar si el usuario actual tiene acceso root. - wait_until_mouse_or_keyboard_event — Bloquea la ejecución hasta que se presiona una tecla, se mueve el mouse o se hace clic en un botón del mouse.
- is_root — Proporciona la función
-
Licencia — Creative Commons v4.0 Internacional
Une muchos de los BashScripts para crear un sistema súper poderoso.
¡Este es posiblemente la pieza más valiosa del proyecto!
Estas docenas de alias hacen que trabajar con Linux y desarrollar software de aplicaciones web sea mucho más eficiente y optimizado.
¡Ve a revisar el archivo! bash_rc.aliases
¡Agregue fácilmente el tiempo de ejecución legible para humanos para cada comando en bash!
El tiempo aparecerá en la parte inferior izquierda, inmediatamente a la izquierda de su $PS1.
2 days 05:02:11.33 # A very long process
Para instalar:
curl https://raw.githubusercontent.com/hopeseekr/bash-timer/v1.5.0/install | bash
Ver el README.md para más información.
Configura automáticamente (si es necesario) una clave privada SSH y la instala en el servidor remoto (creando también el directorio .ssh, si es necesario).
Configura adecuadamente tu cliente OpenSSH e instala ssh-agent
en tu ~/.bash_profile
de tal manera que solo
tendrás que ingresar tu frase de contraseña SSH una vez por inicio de sesión para cualquier cosa que funcione con
ssh-agent
.
Un archivo .gitconfig altamente optimizado para desarrolladores de software experimentados listos para aumentar su productividad diaria.
Instálalo en ~/.gitconfig.
git pretty
git ll
Muestra un hermoso registro multicolor con fechas estándar ISO:
git fix
Salta rápidamente a rebasar (rebase) los últimos dos commits en uno solo.
git alterego
Cambia rápidamente el repositorio actual para usar tu cuenta alterego principal para un commit previamente realizado.
git ego
El inverso de git alterego.
git resign <hash>
Vuelve a firmar rápidamente commits en bloque desde hasta el más reciente.
Esto es particularmente útil cuando tu clave GPG expira y necesitas renovarla y luego volver a firmar.
git c: checkout
git cp: cherry-pick
git cpm: cherry-pick for Merge commits
Alias utilitarios para hacer que git sea más eficiente de usar.
git shows
Muestra la firma GPG para cada commit en git log.
Cambia fácilmente el nombre y el correo electrónico del autor de cualquiera de los commits en un repositorio de git.
Uso: git-change-author "Tu Nombre" "email@direccion" [SHA1]
Utiliza la hora de modificación de un archivo como la hora de git.
Ejemplo:
$ ls -l american-date
#-rwxrwxr-x+ 1 1MB Oct 14 2020 american-date
$ ./git-commit-at-modded-time american-date
$ git pretty american-date
7462b66 G 2020-10-14 15:53:34 -0500 Theodore R. Smith
Restaura la hora de modificación de cada archivo en tu directorio de trabajo a cuando fue actualizado por última vez en el repositorio remoto de git.
Cuando haces checkout de un repositorio y ejecutas esto, tu directorio de trabajo cambia de:
-rwxrwxr-x+ 1 tsmith users 1MB Oct 22 01:58 changelog-maker-lite*
-rw-rw-r--+ 1 tsmith users 1MB Oct 22 01:58 CHANGELOG.txt
-rw-rw-r--+ 1 tsmith users 1MB Oct 22 01:58 gitconfig
-rwxrwxr-x+ 1 tsmith users 1MB Oct 22 01:58 git-mtime
A:
-rwxrwxr-x+ 1 tsmith users 1MB Oct 1 08:38 changelog-maker-lite*
-rw-rw-r--+ 1 tsmith users 1MB Oct 1 01:10 gitconfig
-rwxrwxr-x+ 1 tsmith users 1MB Sep 30 23:19 git-mtime
Unifica la hora de la firma GPG con la hora del commit.
Antes:
gpg: Signature made Fri 19 Jan 2024 06:50:44 AM CST
gpg: using RSA key 4BF826131C3487ACD28F2AD8EB24A91DD6125690
gpg: Good signature from "Theodore R. Smith <[email protected]>" [ultimate]
43578ec G 2024-01-16 01:52:41 -0600 Theodore R. Smith [m] Updated the packages and exclusion lists. HEAD
gpg: Signature made Fri 19 Jan 2024 06:50:25 AM CST
gpg: using RSA key 4BF826131C3487ACD28F2AD8EB24A91DD6125690
gpg: Good signature from "Theodore R. Smith <[email protected]>" [ultimate]
8ab4104 G 2024-01-15 08:27:07 -0600 Theodore R. Smith Upgraded to PHP 8.3.
Después:
gpg: Signature made Tue 16 Jan 2024 01:52:41 AM CST
gpg: using RSA key 4BF826131C3487ACD28F2AD8EB24A91DD6125690
gpg: Good signature from "Theodore R. Smith <[email protected]>" [ultimate]
515e36b G 2024-01-16 01:52:41 -0600 Theodore R. Smith [m] Updated the packages and exclusion lists. HEAD
gpg: Signature made Mon 15 Jan 2024 08:27:07 AM CST
gpg: using RSA key 4BF826131C3487ACD28F2AD8EB24A91DD6125690
gpg: Good signature from "Theodore R. Smith <[email protected]>" [ultimate]
22c5040 G 2024-01-15 08:27:07 -0600 Theodore R. Smith Upgraded to PHP 8.3.
Crea archivos tar automáticamente ordenados por nombre de archivo.
Esto es particularmente útil en sistemas de archivos de orden aleatorio, como ext4.
Con Bettergist Collector, usamos esto para poder estimar aproximadamente cuánto tiempo tomará comprimir y extraer archivos de múltiples gigabytes con millones de archivos.
Es un reemplazo directo de tar
, y usa los mismos argumentos.
Opcionalmente, puedes instalar la función directamente en tu ~/.bashrc.
- Vacía el directorio ~/.cache de cada usuario que no sea root.
- Vacía el directorio de caché de paquetes de Pacman.
Esto puede usar opcionalmente nullfsvfs para limitar el desgaste de los SSDs.
Elimina todos los archivos de locales que no sean EN todos los días.
Esto ahorra, usualmente, de 400 a 1000 MB de espacio.
Toma instantáneas BTRFS de / cada hora en punto.
Limpia las instantáneas por hora del día anterior mientras mantiene las instantáneas diarias.
Limpia archivos temporales de PHP que de otra manera serían inútiles, lo cual es muy útil en servidores ocupados.
- Archivos de sesión antiguos que no han sido modificados en la última hora.
- Archivos temporales de phpunit.
- Archivos temporales de phpstan.
Una utilidad para imprimir fechas en el formato americano
Vie, 19 Enero 2024 05:49:20 CST
Crea fácilmente CHANGELOGs basados en registros de commits de git concisos:
[2020-10-01 00:23:15 CDT] — [x265.sh] Use VAAPI for encoding using Intel graphics cards.
[2020-10-01 00:30:00 CDT] — Created a README.md.
[2020-10-01 00:37:07 CDT] — [random-file] renamed for more clarity.
[2020-10-01 00:44:34 CDT] — Flushed out the README.
[2020-10-01 00:49:44 CDT] — [bash_rc.aliases] Added a whole slew of webdev aliases.
[2020-10-01 00:58:00 CDT] — [bash_rc.aliases] Added some more descriptions.
[2020-10-01 01:10:26 CDT] — [.gitconfig] Added a whole bunch of my git aliases. tag: v1.0.0
[2020-10-01 08:17:42 CDT] — [clear-cache] Delete broken symlinks in the ~/.cache directories.
- Detecta si el usuario está ejecutando Wayland. Si es así, para los navegadores basados en Chromium, pasará las banderas necesarias para que se ejecute en modo nativo de Wayland (no XWayland) para un rendimiento superior.
- Siempre se lanzará usando el llavero de Gnome, de modo que no perderás todas tus cookies y logins permanentes cada vez que cambies a KDE, y viceversa.
Devuelve una lista de archivos ordenados por tamaño de archivo, de forma descendente, que tienen al menos X MB de tamaño.
Elige un archivo aleatorio en un directorio / directorio de trabajo actual (PWD).
¡Transmisor de pantalla en vivo de YouTube directamente desde la línea de comandos (a través de ffmpeg)!
Esto hará que sudo
solo te pida la contraseña UNA VEZ durante un solo arranque. No te pedirá a través de diferentes
terminales y no expirará. Al reiniciar, expirará automáticamente.
Muestra cuántos megabytes aún deben escribirse en discos [lentos].
Every 5.0s: grep -e Dirty: -e Writeback: /proc/meminfo
asus-z13: Fri Jan 19 07:09:32 2024
Dirty: 751552 kB
Writeback: 0 kB
Apaga fácilmente todos tus monitores a través de la línea de comandos.
Para cuando quieres alejarte y no preocuparte tanto por una pantalla de bloqueo.
Instala un script de NetworkManager que se ejecuta automáticamente cuando se conecta a redes WiFi específicas.
Agrega una marca de agua a videos a través de ffmpeg.
Transcodifica a x265 HEVC a través de ffmpeg utilizando la tarjeta gráfica de Intel.
Ayuda a reparar automágicamente entradas duplicadas en la base de datos de Pacman en Arch Linux.
Está destinado a resolver el raro problema: "error: duplicated database entry 'foo'"
Actualiza de forma superficial un repositorio git clone --depth 1
poco profundo.
En Arch Linux, una configuración de btrfs pone cada archivo individual en /. Esto limita en gran medida la capacidad de administrar adecuadamente el sistema, con subvol=5 sin nada más que subvolúmenes.
Este script hace lo siguiente:
- Crea nuevas instantáneas a nivel raíz:
@rootfs
(/),@snapshots
,@important
y@home
. - Mueve los archivos de
/
a/@rootfs
, los de/home
a/home
y crea nuevos directorios/snaps
e/important
. - Crea
/media/true-root
que se monta automáticamente en/ (subvol=5)
. - Se integra con los cronjobs de instantáneas automáticas
cron.d
en este proyecto/
se toma una instantánea diariamente en/snaps/daily/YYYY-MM-DD
./important
se toma una instantánea cada hora en/snaps/important/YYYY-MM-DD/HH
./important
está configurado para tener la compresión habilitada.- Configura
/home
para aplicar una cuota basada en el 10% del espacio total del disco por usuario, y el 50% del espacio total del disco para cada usuario. - La instantánea de
/home
está configurada para tener la compresión habilitada. /home
tiene instantáneas rotativas de 7 días para los archivos.*
de los usuarios, excepto para los directorios decaché
(cuando se usa [cron.daily/00_clear-cache]).
Arch Linux coloca todo el contenido de / en el subvolumen principal de BTRFS (ID=5).
Esto significa que las tareas comunes de creación de instantáneas y subvolúmenes, en particular, retroceder a un subvolumen raíz anterior (por ejemplo, funcional) es excepcionalmente difícil y requiere un arranque de rescate, etc.
La solución proporcionada soluciona temporalmente la situación, con suerte sin la necesidad de un disco de rescate, en un entorno en vivo. Sin embargo, realmente deberías tener un disco de rescate preparado de antemano.
¡Y por el amor de Dios, haz copias de seguridad primero!
Descarga automáticamente todos los repositorios de GitHub de un usuario o una organización.
Cuando se ejecuta de forma independiente, mostrará "Running as root" (Ejecutando como root) o "Not running as root" (No ejecutando como root).
Cuando se llama como una función, devolverá true
o false
.
Bloquea el programa en ejecución hasta que se presiona una tecla, se mueve el ratón o se presiona un botón del ratón, en cualquier lugar, independientemente del enfoque de la ventana.
Mostrará uno de los siguientes: KEYBOARD_KEY (TECLA_DE_TECLADO), MOUSE_CLICKED (RATÓN_CLIC) o MOUSE_MOVED (RATÓN_MOVIDO).
Se puede ejecutar de forma independiente o como una función.
Este proyecto está licenciado bajo la Licencia Creative Commons Attribution v4.0 International.
Theodore R. Smith [email protected]
GPG Fingerprint: 4BF8 2613 1C34 87AC D28F 2AD8 EB24 A91D D612 5690
CEO: PHP Experts, Inc.