小编jar*_*rno的帖子

如何使用给定的参数集完成 GNU 长选项?

GNU建议使用 --name=value语法为 long 选项传递参数。它使长选项能够接受本身是可选的参数。

假设您有一组完整的可能参数。您如何为这样的选项编写 bash 完成代码?我希望完成在完成一个明确的参数时添加空间,但不是之前。

gnu command-line-arguments bash-completion

5
推荐指数
1
解决办法
250
查看次数

你怎么能使用纯粹的unset shell内置?你能编写一些免于篡改的shell脚本吗?

我的意思是我想使用unset它本身不是shell函数.如果我能做到这一点,我可以command通过跑步来确保它是纯粹的

#!/bin/sh
{ \unset -f unalias command [; \unalias unset command [ } 2>/dev/null;
# make zsh find *builtins* with `command` too:
[ -n "$ZSH_VERSION" ] && options[POSIX_BUILTINS]=on
Run Code Online (Sandbox Code Playgroud)

如果我使用的是Debian Almquist shell(破折号),我认为我可以依赖它\unset是纯粹的.至少我不能定义一个名为shell函数unsetdash.而在我bash或之中zsh我可以定义unset() { echo fake unset; },然后我无法取消该功能:\unset -f unset输出"假未设置".

与此相关,在bash脚本中,可以导出函数,export -f <function name>以便可以在bash脚本调用的脚本中使用它.但是,这在dash脚本中不起作用.我想知道,如果我不得不担心一个命令被定义为我写的脚本文件外的shell函数,如果我正在使用dash?其他POSIX兼容的shell怎么样?

security bash zsh sh dash-shell

3
推荐指数
2
解决办法
684
查看次数