Em bash
, você pode fazer isso com os recursos de depuração, embora seja uma solução bastante frágil e muito dependente de seu ambiente.
Habilite a depuração estendida (consulte manual para detalhes ):
shopt -s extdebug
Crie uma função de helprun:
helprun() {
if [ $# -eq 2 -a "$2" = "--help" ]; then
$* | less -F
return 1
fi
}
Em seguida, intercepte todos os comandos com ele:
trap "helprun \$BASH_COMMAND" DEBUG
Isso executará helprun <command>
para cada comando e, se for um comando --help
, canalize-o em less
, retornando 1 para que o comando não seja executado (graças a extdebug
). Se não for, apenas funciona normalmente.
Provavelmente existem casos extremos que não tenho tratado aqui ...