Интерпретатор командной строки, позволяющий выполнять команды пользователя. Кроме того это язык программирования, в котором есть конструкции while, if, for, grep и т.д.
С++11
Знание синтаксиса языка bash
Необходимо подключить заголовочный файл:
#include "shell.h"
Создать экземпляр класса Shell:
Shell shell = Shell();
Для выполнения команд разделенных операторами ||, &&, ;, скобками, а также символами вывода результата в файл, используется метод execute:
shell.execute("(ls && cd ../) || (ls && cat test.txt)");
Результат выполнения команды выведется в консоль. Для дальнейшего использования результата можно использовать перегруженный метод execute, принимающий вторым аргументом ссылку на экземпляр класса CmdExecResult:
CmdExecResult result;
shell.execute("ls && cat test.txt", result);
В случае успешного выполнения команды, result.success примет значение true, а результат запишется в result.success_result, иначе result.success примет значение false, а текст ошибки запишется в result.error_result.
Для выполнения команд разделенных операторами | (pipe), необходимо использовать соответствующие методы класса Shell:
void execute_piped_command(string& command_line);
void execute_piped_command(string& command_line, CmdExecResult& result);
Для выполнения команд в режиме background:
void execute_background(string& command_line, function<void(CmdExecResult&)> f);
Здесь f - коллбек-функция, принимающая ссылку на экземпляр класса CmdExecResult.
Создать в папке cmake-build-debug файлы ar.zip большого размера, test.txt, test2.txt, test3.txt Ввести в слово "hello!" в файл test.txt без ковычек
Нельзя использовать команды типа pipe(|) с другими операторами(||, &&, ;) Нельзя выполнять команды требующие участия пользователя (nano, emacs и т.д.)
Горожанин Никита