Unixコマンドを実行する前に何をするのか疑問に思ったことはありませんか?特定のコマンドまたはプログラムが何をするかを誰もが知っているわけではありません。もちろん、 Explainshellで確認できます 。 Explainshell Webサイトでコマンドをコピーして貼り付ける必要があります。これにより、Linuxコマンドの各部分の機能がわかります。ただし、必須ではありません。これで、ターミナルから、コマンドまたはプログラムを実行する前に、コマンドまたはプログラムが正確に何を実行するかを簡単に知ることができます。 「たぶん」に挨拶する 、コマンドを実行して、実際に実行しなくても ファイルに対して何が行われるかを確認できるシンプルなツールです! リストされた出力を確認した後、それを本当に実行するかどうかを決定できます。
「たぶん」はどのように機能しますか?
開発者によると、
「たぶん」 python-ptraceライブラリを使用して、ptraceの制御下でプロセスを実行します。ファイルシステムに変更を加えようとしているシステムコールをインターセプトすると、そのコールをログに記録し、CPUレジスタを変更して、コールを無効なsyscall IDにリダイレクトし(事実上、no-opに変換します)、そのno-op呼び出しの戻り値を、元の呼び出しの成功を示す値に戻します。その結果、プロセスは、実際には何も起こらないのに、実行しようとしていることはすべて実際に起こっていると信じています。
警告 :非常に注意する必要があります 本番システムまたは気になるシステムでこのユーティリティを使用する場合。ほんの一握りのシステムコールしかブロックしないため、それでも深刻な損害を与える可能性があります。
「たぶん」のインストール
Pipがインストールされていることを確認してください Linuxシステムで。そうでない場合は、使用するディストリビューションに応じて、以下のようにインストールしてください。
Arch Linux およびAntergosなどの派生物 、 Manjaro Linux 、次のコマンドを使用してpipをインストールします。
$ sudo pacman -S python-pip
RHEL 、 CentOS :
$ sudo yum install epel-release
$ sudo yum install python-pip
Fedora :
$ sudo dnf install python-pip
Debian 、 Ubuntu 、 Linux Mint :
$ sudo apt-get install python-pip
SUSE 、 openSUSE :
$ sudo zypper install python-pip
pipをインストールしたら、次のコマンドを実行して「maybe」をインストールします。
$ sudo pip install maybe
実行する前に、コマンドまたはプログラムが正確に何をするかを知ってください
使い方は絶対に簡単です!実行したいコマンドの前に「たぶん」を追加するだけです。
例を示しましょう。
$ maybe rm -r ostechnix/
ご覧のとおり、システムから「ostechnix」というフォルダを削除します。これが出力例です。
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
「たぶん」ツールは5つのファイルシステム操作を実行し、このコマンド(つまり、rm -r ostechnix /)が正確に何をするかを示します。これで、この操作を実行するかどうかを決定できます。かっこいいですね
別の例を示します。 Inboxerをインストールします Gmail用のデスクトップクライアント。これが私が得たものです。
$ 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]
ファイルシステムの操作が検出されない場合は、次のような結果が表示されます。
たとえば、このコマンドを実行してArchLinuxを更新します。
$ 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.
見る?ファイルシステムの操作は検出されなかったため、警告はありませんでした。これは絶対に素晴らしく、まさに私が探していたものです。これからは、コマンドやプログラムを実行する前でも、それが何をするのかを簡単に知ることができます
推奨される読み物:
- システム内で何も変更せずにLinuxコマンドをシミュレートする方法