gpt4 book ai didi

bash - 拦截并阻止命令在 bash 中运行

转载 作者:行者123 更新时间:2023-12-02 07:17:59 24 4
gpt4 key购买 nike

是否可以拦截 bash 中的所有命令并阻止其中一些命令执行?与 'trap' 命令一样,只是不允许进一步执行命令。

我是一名网络开发人员,目前正在开发一个小型项目/脚本,通过动态添加不同的别名来帮助网络开发人员的日常生活。例如,作为一名 Web 开发人员,在 Ubuntu 上,通常会将所有项目托管在/var/www/结构中,因此可以在该 (/var/www) 文件夹中为这些文件夹起别名。我想稍微改进一下我的脚本,并根据项目构建的框架为项目添加别名。如果是 Magento 2,那么通过运行 setup:upgrade 它应该运行“bin/magento setup:upgrade”。我已经尝试过陷阱“某事”调试,但据我所知,无法阻止前面的命令。谢谢!

最佳答案

你可以通过滥用command_not_found_handle来否决命令:

# Save the PATH
realpath="$PATH"
# Set a PATH without commands (weirdly can't be empty)
PATH="/"

command_not_found_handle() (
if [[ "$1" == *d* ]]
then
echo "Sorry, no commands with 'd' allowed" >&2
return 1
else
PATH="$realpath"
unset command_not_found_handle
"$@"
fi
)

在你的 .bashrc 中,你可以运行 lschown 但不能运行 findchmod。请注意,它不会影响函数或内置函数。

关于bash - 拦截并阻止命令在 bash 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55963222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com