In TRestTools we have static std::string Execute(const char* cmd);
In TRestStringHelper we have std::string ExecuteShellCommand(string cmd);
I see the implementation is the same, so we can remove one.
We may also have a review of the methods in TRestTools and TRestStringHelper. The two classes should have a clear difference in the orientation. We shall make it easy for a user to guess where to find a tool method.
For example,
TRestTools → all the system-level method
TRestStringHelper → just the string methods: split, count, replace, etc.
Then many of the methods in TRestStringHelper should be moved to TRestTools. Like SearchFileInPath(), GetSubdirectories(), isPathWritable(), etc.