== `shell.hpp` [#shell] This utility class parses command lines into tokens and allows users to execute processes based on textual inputs. In v1, this was possible directly when starting a process, but has been removed based on the security risks associated with this. By making the shell parsing explicitly, it encourages a user to run a sanity check on the executable before launching it. .Example [source,cpp] ---- asio::io_context ctx; auto cmd = shell("my-app --help"); auto exe = cmd.exe(); check_if_malicious(exe); process proc{ctx, exe, cmd.args()}; ---- [source,cpp] ---- /// Utility to parse commands struct shell { shell() = default; template shell(basic_string_view input); shell(basic_cstring_ref input); shell(const shell &) = delete; shell(shell && lhs) noexcept; shell& operator=(const shell &) = delete; shell& operator=(shell && lhs) noexcept; // the length of the parsed shell, including the executable int argc() const ; char_type** argv() const; char_type** begin() const; char_type** end() const; bool empty() const; std::size_t size() const; // Native representation of the arguments to be used - excluding the executable args_type args() const; template filesystem::path exe(Environment && env = environment::current()) const; }; ----