Haben Sie sich jemals gefragt, was ein Unix-Befehl macht, bevor er ausgeführt wird? Nicht jeder weiß, was ein bestimmter Befehl oder ein bestimmtes Programm bewirkt. Natürlich können Sie dies mit Explainshell überprüfen . Sie müssen den Befehl auf der Explainshell-Website kopieren/einfügen, damit Sie wissen, was jeder Teil eines Linux-Befehls tut. Dies ist jedoch nicht erforderlich. Jetzt können wir leicht wissen, was ein Befehl oder Programm genau tun wird, bevor wir es direkt vom Terminal aus ausführen. Begrüßen Sie "vielleicht" , ein einfaches Tool, mit dem Sie einen Befehl ausführen und sehen können, was er mit Ihren Dateien macht, ohne es tatsächlich zu tun! Nachdem Sie die aufgelistete Ausgabe überprüft haben, können Sie entscheiden, ob Sie sie wirklich ausführen möchten oder nicht.
Wie "vielleicht" funktioniert?
Laut Entwickler
"vielleicht" führt Prozesse unter der Kontrolle von Ptrace mit Hilfe der Python-Ptrace-Bibliothek aus. Wenn es einen Systemaufruf abfängt, der im Begriff ist, Änderungen am Dateisystem vorzunehmen, protokolliert es diesen Aufruf und modifiziert dann die CPU-Register, um den Aufruf sowohl auf eine ungültige Syscall-ID umzuleiten (was ihn effektiv in eine No-Op umwandelt) als auch die Rückgabewert dieses No-Op-Aufrufs auf eins, der den Erfolg des ursprünglichen Aufrufs anzeigt. Infolgedessen glaubt der Prozess, dass alles, was er zu tun versucht, tatsächlich passiert, obwohl in Wirklichkeit nichts passiert.
Warnung :Sie sollten sehr, sehr vorsichtig sein wenn Sie dieses Dienstprogramm in einem Produktionssystem oder in anderen Systemen verwenden, die Ihnen wichtig sind. Es kann immer noch ernsthaften Schaden anrichten, da es nur eine Handvoll Systemaufrufe blockiert.
Installation von "vielleicht"
Stellen Sie sicher, dass Sie Pip installiert haben in Ihrem Linux-System. Falls nicht, installieren Sie es je nach verwendeter Distribution wie unten gezeigt.
Auf Arch Linux und seine Derivate wie Antergos , Manjaro Linux , installieren Sie Pip mit dem folgenden Befehl:
$ sudo pacman -S python-pip
Auf RHEL , CentOS :
$ sudo yum install epel-release
$ sudo yum install python-pip
Auf Fedora :
$ sudo dnf install python-pip
Auf Debian , Ubuntu , Linux Mint :
$ sudo apt-get install python-pip
Auf SUSE , openSUSE :
$ sudo zypper install python-pip
Führen Sie nach der Installation von pip den folgenden Befehl aus, um "maybe" zu installieren.
$ sudo pip install maybe
Wissen Sie, was ein Befehl oder Programm genau tun wird, bevor Sie es ausführen
Die Anwendung ist absolut einfach! Fügen Sie einfach "vielleicht" vor einem Befehl hinzu, den Sie ausführen möchten.
Lassen Sie mich Ihnen ein Beispiel zeigen.
$ maybe rm -r ostechnix/
Wie Sie sehen können, werde ich einen Ordner namens "ostechnix" von meinem System löschen. Hier ist die Beispielausgabe.
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
Das "vielleicht"-Tool führt 5 Dateisystemoperationen durch und zeigt mir, was dieser Befehl (dh rm -r ostechnix/) genau tun wird. Jetzt kann ich entscheiden, ob ich diese Operation durchführen soll oder nicht. Cool, ja?
Hier ist ein weiteres Beispiel. Ich werde Inboxer installieren Desktop-Client für Gmail. Das habe ich bekommen.
$ 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]
Wenn es keine Dateisystemoperationen erkennt, zeigt es einfach ein Ergebnis wie das folgende an.
Zum Beispiel führe ich diesen Befehl aus, um mein Arch Linux zu aktualisieren.
$ 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.
Sehen? Es wurden keine Dateisystemoperationen erkannt, daher gab es keine Warnungen. Das ist absolut genial und genau das, wonach ich gesucht habe. Von nun an kann ich leicht wissen, was ein Befehl oder ein Programm tun wird, noch bevor ich es ausführe
Empfohlene Lektüre:
- So simulieren Sie Linux-Befehle, ohne etwas im System zu ändern