GNU/Linux >> Linux Esercitazione >  >> Linux

Come sapere cosa farà esattamente un comando o un programma prima di eseguirlo

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 AntergosManjaro Linux , installa pip usando il seguente comando:

$ sudo pacman -S python-pip

Su RHELCentOS :

$ sudo yum install epel-release
$ sudo yum install python-pip

Su Fedora :

$ sudo dnf install python-pip

Su DebianUbuntuLinux Mint :

$ sudo apt-get install python-pip

Su SUSEopenSUSE :

$ 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

Linux
  1. Che cos'è un comando Chown in Linux e come usarlo

  2. Che cos'è un comando cURL e come utilizzarlo?

  3. Come scoprire cosa fa un comando Linux

  4. Come eseguire il comando prima dell'accesso dell'utente su Linux?

  5. Esecuzione di un comando remoto sulla connessione Ssh, prima dell'accesso?

Comando file Linux:cosa fa e come usarlo

Come utilizzare Linux Time Command:tutto ciò che devi sapere

Linux Tail Command:cos'è e come usarlo

Come tracciare l'esecuzione del programma utilizzando il comando Strace di Linux

Che cos'è il comando sorgente in Linux e come funziona?

Come sapere cosa significa 'errno'?