¿Alguna vez se preguntó qué hará un comando de Unix antes de ejecutarlo? No todos saben lo que hará un comando o programa en particular. Por supuesto, puedes comprobarlo con Explainshell . Debe copiar/pegar el comando en el sitio web de Explainshell y le permitirá saber qué hace cada parte de un comando de Linux. Sin embargo, no es necesario. Ahora, podemos saber fácilmente qué hará exactamente un comando o programa antes de ejecutarlo, directamente desde la Terminal. Saluda a "tal vez" , una herramienta simple que le permite ejecutar un comando y ver qué hace con sus archivos ¡sin hacerlo realmente! Después de revisar el resultado de la lista, puede decidir si realmente desea ejecutarlo o no.
¿Cómo funciona "tal vez"?
Según el desarrollador,
"tal vez" ejecuta procesos bajo el control de ptrace con la ayuda de la biblioteca python-ptrace. Cuando intercepta una llamada del sistema que está a punto de realizar cambios en el sistema de archivos, registra esa llamada y luego modifica los registros de la CPU para redirigir la llamada a una ID de llamada del sistema no válida (convirtiéndola efectivamente en una no operación) y establece el devolver el valor de esa llamada no operativa a uno que indique el éxito de la llamada original. Como resultado, el proceso cree que todo lo que está tratando de hacer realmente está sucediendo, cuando en realidad no sucede nada.
Advertencia :Debes tener mucho, mucho cuidado cuando utilice esta utilidad en un sistema de producción o en cualquier sistema que le interese. Todavía puede causar daños graves, ya que bloqueará solo un puñado de llamadas al sistema.
Instalando "tal vez"
Asegúrate de haber instalado Pip en su sistema Linux. De lo contrario, instálelo como se muestra a continuación según la distribución que utilice.
En Arch Linux y sus derivados como Antergos , Manjaro Linux , instala pip usando el siguiente comando:
$ sudo pacman -S python-pip
En RHEL , CentOS :
$ sudo yum install epel-release
$ sudo yum install python-pip
En Fedora :
$ sudo dnf install python-pip
En Debian , Ubuntu , Linux Mint :
$ sudo apt-get install python-pip
En SUSE , abrir SUSE :
$ sudo zypper install python-pip
Una vez instalado pip, ejecute el siguiente comando para instalar "tal vez".
$ sudo pip install maybe
Sepa qué hará exactamente un comando o programa antes de ejecutarlo
¡El uso es absolutamente fácil! Simplemente agregue "quizás" delante de un comando que desee ejecutar.
Permítame mostrarle un ejemplo.
$ maybe rm -r ostechnix/
Como puede ver, voy a eliminar una carpeta llamada "ostechnix" de mi sistema. Aquí está la salida de muestra.
maybe has prevented rm -r ostechnix/ from performing 5 file system operations: delete /home/sk/inboxer-0.4.0-x86_64.AppImage delete /home/sk/Docker.pdf delete /home/sk/Idhayathai Oru Nodi.mp3 delete /home/sk/dThmLbB334_1398236878432.jpg delete /home/sk/ostechnix Do you want to rerun rm -r ostechnix/ and permit these operations? [y/N] y
La herramienta "tal vez" realiza 5 operaciones del sistema de archivos y me muestra qué hará exactamente este comando (es decir, rm -r ostechnix/). Ahora puedo decidir si debo realizar esta operación o no. Genial, ¿sí?
Aquí hay otro ejemplo. Voy a instalar Inboxer Cliente de escritorio para Gmail. Esto es lo que tengo.
$ maybe ./inboxer-0.4.0-x86_64.AppImage fuse: bad mount point `/tmp/.mount_inboxemDzuGV': No such file or directory squashfuse 0.1.100 (c) 2012 Dave Vasilevsky Usage: /home/sk/Downloads/inboxer-0.4.0-x86_64.AppImage [options] ARCHIVE MOUNTPOINT FUSE options: -d -o debug enable debug output (implies -f) -f foreground operation -s disable multi-threaded operation open dir error: No such file or directory maybe has prevented ./inboxer-0.4.0-x86_64.AppImage from performing 1 file system operations: create directory /tmp/.mount_inboxemDzuGV Do you want to rerun ./inboxer-0.4.0-x86_64.AppImage and permit these operations? [y/N]
Si no detecta ninguna operación del sistema de archivos, simplemente mostrará un resultado similar al siguiente.
Por ejemplo, ejecuto este comando para actualizar mi Arch Linux.
$ maybe sudo pacman -Syu sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges? maybe has not detected any file system operations from sudo pacman -Syu.
¿Ver? No detectó ninguna operación del sistema de archivos, por lo que no hubo advertencias. Esto es absolutamente brillante y exactamente lo que estaba buscando. De ahora en adelante, puedo saber fácilmente qué hará un comando o un programa incluso antes de ejecutarlo
Lectura sugerida:
- Cómo simular comandos de Linux sin cambiar nada en el sistema