Это типичный способ запустить приложение терминала с аргументами, дождаться его завершения sh, а затем вывести то, что оно отправило, на стандартный вывод.
using(var p = Process.Start(new ProcessStartInfo
{
FileName = "/bin/ls", // File to execute
Arguments = "~/Documents", // arguments to use
UseShellExecute = false, // use process creation semantics
RedirectStandardOutput = true, // redirect standard output to this Process object
CreateNoWindow = true, // if this is a terminal app, don't show it
WindowStyle = ProcessWindowStyle.Hidden // if this is a terminal app, don't show it
})
{
// Wait for the process to finish executing
p.WaitForExit();
// display what the process output
Console.WriteLine(p.StandardOutput.ReadToEnd());
}