Узнайте, что именно будет делать команда или программа, прежде чем выполнять ее
Вы когда-нибудь задумывались, что будет делать команда Unix перед ее выполнением? Не все знают, что будет делать та или иная команда или программа. Конечно, вы можете проверить это с помощью Explainshell. Вам нужно скопировать/вставить команду на веб-сайт объясненияшелла, и вы узнаете, что делает каждая часть команды Linux. Однако в этом нет необходимости. Теперь мы можем легко узнать, что именно будет делать команда или программа, перед ее выполнением, прямо из Терминала. Передайте привет "maybe" – простому инструменту, который позволяет вам запустить команду и посмотреть, что она делает с вашими файлами, на самом деле не делая этого! Просмотрев список результатов, вы сможете решить, действительно ли вы хотите их запустить или нет.
Как работает «может быть»?
По словам разработчика,
«может быть» запускает процессы под управлением ptrace с помощью библиотеки python-ptrace. Когда он перехватывает системный вызов, который собирается внести изменения в файловую систему, он регистрирует этот вызов, а затем изменяет регистры ЦП, чтобы перенаправить вызов на недействительный идентификатор системного вызова (фактически превращая его в неактивный) и установить возвращаемое значение этого бездействующего вызова равно единице, что указывает на успех исходного вызова. В результате процесс считает, что все, что он пытается сделать, на самом деле происходит, хотя на самом деле ничего не происходит.
Внимание. Вы должны быть очень осторожны при использовании этой утилиты в производственной системе или в любых системах, которые вас интересуют. Он все равно может нанести серьезный ущерб, поскольку заблокирует лишь несколько системных вызовов.
Установка «может быть»
Убедитесь, что вы установили 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 выполните следующую команду, чтобы установить «возможно».
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]
Если он не обнаружит никаких операций с файловой системой, он просто отобразит результат, подобный приведенному ниже.
Например, я запускаю эту команду, чтобы обновить свой 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 с надписью «может быть»