Dear all, thank you very much for your quick replies. The solution:
alias @echo-on='set -x' alias @echo-off='{ set +x; } 2>/dev/null' PS4= Solves the problem, and relieves from writing "echo COMMAND" before each command that should be shown. -Angelo Borsotti On Wed, 12 Jun 2024 at 23:21, Koichi Murase <myoga.mur...@gmail.com> wrote: > 2024年6月13日(木) 5:20 Angelo Borsotti <angelo.borso...@gmail.com>: > > This is not the same as debugging, for which set -x is devoted. > > "set -x" makes the ensuing commands be printed, but prefixed > > with "+ ", which makes the result look ugly, > > PS4= (as Greg has replied) > > > not to mention that > > the following "set +x" is echoed too (there are hacks to suppress > > the "set +x" output, but they are just hacks). > > What are the hacks? What are the problems with them? You can have aliases: > > alias @echo-on='set -x' > alias @echo-off='{ set +x; } 2>/dev/null' > > > I would stress the importance of this: the purpose of scripts is > > to execute commands, informing the caller of what they execute, > > purged of all the builtins and other calculations the script does > > in order to come to the commands. > > I don't think the purpose of scripts is to execute only the external > commands in general. The tasks implemented by builtins and other > calculations are allowed to be the purpose of scripts. > > > Many solutions are posted in the internet, all of them are hacks with > > lots of edge cases that make them fail in presence of commands > > containing special characters, redirections, substitutions, etc. > > Have you tried `set -v'? `set -v' is not a hack, (though there doesn't > seem to be a way to suppress echoing set +v). > > The detailed design of how the logged commands should be filtered and > formatted depends on the purpose of each user. We already have `set > -x' and `set -v'. We can adjust the format by PS4 for `set -x'. It's > unrealistic to add a new option for every new preference of detailed > filtering and formatting. If it is really needed, you can implement > your filtering through the DEBUG trap, but it would finally be best to > explicitly write `echo COMMAND' before every COMMAND that you think is > important (unless you are lazy). It's stable and flexible. > > -- > Koichi >