Ti sei mai chiesto cosa farà un comando Unix prima di eseguirlo? Non tutti sanno cosa farà un particolare comando o programma. Ovviamente puoi verificarlo con Explainshell . Devi copiare/incollare il comando nel sito Web Explainshell e ti consente di sapere cosa fa ogni parte di un comando Linux. Tuttavia, non è necessario. Ora possiamo facilmente sapere cosa farà esattamente un comando o un programma prima di eseguirlo, direttamente dal Terminale. Saluta "forse" , un semplice strumento che ti permette di eseguire un comando e vedere cosa fa ai tuoi file senza farlo davvero! Dopo aver esaminato l'output elencato, puoi quindi decidere se vuoi davvero eseguirlo o meno.
Come funziona "forse"?
Secondo lo sviluppatore,
"forse" esegue processi sotto il controllo di ptrace con l'aiuto della libreria python-ptrace. Quando intercetta una chiamata di sistema che sta per apportare modifiche al file system, registra quella chiamata e quindi modifica i registri della CPU per reindirizzare la chiamata a un ID syscall non valido (trasformandolo di fatto in un no-op) e impostare il restituire il valore di quella chiamata no-op a uno che indica il successo della chiamata originale. Di conseguenza, il processo crede che tutto ciò che sta cercando di fare stia effettivamente accadendo, mentre in realtà nulla lo è.
Avviso :Dovresti essere molto molto attento quando si utilizza questa utilità in un sistema di produzione o in qualsiasi sistema a cui tieni. Può comunque causare seri danni, perché bloccherà solo una manciata di syscall.
Installazione di "forse"
Assicurati di aver installato Pip nel tuo sistema Linux. In caso contrario, installalo come mostrato di seguito a seconda della distribuzione in uso.
Su Arch Linux e i suoi derivati come Antergos , Manjaro Linux , installa pip usando il seguente comando:
$ sudo pacman -S python-pip
Su RHEL , CentOS :
$ sudo yum install epel-release
$ sudo yum install python-pip
Su Fedora :
$ sudo dnf install python-pip
Su Debian , Ubuntu , Linux Mint :
$ sudo apt-get install python-pip
Su SUSE , openSUSE :
$ sudo zypper install python-pip
Una volta installato pip, esegui il seguente comando per installare "maybe".
$ sudo pip install maybe
Sapere cosa farà esattamente un comando o un programma prima di eseguirlo
L'utilizzo è assolutamente facile! Basta aggiungere "forse" davanti a un comando che vuoi eseguire.
Permettetemi di mostrarvi un esempio.
$ maybe rm -r ostechnix/
Come puoi vedere, eliminerò una cartella chiamata "otechnix" dal mio sistema. Ecco l'output di esempio.
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
Lo strumento "forse" esegue 5 operazioni sul file system e mi mostra cosa farà esattamente questo comando (cioè rm -r ostechnix/). Ora posso decidere se eseguire o meno questa operazione. Bello, vero?
Ecco un altro esempio. Installerò Inboxer client desktop per Gmail. Questo è quello che ho.
$ 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]
Se non rileva alcuna operazione sul file system, visualizzerà semplicemente un risultato simile a quello di seguito.
Ad esempio, eseguo questo comando per aggiornare il mio 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.
Vedere? Non ha rilevato alcuna operazione sul file system, quindi non c'erano avvisi. Questo è assolutamente geniale ed è esattamente quello che stavo cercando. D'ora in poi, posso facilmente sapere cosa farà un comando o un programma anche prima di eseguirlo
Lettura consigliata:
- Come simulare i comandi di Linux senza modificare nulla nel sistema