如何在执行命令或程序之前知道它会做什么

有没有想过 Unix 命令在执行之前会做什么? 不是每个人都知道某个特定的命令或程序会做什么。 当然,你可以检查它 解释壳. 您需要在 Explainshell 网站上复制/粘贴命令,它会让您知道 Linux 命令的每个部分的作用。 但是,这不是必需的。 现在,我们可以直接从终端轻松地知道命令或程序在执行之前究竟会做什么。 打招呼 “或许”,一个简单的工具,可让您运行命令并查看它对文件的作用 没有实际做! 查看列出的输出后,您可以决定是否真的要运行它。

内容

  1. “也许”如何运作?
  2. 安装“也许”
  3. 知道一个命令或程序在执行之前会做什么
    1. 帮助我们帮助您:

“也许”如何运作?

据开发商介绍,

“或许” 借助 python-ptrace 库在 ptrace 的控制下运行进程。 当它拦截一个即将对文件系统进行更改的系统调用时,它会记录该调用,然后修改 CPU 寄存器以将调用重定向到无效的系统调用 ID(有效地将其变为无操作)并设置将该无操作调用的值返回为指示原始调用成功的值。 结果,该过程相信它试图做的每件事实际上都在发生,而实际上什么都没有。

警告: 你应该 非常非常小心 在生产系统或您关心的任何系统中使用此实用程序时。 它仍然会造成严重的损害,因为它只会阻止少数系统调用。

安装“也许”

确保您已安装 在您的 Linux 系统中。 如果没有,请根据您使用的发行版如下所示安装它。

Arch Linux 及其衍生物,如 安特戈斯, Manjaro Linux,使用以下命令安装 pip:

$ sudo pacman -S python-pip

RHEL, 中央操作系统

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

Fedora

$ sudo dnf install python-pip

Debian, Ubuntu, Linux 薄荷糖

$ sudo apt-get install python-pip

苏塞, 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/)的确切作用。 现在我可以决定是否应该执行此操作。 酷,是吗?

这是另一个例子。 我要安装 收件箱 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]

如果它没有检测到任何文件系统操作,那么它将简单地显示如下所示的结果。

例如,我运行这个命令来更新我的 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.

看? 它没有检测到任何文件系统操作,因此没有警告。 这绝对是出色的,正是我想要的。 从现在开始,即使在执行命令或程序之前,我也可以很容易地知道它会做什么

建议阅读:

  • 如何在不更改系统任何内容的情况下模拟 Linux 命令

资源:

  • “也许” GitHub 页面

感谢您的光临!

帮助我们帮助您:

  • 订阅我们的电子邮件通讯: 立即注册
  • 支持 OSTechNix: 通过贝宝捐款
  • 下载免费的电子书和视频: TradePub 上的 OSTechNix
  • 联系我们: 红迪网 | Facebook | 推特 | 领英 | RSS订阅

祝你有美好的一天!!

CLILinux可能是pipPython