Unix команды из C #

2

Существует ли реализация оболочки Unix и команд как сборка .Net. Это может быть оболочкой cygwin или автономной, построенной из источника общедоступного домена. Я бы хотел использовать такие команды, как wc, tar, cpio, ps, kill, cat, at...

как здорово было бы это сделать (псевдокод)

usg cygwin

.....

 Shell myShell = new Shell("cat file1 file2 >> file3");
 myShell.Run(DateTime.Now);

Edit > Я вижу, как работает оболочка, я использовал этот подход в прошлом. Тем не менее, он просто чувствует себя некрасиво, другой процесс работает, он не защищен, ему требуется еще одна установка на клиентских машинах, вы должны гасить вокруг строк команд сборки. В качестве еще одного примера

 Shell myShell = new Shell();
 myShell.Infiles.Add (streamObject);
 myShell.Outfiles.Add (streamObject);

 myShell.Stderr.NewOutput += myErrorLogger();

и т.д.

  • 0
    Я не понимаю, запрашиваете ли вы класс, который может обернуть перенаправление ввода / вывода, как это делает большинство оболочек (как показывает ваш код), или код, который делает то, что делают обычные программы Unix (как говорится в вашем вопросе). Не ожидайте, что что-то делает и то и другое, если только оно не очень специализированное.
Теги:
cross-platform
cygwin

3 ответа

2

Вы смотрели PowerShell? Многие задачи с использованием команд Unix могут быть переведены в PowerShell.

1

Я не знаю никаких реализаций, но я думаю, что у вас есть интересная идея:) Было бы забавным проектом для кого-то разработать управляемую версию busybox, который может запускаться в собственной консоли и использоваться для сборки .NET, как в вашем примере кода. Но действительно ли это было бы полезно для многих людей?

  • 0
    Интересно, это было бы хорошей отправной точкой. Что касается того, чтобы быть полезным, то моей первой проблемой, как эта, скажем, 10 лет назад, было подсчет слов большого файла в окне Windows. Даже нативный C-код не мог сравниться с производительностью wc, поэтому я взломал обертку вокруг инструментария MKS, это был клудж тогда и остается.
  • 0
    Я большой поклонник Cygwin; это первое, что я устанавливаю, чтобы чувствовать себя как дома, когда передал новую Windows-установку на работу. Тем не менее, я использую только основные команды, поэтому я предпочел бы иметь одну сборку, которая делает это вместо этого. Теперь я испытываю желание взглянуть на код BusyBox, чтобы оценить его переносимость :)
1

Возможно, что-то вроде следующего.

Shell myShell = new Shell("c:\cygwin\bin\bash cat file1 file2 >> file3");  
myShell.Run(DateTime.Now);

Но у меня нет среды для тестирования.

Попробуйте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню