是否可以拦截bash中的所有命令并阻止某些命令执行?与“ trap”命令一样,仅不允许进一步执行该命令。
我是一名Web开发人员,目前正在从事一个小型项目/脚本,通过动态添加不同的别名来帮助Web开发人员日常生活。例如,作为一名Web开发人员,在Ubuntu上通常以/ var / www /结构托管所有项目,因此可以在该(/ var / www)文件夹中为这些文件夹加上别名。我想稍微改善一下脚本,并根据构建的框架为项目添加别名。如果是Magento 2,则应通过运行setup:upgrade来运行“ bin / magento setup:upgrade”。 我已经尝试过陷阱“某事”调试,但是据我所知,不可能阻止前面的命令。 谢谢!
答案 0 :(得分:4)
您可以通过滥用let test = UITextField()
test.textContentType = UITextContentType.emailAddress
来否决命令:
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
和ls
,但不能运行chown
或find
。请注意,它不会影响功能或内置函数。
答案 1 :(得分:3)
是的,有可能。 window.addEventListener('popstate', () => {
debugger;
this.doSomeOtherStuff.
}
是一个好的开始,如果要阻止某些命令,则必须将其与trap ... DEBUG
关联。然后,如果您以非零状态从陷阱返回,则将不执行该命令。
shopt -s extdebug