c# - 为特定于域的操作创建独立的控制台(shell)

标签 c# .net shell console-application

假设我有一个系统服务,我想提供对它的低级维护访问。

为此,我想创建一个独立的控制台应用程序,以某种方式连接到服务器进程并让用户输入命令,允许它在单/双 TAB 按下时使用自动完成和自动建议(只是像 linux bash shell、mysql cli、cmd.exe 和无数其他),允许命令行编辑功能(历史记录、光标键在文本中移动……)等。

现在,通过从头开始、处理用户输入、扫描按下的键并执行正确的操作来创建类似的东西并不是什么大问题。但是,为什么要重新发明轮子?是否有一些库/框架可以帮助解决此类问题,就像在 linux 下提供改进的命令行编辑功能的 readline 库一样?

当然,这个新的“shell”只会响应有效的、特定于域的命令,并会建议有效的参数、选项、开关...

有什么想法吗?谢谢!

最佳答案

这听起来很适合 PowerShell。它是一个完全成熟的 shell,您可以创建自定义 shell,为您的域特定命令(可以用 C# 开发)托管一组管理单元,它还允许远程执行命令。

不利的一面是,为您的特定案例实现某些东西并不是免费的,因为工作量很小。

许多 MS 服务器产品现在都有自定义的 PowerShell“shell ”,例如

交流 - http://technet.microsoft.com/en-us/library/dd297939.aspx

更新

缺点是学习一个新的 shell 以及如何自定义它,尤其是面向对象的。兔子洞在这方面很深入,但手动滚动您自己的 shell 功能本身显然非常耗时。

一些链接:

书:Windows PowerShell in Action

一般:http://www.computerperformance.co.uk/powershell/index.htm

介绍自定义命令\span-in:http://msdn.microsoft.com/en-us/magazine/cc163293.aspx

关于c# - 为特定于域的操作创建独立的控制台(shell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049892/

相关文章:

c# - 如何在将加载到 Redis 的 LUA 脚本上重用代码?

c# - 使用 struct 强制验证内置类型的优缺点

c# - NumericUpDown UpdateEditText 在输入值时导致问题

c# - 将 SQL 二进制转换为字节数组

c# - 我们是否需要处理资源以及为什么我们需要在 WCF 中

c# - 如何获取继承类的属性

c# - 在没有 Wait() 的情况下使用 TPL 处理异常

node.js - 通过 Node JS 插入时,Mongo shell 不显示集合(命令 show collections)

linux - 从 shell 与正在运行的进程通信

bash - 内联 LaTeX\input 命令